// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "SettingsTabWidget.h" #include "SettingsAudioWidget.generated.h" class USettingRowWidget; /** * L'onglet "Audio" : quatre volumes et le son en arriere-plan. * * Meme forme que USettingsGameplayWidget -- l'onglet ne stocke rien, chaque ligne * ecrit dans USurvivalUserSettings puis demande l'application immediate. La * difference tient au verbe appele : ApplyAudioSettings et non * ApplySurvivalSettings, parce que les volumes n'interessent pas le pawn et que * rediffuser aux widgets a chaque cran de curseur ne servirait a rien. * * Classe Abstract : on cree un WBP_SettingsAudio qui en herite, avec un * WBP_SettingRow par ligne, nomme exactement comme le BindWidget correspondant. */ UCLASS(Abstract) class SURVIVAL_PROJET_API USettingsAudioWidget : public USettingsTabWidget { GENERATED_BODY() public: virtual void NativeConstruct() override; virtual void RefreshFromSettings() override; virtual void ResetToDefaults() override; protected: UPROPERTY(meta = (BindWidget)) TObjectPtr MasterVolumeRow; UPROPERTY(meta = (BindWidget)) TObjectPtr MusicVolumeRow; UPROPERTY(meta = (BindWidget)) TObjectPtr EffectsVolumeRow; UPROPERTY(meta = (BindWidget)) TObjectPtr UiVolumeRow; UPROPERTY(meta = (BindWidget)) TObjectPtr BackgroundSoundRow; private: UFUNCTION() void HandleMasterVolumeChanged(int32 NewIndex); UFUNCTION() void HandleMusicVolumeChanged(int32 NewIndex); UFUNCTION() void HandleEffectsVolumeChanged(int32 NewIndex); UFUNCTION() void HandleUiVolumeChanged(int32 NewIndex); UFUNCTION() void HandleBackgroundSoundChanged(int32 NewIndex); };