Files
ProjectEleri/Source/ProjectEleriEditor/Private/Eleri/EleriDataAssetDefinitions.h

236 lines
7.5 KiB
C++

// 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<FAssetCategoryPath> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> 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<UObject> GetAssetClass() const override;
// End UAssetDefinition
};