(Feat) Add Animation Fps Charater
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Blueprint/UserWidget.h"
|
||||
#include "CustomizationOptionWidget.generated.h"
|
||||
|
||||
class UBorder;
|
||||
class UButton;
|
||||
class UImage;
|
||||
class UTextBlock;
|
||||
class UTexture2D;
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCustomizationOptionClicked, int32, OptionIndex);
|
||||
|
||||
/**
|
||||
* Une case de la grille de customisation.
|
||||
*
|
||||
* La MEME classe sert les vignettes de pieces et les pastilles de couleur :
|
||||
* dans les deux cas c'est un bouton carre qui porte un visuel et sait s'il est
|
||||
* selectionne. Deux widgets auraient eu la meme logique de selection a tenir a
|
||||
* jour en double, pour la seule difference d'afficher une texture plutot qu'un
|
||||
* aplat.
|
||||
*
|
||||
* Classe Abstract : on cree un WBP_CustomizationOption qui en herite.
|
||||
*/
|
||||
UCLASS(Abstract)
|
||||
class EMBERWILD_API UCustomizationOptionWidget : public UUserWidget
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void NativeOnInitialized() override;
|
||||
|
||||
/** Previent d'un clic du joueur, jamais d'un rafraichissement. */
|
||||
UPROPERTY(BlueprintAssignable, Category = "Customization")
|
||||
FOnCustomizationOptionClicked OnOptionClicked;
|
||||
|
||||
/**
|
||||
* Mode piece : affiche la vignette du catalogue.
|
||||
*
|
||||
* @param Icon peut etre nul -- la case retombe alors sur son numero. Une
|
||||
* option sans vignette doit rester choisissable, sinon le catalogue
|
||||
* est inutilisable tant que les trente-six textures ne sont pas
|
||||
* rendues, et on veut justement les capturer depuis cet ecran.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Category = "Customization")
|
||||
void SetupAsPart(int32 InIndex, UTexture2D* Icon);
|
||||
|
||||
/** Mode couleur : la pastille EST le visuel, aucune texture necessaire. */
|
||||
UFUNCTION(BlueprintCallable, Category = "Customization")
|
||||
void SetupAsColor(int32 InIndex, const FLinearColor& Color);
|
||||
|
||||
/** Encadre la case si elle porte le choix courant. */
|
||||
UFUNCTION(BlueprintCallable, Category = "Customization")
|
||||
void SetSelected(bool bInSelected);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "Customization")
|
||||
int32 GetOptionIndex() const { return OptionIndex; }
|
||||
|
||||
protected:
|
||||
UPROPERTY(meta = (BindWidget))
|
||||
TObjectPtr<UButton> OptionButton;
|
||||
|
||||
/** Porte la vignette en mode piece, la couleur en mode couleur. */
|
||||
UPROPERTY(meta = (BindWidget))
|
||||
TObjectPtr<UImage> OptionImage;
|
||||
|
||||
/**
|
||||
* Le numero de repli, montre uniquement quand une piece n'a pas de
|
||||
* vignette. BindWidgetOptional : un WBP qui s'en passe reste valide, il
|
||||
* affichera simplement des cases vides.
|
||||
*/
|
||||
UPROPERTY(meta = (BindWidgetOptional))
|
||||
TObjectPtr<UTextBlock> IndexText;
|
||||
|
||||
/** Le cadre de selection. Optionnel : on peut le rendre autrement. */
|
||||
UPROPERTY(meta = (BindWidgetOptional))
|
||||
TObjectPtr<UBorder> SelectionBorder;
|
||||
|
||||
/** Couleur du cadre quand la case porte le choix courant. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization")
|
||||
FLinearColor SelectedBorderColor = FLinearColor(1.f, 0.78f, 0.35f, 1.f);
|
||||
|
||||
/** Couleur du cadre au repos. Transparente par defaut : il disparait. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Customization")
|
||||
FLinearColor UnselectedBorderColor = FLinearColor(1.f, 1.f, 1.f, 0.f);
|
||||
|
||||
private:
|
||||
UFUNCTION()
|
||||
void HandleButtonClicked();
|
||||
|
||||
int32 OptionIndex = 0;
|
||||
};
|
||||
Reference in New Issue
Block a user