Files
ProjectEleri/Source/ProjectEleri/GameEventSystem/GameEventDataAsset.h
2026-07-11 10:43:52 +02:00

92 lines
2.5 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"
#include "GameEventRequirements.h"
#include "ProjectEleri/System/TimeOfDayStruct.h"
#include "StructUtils/InstancedStruct.h"
#include "GameEventDataAsset.generated.h"
class UTexture2D;
UENUM(BlueprintType)
enum class EEventStage : uint8
{
NONE,
STARTED,
COMPLETED
};
UENUM(BlueprintType)
enum class EEventRepeatType : uint8
{
NONE,
YEARLY,
MONTHLY,
WEEKLY,
DAILY,
MAX
};
USTRUCT(BlueprintType)
struct FTagValue
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FGameplayTagContainer TagContainer;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
float Value = 0.f;
};
/**
*
*/
UCLASS(BlueprintType)
class PROJECTELERI_API UGameEventDataAsset : public UDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Info", meta = (GameplayTagFilter = "GameEvents"))
FGameplayTag EventTag;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "UI")
FText EventName;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "UI")
TSoftObjectPtr<UTexture2D> EventIcon;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Info")
FTimeOfDayData StartDate;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Info")
FTimeOfDayData EventDuration;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Info")
EEventRepeatType EventRepeat;
UPROPERTY(EditAnywhere, Category = "Info", meta=(ExcludeBaseStruct, BaseStruct="/Script/ProjectEleri.GameEventRequirement"))
TArray<FInstancedStruct> Requirements;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Data")
TArray<FTagValue> TagValueArray;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Newspaper event")
bool bIsNewspaperEvent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Newspaper event", meta = (EditCondition = "bIsNewspaperEvent", EditConditionHides))
FText EventDescription;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Newspaper event", meta = (EditCondition = "bIsNewspaperEvent", EditConditionHides))
int32 AutoTriggerOnDay;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Calendar event")
bool bShowOnCalendar;
bool CanStartEvent(const UObject* ContextObj) const;
};