// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "CustomizationCategoryWidget.generated.h" class UBorder; class UButton; class UTextBlock; DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCustomizationCategoryClicked, int32, CategoryIndex); /** * Une ligne de la colonne de gauche : « Corps », « Cheveux », « Peau »... * * Elle ne sait pas ce qu'elle designe -- juste un libelle et un index, comme * USettingRowWidget ignore ce qu'il regle. C'est l'ecran qui traduit l'index en * categorie, et c'est ce qui permet de n'avoir qu'UN widget a dessiner pour les * onze entrees. */ UCLASS(Abstract) class EMBERWILD_API UCustomizationCategoryWidget : public UUserWidget { GENERATED_BODY() public: virtual void NativeOnInitialized() override; UPROPERTY(BlueprintAssignable, Category = "Customization") FOnCustomizationCategoryClicked OnCategoryClicked; UFUNCTION(BlueprintCallable, Category = "Customization") void Setup(int32 InIndex, const FText& InLabel); UFUNCTION(BlueprintCallable, Category = "Customization") void SetSelected(bool bInSelected); /** * L'index de la categorie que porte cette rangee. * * Indispensable a l'ecran : les categories vides etant sautees, le rang de * la rangee dans la colonne ne vaut PAS son index de categorie. */ UFUNCTION(BlueprintPure, Category = "Customization") int32 GetCategoryIndex() const { return CategoryIndex; } protected: UPROPERTY(meta = (BindWidget)) TObjectPtr CategoryButton; UPROPERTY(meta = (BindWidget)) TObjectPtr CategoryLabel; /** Optionnel : on peut aussi marquer la selection par la couleur du texte. */ UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr SelectionBorder; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization") FLinearColor SelectedLabelColor = FLinearColor(1.f, 0.78f, 0.35f, 1.f); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization") FLinearColor UnselectedLabelColor = FLinearColor(0.8f, 0.8f, 0.8f, 1.f); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization") FLinearColor SelectedBorderColor = FLinearColor(1.f, 1.f, 1.f, 0.12f); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization") FLinearColor UnselectedBorderColor = FLinearColor(1.f, 1.f, 1.f, 0.f); private: UFUNCTION() void HandleButtonClicked(); int32 CategoryIndex = 0; };