134 lines
3.3 KiB
C++
134 lines
3.3 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Engine/DataAsset.h"
|
|
#include "QuestDatabase.generated.h"
|
|
|
|
|
|
class UItem;
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FItemQuantity {
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
|
FName ItemID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
|
int32 Quantity = 1;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FQuest {
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest IDs")
|
|
FName QuestID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName NpcID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName NextQuestID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName PrerequisiteQuestID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FText> Responses;
|
|
|
|
//IDs of quests that each response triggers
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FName> ResponsesQuestLinks;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (Multiline = true), Category="Quest")
|
|
FText QuestMessage;
|
|
|
|
//If this is an order then how many days for completion
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 DeliverInDays;
|
|
|
|
//If prerequisite quest exists, how many days upon completion does this one trigger
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 DaysFromLastQuest;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FItemQuantity> QuestItemRequest;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FItemQuantity> QuestItemReward;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 QuestCrystalReward;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FQuestItem {
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName QuestID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 QuestAcceptDay;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 QuestCompleteDay;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
bool IsCompleted;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FName> ItemIDsSubmitted;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
int32 ResponseIndex = -1;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
bool ReadQuest;
|
|
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FNpcQuest {
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName NpcID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FName> QuestIDList;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FQuests {
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
FName NpcID;
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Quest")
|
|
TArray<FQuest> QuestList;
|
|
};
|
|
|
|
/**
|
|
*
|
|
*/
|
|
UCLASS()
|
|
class PROJECTELERI_API UQuestDatabase : public UDataAsset
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Quest")
|
|
TArray<FQuests> AllQuestsByNpc;
|
|
|
|
|
|
bool GetQuestData(FName QuestID, FQuest& quest);
|
|
TArray<FNpcQuest> SortQuestListByNpc(TArray<FQuest> questArray);
|
|
|
|
};
|