// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AssetDefinitionDefault.h" #include "EleriDataAssetDefinitions.generated.h" /** * One asset definition per data asset type of the project, all of them filed under the Eleri category. * * A definition is what tells the editor what a data asset type is called, what colour it is drawn in and * which category it belongs to. Both halves of the Content Browser read that: the Filters panel builds a * filter per definition out of it, and the Add menu files the factory behind a type by the category of * the definition registered for the class that factory makes. A type therefore only has to say that it * is an Eleri asset in one place to turn up in both. * * The engine registers these itself as the module loads, one per class, so there is nothing to do at * startup beyond declaring them. A definition also answers for the subclasses of its class, which is why * the minigame entry below is declared on the base and covers every minigame there is. */ UCLASS(Abstract) class UEleriDataAssetDefinition : public UAssetDefinitionDefault { GENERATED_BODY() public: // UAssetDefinition virtual TConstArrayView GetAssetCategories() const override; // End UAssetDefinition }; /*----------------------------------------------------------------------------- Items -----------------------------------------------------------------------------*/ /** An item: the thing a player can hold, gather, grow or craft. */ UCLASS() class UEleriItemDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** A container: a named set of items, used where an inventory has to start with something in it. */ UCLASS() class UEleriItemContainerDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /*----------------------------------------------------------------------------- Quests and dialogue -----------------------------------------------------------------------------*/ /** A quest: its steps, the conditions it can be taken under and what it hands back. */ UCLASS() class UEleriQuestDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** The quest database: the asset every quest is looked up through. */ UCLASS() class UEleriQuestDatabaseDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** Speech: the lines an NPC says, and how they are said. */ UCLASS() class UEleriSpeechDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /*----------------------------------------------------------------------------- World events and weather -----------------------------------------------------------------------------*/ /** A game event: something the world does on a day, a condition or a trigger. */ UCLASS() class UEleriGameEventDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** A weather preset: the sky, the fog and the particles one kind of weather is made of. */ UCLASS() class UEleriWeatherPresetDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /*----------------------------------------------------------------------------- Characters -----------------------------------------------------------------------------*/ /** A face expression set: the sprites each of an NPC's moods is drawn from. */ UCLASS() class UEleriFaceExpressionDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** An NPC: who they are, how they look and what they are called. */ UCLASS() class UEleriNpcDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** An NPC schedule: a day of a character, as a list of places and the times they are in them. */ UCLASS() class UEleriNpcScheduleAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /*----------------------------------------------------------------------------- Settings, animation and minigames -----------------------------------------------------------------------------*/ /** The bazar settings: what the market spawns, how often and how it pays. */ UCLASS() class UEleriBazarSettingsDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** An animation set: which flipbook an action of a character plays. */ UCLASS() class UEleriAnimationDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition }; /** A minigame: the rules and the content one minigame is set up with. Declared on the base class, so * this one entry stands in for every minigame in the project, Potion Sort included. */ UCLASS() class UEleriMinigameDataAssetDefinition : public UEleriDataAssetDefinition { GENERATED_BODY() public: // UAssetDefinition virtual FText GetAssetDisplayName() const override; virtual FLinearColor GetAssetColor() const override; virtual TSoftClassPtr GetAssetClass() const override; // End UAssetDefinition };