// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Factories/Factory.h" #include "EleriDataAssetFactories.generated.h" /** * The factories behind the data asset types the Eleri category offers, one per type. * * A factory is what puts a type into the Content Browser's Add menu, and the engine files it there by * asking the asset definition of the class it supports where that class belongs, so a factory only has * to name the class it makes. It also hands back the EAssetTypeCategories bit for the Eleri category, * which is what the older Content Browser style groups the Add menu by, so the group holds together * whichever of the two styles is in use. * * These only ever create the class they are named after. There is nothing to configure, so the factory * goes straight to creating the asset as soon as it is picked. */ UCLASS(Abstract) class UEleriDataAssetFactory : public UFactory { GENERATED_BODY() public: UEleriDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual bool ConfigureProperties() override; virtual uint32 GetMenuCategories() const override; virtual UObject* FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; // End UFactory }; /*----------------------------------------------------------------------------- Items -----------------------------------------------------------------------------*/ /** Creates a new item data asset. */ UCLASS() class UEleriItemDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriItemDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new item container. */ UCLASS() class UEleriItemContainerFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriItemContainerFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /*----------------------------------------------------------------------------- Quests and dialogue -----------------------------------------------------------------------------*/ /** Creates a new quest. */ UCLASS() class UEleriQuestDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriQuestDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new quest database. */ UCLASS() class UEleriQuestDatabaseFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriQuestDatabaseFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new speech asset. */ UCLASS() class UEleriSpeechDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriSpeechDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /*----------------------------------------------------------------------------- World events and weather -----------------------------------------------------------------------------*/ /** Creates a new game event. */ UCLASS() class UEleriGameEventDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriGameEventDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new weather preset. */ UCLASS() class UEleriWeatherPresetDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriWeatherPresetDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /*----------------------------------------------------------------------------- Characters -----------------------------------------------------------------------------*/ /** Creates a new face expression set. */ UCLASS() class UEleriFaceExpressionDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriFaceExpressionDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new NPC. */ UCLASS() class UEleriNpcDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriNpcDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new NPC schedule. */ UCLASS() class UEleriNpcScheduleAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriNpcScheduleAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /*----------------------------------------------------------------------------- Settings, animation and minigames -----------------------------------------------------------------------------*/ /** Creates a new bazar settings asset. */ UCLASS() class UEleriBazarSettingsDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriBazarSettingsDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new animation set. */ UCLASS() class UEleriAnimationDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriAnimationDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory }; /** Creates a new Potion Sort minigame. The category entry it turns up under is declared on the * minigame base class, so a minigame added later needs its own factory here but no category. */ UCLASS() class UEleriPotionSortDataAssetFactory : public UEleriDataAssetFactory { GENERATED_BODY() public: UEleriPotionSortDataAssetFactory(const FObjectInitializer& ObjectInitializer); // UFactory virtual FText GetDisplayName() const override; // End UFactory };