41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Engine/DataAsset.h"
|
|
#include "CraftingRecipeBook.generated.h"
|
|
|
|
class UCraftingRecipeDataAsset;
|
|
|
|
/**
|
|
* La liste ordonnee des recettes du jeu.
|
|
*
|
|
* Un catalogue plutot qu'un scan de l'AssetManager : le contenu est
|
|
* deterministe, rien ne se charge par surprise au runtime, et surtout l'ORDRE
|
|
* d'affichage de la grille devient une donnee de design qu'on regle a la
|
|
* souris. Un scan d'assets rendrait cet ordre dependant du nom des fichiers.
|
|
*
|
|
* Un catalogue plutot qu'une liste posee sur le composant, aussi : un etabli
|
|
* devra pointer son propre livre, et le pawn n'a pas a etre l'endroit ou vit
|
|
* la table de craft du jeu.
|
|
*/
|
|
UCLASS(BlueprintType)
|
|
class EMBERWILD_API UCraftingRecipeBook : public UPrimaryDataAsset
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** L'ordre de ce tableau est l'ordre d'affichage dans la grille de craft. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Crafting")
|
|
TArray<TObjectPtr<UCraftingRecipeDataAsset>> Recipes;
|
|
|
|
// Pas de UFUNCTION ici : UHT refuse un TObjectPtr en valeur de retour. Le
|
|
// Blueprint lit de toute facon Recipes directement, c'est une UPROPERTY.
|
|
const TArray<TObjectPtr<UCraftingRecipeDataAsset>>& GetRecipes() const { return Recipes; }
|
|
|
|
#if WITH_EDITOR
|
|
virtual EDataValidationResult IsDataValid(class FDataValidationContext& Context) const override;
|
|
#endif
|
|
};
|