// © 2025 Naked People Team. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "CommonActivatableWidget.h" #include "SettingsScreenWidget.generated.h" class UButton; class UWidgetSwitcher; class UGameplaySettingsTab; class UAudioSettingsTab; class UGraphicsSettingsTab; // Settings screen with Gameplay / Audio / Graphics tabs. Pushed onto a menu's ModalStack // (assign as SettingsWidgetClass on the main / pause menus). Apply commits + persists; // closing the screen also persists pending changes. UCLASS(Abstract) class NAKEDDESIRE_API USettingsScreenWidget : public UCommonActivatableWidget { GENERATED_BODY() protected: virtual void NativeOnActivated() override; virtual void NativeOnDeactivated() override; private: UPROPERTY(meta = (BindWidget)) TObjectPtr TabSwitcher; UPROPERTY(meta = (BindWidget)) TObjectPtr GameplayTabButton; UPROPERTY(meta = (BindWidget)) TObjectPtr AudioTabButton; UPROPERTY(meta = (BindWidget)) TObjectPtr GraphicsTabButton; UPROPERTY(meta = (BindWidget)) TObjectPtr ApplyButton; UPROPERTY(meta = (BindWidget)) TObjectPtr BackButton; UPROPERTY(meta = (BindWidget)) TObjectPtr GameplayTab; UPROPERTY(meta = (BindWidget)) TObjectPtr AudioTab; UPROPERTY(meta = (BindWidget)) TObjectPtr GraphicsTab; UFUNCTION() void ShowGameplayTab(); UFUNCTION() void ShowAudioTab(); UFUNCTION() void ShowGraphicsTab(); UFUNCTION() void OnApplyClicked(); UFUNCTION() void OnBackClicked(); void PersistSettings(); };