// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "SettingsTabWidget.generated.h" class USettingsMenuWidget; /** * Base commune a tous les onglets de reglages. * * Deux verbes, rien de plus : l'ecran parent rafraichit ou reinitialise l'onglet * visible sans jamais savoir ce qu'il contient. Ajouter un onglet ne demande * donc aucune ligne dans USettingsMenuWidget. */ UCLASS(Abstract) class EMBERWILD_API USettingsTabWidget : public UUserWidget { GENERATED_BODY() public: /** Relit les reglages et repositionne les lignes, sans rien diffuser. */ virtual void RefreshFromSettings() {} /** Remet a l'usine les seuls reglages de cet onglet, puis se rafraichit. */ virtual void ResetToDefaults() {} /** * L'ecran se presente a ses onglets a la construction. * * Pointeur explicite plutot qu'un GetTypedOuter au moment de s'en servir : * un onglet doit pouvoir demander une confirmation, et faire dependre ca de * la forme de l'arbre de widgets casserait le jour ou on l'imbrique * autrement. * * Defini dans le .cpp et non inline : TWeakObjectPtr exige un type complet * pour s'assigner, et inclure l'en-tete de l'ecran ici ferait dependre tous * les onglets de lui. */ void SetOwningMenu(USettingsMenuWidget* InMenu); protected: UPROPERTY(Transient, BlueprintReadOnly, Category = "Reglages") TWeakObjectPtr OwningMenu; };