Space Plunder
Loading...
Searching...
No Matches
QuestGameStateComponent.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
8#include "Data/QuestData.h"
11#include "Interfaces/SaveLoad.h"
12#include "QuestGameStateComponent.generated.h"
13
14class UQuestGoalComponent;
15DECLARE_LOG_CATEGORY_CLASS(LogQuestState, Display, All);
16
17
18UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent))
19class QUESTSYSTEM_API UQuestGameStateComponent : public UGameStateComponentBase, public IQuestReporter, public IQuestDataInterface
20{
21 GENERATED_BODY()
22
23public:
24 UQuestGameStateComponent();
25
26 //~~ ISaveLoad ~~//
27 virtual bool SaveGame() override;
28 virtual bool LoadGame() override;
29 //~~ ISaveLoad ~~//
30
32 virtual void UpdateAllQuestDetails();
34 virtual void UpdateAllObjectiveDetails();
36 virtual void UpdateQuestTimes();
38 virtual void RebuildObjectiveReferences();
39
40 virtual bool PlayerAdded(APlayerState* PlayerState) override;
41 virtual bool PlayerRemoved(APlayerState* PlayerState) override;
42
43 virtual bool AddQuestPlayer(UObject* QuestPlayer);
44 virtual bool RemoveQuestPlayer(UObject* QuestPlayer);
45
46 virtual FPlayerQuestStatus GetPlayerQuestStatus() const override { return PlayerQuestStatus;};
47 virtual bool GetQuestIndex(const FQuestInfo& QuestInfo, int32& Index) const override;
48 virtual bool GetQuestIndexFromID(const FUniqueID& QuestID, int32& Index) const override;
49 virtual bool GetIsQuestActive(const int32 QuestIndex) const override;
50 virtual bool GetQuest(const int32 QuestIndex, FQuestInfo& QuestInfo) const override;
51 virtual bool GetQuestID(const int32 QuestIndex, FUniqueID& QuestID) const override;
52
53
54 //~ Quest Reporter Interface ~//
55
56 virtual void AddObjectiveAmount(const FString& ObjectiveID, const int32 Amount) override;
57 virtual void AddObjectivePenaltyAmount(const FString& ObjectiveID, const int32 Amount) override;
58 virtual void AddObjectiveUniqueAmount(const FUniqueID& ObjectiveID, const int32 Amount) override;
59 virtual void AddObjectivePenaltyUniqueAmount(const FUniqueID& ObjectiveID, const int32 Amount) override;
60
61
62 virtual int32 RegisterQuestGoal(UActorComponent* QuestGoalComponentRef) override;
63 // virtual void SetPlayerQuestStatus(const FPlayerQuestStatus& QuestStatus) override;
64 virtual void QuestGoalFailed(UActorComponent* QuestGoalComponentRef) override;
65 virtual void AddCredits(const int32 Amount) override;
66 virtual void AddExperience(const int32 Amount) override;
67 virtual bool AddQuest(AActor* Caller, const FString& QuestID, const int32 ReporterID) override;
68 virtual void QuestFailed(UActorComponent* QuestGoalComponentRef, const FUniqueID& QuestID) override;
69
70 virtual void DebugFinishQuest(const struct FQuestInfo& QuestInfo, const EQuestStatus Outcome) override;
71 virtual void DebugRemoveQuest(const struct FQuestInfo& QuestInfo) override;
72
73 virtual void PlaceWaypointsOnActors(APlayerController* PlayerController, const FUniqueID& QuestID) override;
74 virtual void RemoveWaypointsOnActors(APlayerController* PlayerController, const FUniqueID& QuestID) override;
75 virtual void RemoveObjectiveWaypointsOnActors(APlayerController* PlayerController, const FString& ObjectiveID) override;
76 //~ Quest Reporter Interface ~//
77
78
79 virtual bool CreateQuest();
80 virtual bool CreateQuestObjective();
81
82
83// virtual void AddQuestWaypoint(AActor* QuestActor, APlayerState* LocalPlayer);
84
85 UFUNCTION(BlueprintCallable, Category="Quest State")
86 bool SaveQuests(const int32 UserIndex);
87 UFUNCTION(BlueprintCallable, Category="Quest State")
88 bool LoadQuests();
89 UFUNCTION(BlueprintNativeEvent, Category="Quest State")
90 void OnQuestsLoaded();
91
92 void CompleteQuest(FQuestOutcome& QuestOutcome);
93
94 UFUNCTION(BlueprintImplementableEvent, Category="Quest State")
95 void OnQuestComplete(const FQuestOutcome& Outcome);
96
97protected:
98 virtual void BeginPlay() override;
99// virtual void OnlineMatchStateUpdated(const FMatchState& State) override;
100// virtual void StartFirstQuest();
101
102
103 // virtual void RemoveWaypointsOfQuest(APlayerController* PlayerController, );
104 virtual void RemoveAllWaypoints(APlayerController* PlayerController) override;
105 virtual void RemoveAllWaypoints();
106
107 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Game State")
108 UDataTable* QuestDataTable = nullptr;
109 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Game State")
110 UDataTable* ObjectivesDataTable = nullptr;
111
112 UFUNCTION(Server, Reliable, BlueprintCallable, Category="Game State")
113 virtual void Server_UpdatePlayerQuests();
114
115 UFUNCTION()
116 void OnRep_PlayerQuestStatus();
117 UPROPERTY(ReplicatedUsing=OnRep_PlayerQuestStatus, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
118 FPlayerQuestStatus PlayerQuestStatus;
119 UFUNCTION()
120 void OnRep_CompleteQuestOutcome();
121 UPROPERTY(ReplicatedUsing=OnRep_CompleteQuestOutcome, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
122 FQuestOutcome CompleteQuestOutcome;
123 UFUNCTION()
124 void OnRep_NewQuestIndex();
125 UPROPERTY(ReplicatedUsing=OnRep_NewQuestIndex, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
126 int32 NewQuestIndex = -1;
127 UFUNCTION()
128 void OnRep_CreditsAdded();
129 UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
130 int32 CreditsAdded = 0;
131 UPROPERTY(ReplicatedUsing=OnRep_CreditsAdded, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
132 int32 CreditsDeltaID = 0;
133
134 UFUNCTION()
135 void OnRep_ExperienceAdded();
136 UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
137 int32 ExperienceAdded = 0;
138 UPROPERTY(ReplicatedUsing=OnRep_ExperienceAdded, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
139 int32 ExperienceDeltaID = 0;
140
141 UFUNCTION()
142 void OnRep_ObjectiveComplete();
143 UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
144 FString ObjectiveCompleteID = "";
145 UPROPERTY(ReplicatedUsing=OnRep_ObjectiveComplete, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
146 int32 ObjectiveCompleteDeltaID = 0;
147 UFUNCTION()
148 void OnRep_ObjectiveFailed();
149 UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
150 FString ObjectiveFailedID = "";
151 UPROPERTY(ReplicatedUsing=OnRep_ObjectiveFailed, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|General")
152 int32 ObjectiveFailedDeltaID = 0;
153
154
155
156 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Quest State|Save")
157 FString SaveSlotName = "QuestSystem";
158 UPROPERTY(VisibleAnywhere, Category="Quest State|Save")
159 class UQuestSaveGame* QuestSaveGameObject = nullptr;
160
161 UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category="Quest State|Goals")
162 TArray<UQuestGoalComponent*> AllQuestGoals;
163 // UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Game State")
164 // UDataTable* FactionRelationshipDataTable = nullptr;
165
166private:
167 UPROPERTY(EditDefaultsOnly, Category="Quest State|Waypoints")
168 TSubclassOf<AActor> WaypointActorClass;
169
170 bool bLoadQuests = false;
171
172
173 UPROPERTY(Replicated)
174 TArray<class UObject*> PlayerComponents;
175
176 TArray<UQuestGoalComponent*> GetAllQuestGoalsWithQuestID(const FString& QuestID);
177 TArray<UQuestGoalComponent*> GetAllQuestGoalsWithObjectiveID(const FString& ObjectiveID);
178//
179// FTimerHandle StartQuestDelayTimerHandle;
180
181};
182
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
EQuestStatus
Definition QuestData.h:57
DECLARE_LOG_CATEGORY_CLASS(LogQuestState, Display, All)
Definition QuestDataInterface.h:20
virtual bool GetQuestID(const int32 QuestIndex, FUniqueID &QuestID) const =0
virtual void PlaceWaypointsOnActors(APlayerController *PlayerController, const FUniqueID &QuestID)=0
virtual void RemoveWaypointsOnActors(APlayerController *PlayerController, const FUniqueID &QuestID)=0
virtual bool GetQuestIndex(const FQuestInfo &QuestInfo, int32 &Index) const =0
virtual bool GetQuestIndexFromID(const FUniqueID &QuestID, int32 &Index) const =0
virtual bool GetIsQuestActive(const int32 QuestIndex) const =0
virtual void RemoveObjectiveWaypointsOnActors(APlayerController *PlayerController, const FString &ObjectiveID)=0
virtual bool GetQuest(const int32 QuestIndex, FQuestInfo &QuestInfo) const =0
Definition QuestReporter.h:23
virtual void AddObjectiveUniqueAmount(const FUniqueID &ObjectiveID, const int32 Amount)=0
virtual void AddCredits(const int32 Amount)=0
virtual void AddObjectiveAmount(const FString &ObjectiveID, const int32 Amount)=0
virtual int32 RegisterQuestGoal(UActorComponent *QuestGoalComponentRef)=0
virtual void QuestGoalFailed(UActorComponent *QuestGoalComponentRef)=0
virtual void DebugRemoveQuest(const struct FQuestInfo &QuestInfo)=0
virtual void QuestFailed(UActorComponent *QuestGoalComponentRef, const FUniqueID &QuestID)=0
virtual bool AddQuest(AActor *Caller, const FString &QuestID, const int32 ReporterID)=0
virtual void AddExperience(const int32 Amount)=0
virtual void AddObjectivePenaltyUniqueAmount(const FUniqueID &ObjectiveID, const int32 Amount)=0
virtual void AddObjectivePenaltyAmount(const FString &ObjectiveID, const int32 Amount)=0
virtual void DebugFinishQuest(const struct FQuestInfo &QuestInfo, const EQuestStatus Outcome)=0
Definition QuestSystem.Build.cs:6
Definition QuestSaveGame.h:12
Definition QuestData.h:1117
Definition QuestData.h:798
Definition QuestData.h:1084
Definition BaseData.h:253