Title Manager  1.0.0
Keeps track of the proficiency level of each tool and the experience level of the tool's category.
TitleManagerComponent.h
1 
6 #pragma once
7 #include "TitleManagerDatabase.h"
8 #include "ExperienceCategoryValue.h"
9 #include <Components/ActorComponent.h>
10 #include "TitleManagerComponent.generated.h"
11 
16 USTRUCT(BlueprintType)
17 struct TITLEMANAGER_API FTitleManagerSerializeData
18 {
19  GENERATED_BODY()
20 
21  UPROPERTY()
22  TMap<FString, FExperienceCategoryValue> ExperienceCategoryValue;
23 };
24 
29 UCLASS(Blueprintable, BlueprintType, ClassGroup = TitleManager, meta = (BlueprintSpawnableComponent))
30 class TITLEMANAGER_API UTitleManagerComponent : public UActorComponent
31 {
32  GENERATED_BODY()
33 
34 public:
35  explicit UTitleManagerComponent(const FObjectInitializer& objectInitializer);
36  virtual ~UTitleManagerComponent() override = default;
37 
43  UFUNCTION(BlueprintCallable, Category = "TitleManager")
44  bool Load(const FTitleManagerSerializeData& titleManagerSerializeData);
45 
51  UFUNCTION(BlueprintCallable, Category = "TitleManager")
52  FTitleManagerSerializeData Save() const;
53 
60  UFUNCTION(BlueprintCallable, Category = "TitleManager|Experience")
61  int32 GetExperience(const FString& categoryName);
62 
70  UFUNCTION(BlueprintCallable, Category = "TitleManager|Experience")
71  int32 SetExperience(const FString& categoryName, int32 experience);
72 
80  UFUNCTION(BlueprintCallable, Category = "TitleManager|Experience")
81  int32 AddExperience(const FString& categoryName, const int32 experience = 1);
82 
89  UFUNCTION(BlueprintCallable, Category = "TitleManager|Experience")
90  float GetExperienceRatio(const FString& categoryName);
91 
99  UFUNCTION(BlueprintCallable, Category = "TitleManager|Proficiency")
100  int32 GetProficiency(const FString& categoryName, const FString& itemName);
101 
110  UFUNCTION(BlueprintCallable, Category = "TitleManager|Proficiency")
111  int32 SetProficiency(const FString& categoryName, const FString& itemName, int32 proficiency);
112 
121  UFUNCTION(BlueprintCallable, Category = "TitleManager|Proficiency")
122  int32 AddProficiency(const FString& categoryName, const FString& itemName, const int32 proficiency = 1);
123 
131  UFUNCTION(BlueprintCallable, Category = "TitleManager|Proficiency")
132  float GetProficiencyRatio(const FString& categoryName, const FString& itemName);
133 
141  UFUNCTION(BlueprintCallable, Category = "TitleManager|Quantity")
142  uint8 GetQuantity(const FString& categoryName, const FString& itemName);
143 
151  UFUNCTION(BlueprintCallable, Category = "TitleManager|Quantity")
152  void SetQuantity(const FString& categoryName, const FString& itemName, const uint8 quantity);
153 
162  UFUNCTION(BlueprintCallable, Category = "TitleManager|Quantity")
163  uint8 AddQuantity(const FString& categoryName, const FString& itemName, const int32 quantity = 1);
164 
170  UFUNCTION(BlueprintCallable, Category = "TitleManager")
171  FString FindMaxExperienceTitle() const;
172 
179  UFUNCTION(BlueprintCallable, Category = "TitleManager")
180  FString FindCategoryTitle(const FString& categoryName) const;
181 
182 public:
189  const FExperienceCategoryData* FindExperienceCategoryData(const FString& categoryName) const;
190 
196  const UTitleManagerDatabase* GetTitleManagerDatabase() const noexcept;
197 
203  const TMap<FString, FExperienceCategoryValue>& GetExperienceCategoryValue() const noexcept;
204 
205 public:
206  virtual void InitializeComponent() override;
207 
208 private:
209  bool InitializeExperienceCategoryValue();
210 
211 protected:
216  UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "TitleManager")
217  TObjectPtr<UTitleManagerDatabase> TitleManagerDatabase;
218 
223  UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = "TitleManager")
224  TMap<FString, FExperienceCategoryValue> ExperienceCategoryValue;
225 };
Definition: TitleManager.Build.cs:9
Definition: TitleManagerComponent.h:31
Definition: TitleManagerDatabase.h:16
Definition: ExperienceCategoryData.h:17
Definition: ExperienceCategoryValue.h:17
Definition: TitleManagerComponent.h:18