LEAP Documentation 40220
Documentation for the LEAP project
CosmeticsManager.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Runtime/Json/Public/Dom/JsonObject.h"
7#include "CosmeticAssetBase.h"
9#include "Components/ActorComponent.h"
10#include "PlayerStructs.h"
11#include "CosmeticsManager.generated.h"
12
15class UDataTable;
16class UWeaponInstance;
17class UAfflictionInstance;
20
21UENUM(BlueprintType)
22enum class EEquipType : uint8
23{
24 Cosmetic = 0,
25 Weapon = 1,
26 Perk = 2,
27};
28
29USTRUCT(BlueprintType)
31{
32 GENERATED_USTRUCT_BODY()
34 FEquipItem(const FString& NewShortCode, bool bMarkDirty) : ShortCode(NewShortCode), bDirty(bMarkDirty) {}
35
36 bool UpdateShortCode(const FString& NewShortCode, bool bMarkDirty = true)
37 {
38 if (NewShortCode == ShortCode)
39 {
40 return false;
41 }
42
43 ShortCode = NewShortCode;
44
45 if (bMarkDirty)
46 {
47 bDirty = bMarkDirty;
48 }
49
50 return true;
51 }
52
53 UPROPERTY(BlueprintReadOnly)
54 FString ShortCode = "";
55 bool bDirty = false;
56};
57
58USTRUCT(BlueprintType)
60{
61 GENERATED_USTRUCT_BODY()
63
64 bool GetEquipItem(const FString& Key, FEquipItem& FoundItem)
65 {
66 if (!WeaponEquips.Contains(Key))
67 {
68 return false;
69 }
70
71 FoundItem = WeaponEquips[Key];
72 return true;
73 }
74
75 bool GetEquipShortCode(const FString& Key, FString& FoundShortCode) const
76 {
77 if (!WeaponEquips.Contains(Key))
78 {
79 return false;
80 }
81
82 FoundShortCode = WeaponEquips[Key].ShortCode;
83 return true;
84 }
85
86 bool UpdateEquipItem(const FString& Key, const FString& ShortCode,bool bMarkDirty = true)
87 {
88 if (!WeaponEquips.Contains(Key))
89 {
90 WeaponEquips.Add(Key, FEquipItem(ShortCode, bMarkDirty));
91 return true;
92 }
93 else
94 {
95 return WeaponEquips[Key].UpdateShortCode(ShortCode, bMarkDirty);
96 }
97 }
98
99 UPROPERTY(BlueprintReadOnly)
100 TMap<FString, FEquipItem> WeaponEquips = TMap<FString, FEquipItem>();
101};
102
103USTRUCT(BlueprintType)
105{
106 GENERATED_USTRUCT_BODY()
108 {
109 for (uint8 i = 0; i <= (uint8)ECosmeticType::Perk; i++)
110 {
111 EquipsTypes.Add((ECosmeticType)i, FEquipsList());
112 }
113 }
114
115 bool UpdateShortCode(ECosmeticType Type,const FString& Key,const FString& ShortCode, bool bMarkDirty = true)
116 {
117 if (!EquipsTypes.Contains(Type))
118 {
119 EquipsTypes.Add(Type, FEquipsList());
120 }
121
122 return EquipsTypes[Type].UpdateEquipItem(Key, ShortCode, bMarkDirty);
123 }
124
125 bool GetShortCode(ECosmeticType Type, const FString& Key, FString& FoundKey) const
126 {
127 if (!EquipsTypes.Contains(Type))
128 {
129 return false;
130 }
131
132 return EquipsTypes[Type].GetEquipShortCode(Key, FoundKey);
133 }
134
135 bool GetEquipsList(ECosmeticType Type,FEquipsList& FoundEquipsList)
136 {
137 if (!EquipsTypes.Contains(Type))
138 {
139 return false;
140 }
141
142 FoundEquipsList = EquipsTypes[Type];
143 return true;
144 }
145
146 UPROPERTY(BlueprintReadOnly)
147 TMap<ECosmeticType, FEquipsList> EquipsTypes = TMap<ECosmeticType, FEquipsList>();
148 bool bLoaded = false;
149};
150
151UENUM()
152enum class EColourSlot :uint8
153{
154 None = 0,
155};
156
157USTRUCT(BlueprintType)
159{
160 GENERATED_BODY()
161
162public:
164 UPROPERTY(BlueprintReadWrite)
165 TSubclassOf<AProjectXCharacter> FavouritedClass = NULL;
166 UPROPERTY(BlueprintReadWrite)
167 TSubclassOf<UWeaponInstance> FavouriteWeapon = NULL;
168 UPROPERTY(BlueprintReadWrite)
169 FString BannerID = "";
170 UPROPERTY(BlueprintReadWrite)
171 FString PlayerSkinID = "";
172 UPROPERTY(BlueprintReadWrite)
173 FString WeaponSkinID = "";
174 bool bDirty = true;
175
176 bool operator==(const FSharedPlayerInfo& Other) const;
177};
178
179USTRUCT(BlueprintType)
181{
182 GENERATED_BODY()
183public:
185
186 FCosmeticDeals(int Year,int Month,int Day,int Hour, int Minutes,int HourDuration)
187 {
188 DealEndTime = FDateTime(Year, Month, Day, Hour, Minutes);
189 Items = TMap<FString, int>();
190 }
191
192 UPROPERTY(BlueprintReadOnly)
193 FDateTime DealEndTime = FDateTime::MinValue();
194 UPROPERTY(BlueprintReadOnly)
195 TMap<FString,int> Items = TMap<FString, int>();
196};
197
198USTRUCT(BlueprintType)
200{
201 GENERATED_BODY()
202
204 FCosmeticStoreItem(ECosmeticType TypeIn, int32 CostIn, ERarity RarityIn,const FString& WeaponNameIn) : Type(TypeIn), Cost(CostIn), Rarity(RarityIn) {}
205
206 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Struct")
208 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Struct")
209 int Cost = 0;
210 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Struct")
212 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Struct")
213 int Amount = 0;
214
215 bool bDirty = false;
216};
217
218USTRUCT(BlueprintType)
220{
221 GENERATED_USTRUCT_BODY()
222
223public:
224 UPROPERTY(BlueprintReadWrite)
225 FString GraffitiID = "";
226 UPROPERTY(BlueprintReadWrite)
227 FString AvatarBorderID = "";
228 UPROPERTY(BlueprintReadWrite)
229 FString BannerID = "";
230 UPROPERTY(BlueprintReadWrite)
231 TArray<FString> TauntIDs;
232
233 bool GetCosmeticID(FString& Output, const ECosmeticType Type, uint8 Slot = -1) const;
234 void UpdateCosmeticID(const ECosmeticType Type, const FString& CosmeticID, uint8 Slot = -1);
235};
236
237USTRUCT(BlueprintType)
239{
240 GENERATED_USTRUCT_BODY()
241
243 FCosmeticReward(const FString& IDIn, int CurrencyConversionIn) : ID(IDIn), CurrencyConversion(CurrencyConversionIn) {}
244
245
246 UPROPERTY(BlueprintReadWrite)
247 FString ID = "";
248 UPROPERTY(BlueprintReadOnly)
249 int CurrencyConversion = 0;
250};
251
252USTRUCT(BlueprintType)
254{
255 GENERATED_USTRUCT_BODY()
257
258 UPROPERTY(BlueprintReadWrite)
259 TArray<FCosmeticReward> ItemRewards;
260 UPROPERTY(BlueprintReadWrite)
261 int CurrencyReward = -1;
262};
263
264
265USTRUCT(BlueprintType)
266struct FItem
267{
268 GENERATED_USTRUCT_BODY()
269
271 FItem(ECosmeticType ItemType, const FString& ItemClassID,const FText& ItemDisplayName,UCosmeticAssetBase* ItemAsset,ERarity NewRarity,int OwnedAmount,bool bIsStackable) : Type(ItemType), ClassID(ItemClassID),DisplayName(ItemDisplayName),Asset(ItemAsset),Rarity(NewRarity),Amount(OwnedAmount),bStackable(bIsStackable) {}
272
273public:
274 UPROPERTY(BlueprintReadWrite)
276 UPROPERTY(BlueprintReadWrite)
277 FString ClassID = "";
278 UPROPERTY(BlueprintReadWrite)
279 FText DisplayName;
280 UPROPERTY(BlueprintReadWrite)
281 UCosmeticAssetBase* Asset = NULL;
282 UPROPERTY(BlueprintReadWrite)
284 UPROPERTY(BlueprintReadWrite)
285 int Amount = 0;
286 UPROPERTY(BlueprintReadWrite)
287 int Level = 0;
288 UPROPERTY(BlueprintReadWrite)
289 bool bStackable = false;
290 TSet<FString> EquipKeys;
291 bool bDirty = false;
292};
293
294USTRUCT(BlueprintType)
296{
297 GENERATED_USTRUCT_BODY()
298public:
299 UPROPERTY(BlueprintReadWrite)
300 float Damage = 0.0f;
301 UPROPERTY(BlueprintReadWrite)
302 float ConeSpread= 0.0f;
303 UPROPERTY(BlueprintReadWrite)
304 float RateOfFire = 0.0f;
305 UPROPERTY(BlueprintReadWrite)
306 float MagSize = 0.0f;
307};
308
309USTRUCT(BlueprintType)
311{
312 GENERATED_USTRUCT_BODY()
313public:
314 UPROPERTY(BlueprintReadWrite)
315 FString PlayerID = "";
316 UPROPERTY(BlueprintReadWrite)
317 FString EquipID = "";
318};
319
320
321DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLoadOutLoadedSignature, bool, bSucess);
322DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FPurchaseSignature, bool, bSucess, const FString&, ItemID);
323DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FEquippedCosmeticsLoadedSignature,const FString&, PlayerID);
324DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FCosmeticRewardSignature, const TArray<FCosmeticReward>&, ItemIDs,int, Currency, bool, bFoundRewards);
325DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCosmeticsLoadedSignature);
326DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FMenuConfigsLoadedSignature, const FSharedPlayerInfo&, PlayerInfo, const FString&, PlayerID);
327DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FGeneralCosmeticsChangedSignature, const FGeneralCosmetics&, GeneralCosmetics, const FString&, PlayerID);
328DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FChallengeRewardSignature, const FString&, ChallengeID, int32, Currency, int32, Experience, const TArray<FCosmeticReward>&, ItemList);
329DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FPerksUpdatedSignature, TSubclassOf<AProjectXCharacter>, CharacterClass, TSubclassOf<UWeaponInstance>, WeaponClass, uint8, SlotID);
330DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FEquipItemUpdatedSignature,ECosmeticType, Type, const FString&, ShortCode, const FString&, EquipKey);
331DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FPlayerEquipItemUpdatedSignature,const FString&, PlayerID, ECosmeticType, Type, const FString&, ShortCode, const FString&, EquipKey);
332
333const TMap<FString, int> Months = { {"Jan",1}, {"Feb",2}, {"Mar",3}, {"Apr",4}, {"May",5}, {"Jun",6}, {"Jul",7}, {"Aug",8}, {"Sep",9}, {"Oct",10}, {"Nov",11}, {"Dec",12} };
334
335UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
336class PROJECTX_API UCosmeticsManager : public UActorComponent
337{
338 GENERATED_BODY()
339
340public:
341 UCosmeticsManager();
342 void Init(UProjectXGameInstance* GameInstance);
343 UFUNCTION(BlueprintPure, Category = PlayerProgressionManager, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
344 static UCosmeticsManager* GetCosmeticManager(const UObject* WorldContextObject);
345 UFUNCTION()
346 void EquipDefaults(bool bPostLoadEquip);
347 UFUNCTION()
348 virtual void OnNakamaConnected();
349 UFUNCTION(BlueprintPure)
350 const TMap<FString, FItem>& GetItemList() const { return InventoryItemList; }
351 UFUNCTION(BlueprintPure)
352 const FItem GetItemByShortCode(const FString& Shortcode) const { return InventoryItemList.Contains(Shortcode) ? InventoryItemList[Shortcode] : FItem(); }
353 UFUNCTION(BlueprintPure)
354 const bool DoesItemExist(const FString& Shortcode) const { return InventoryItemList.Contains(Shortcode); }
355 UFUNCTION(BlueprintPure)
356 const FEquips& GetEquips() const {return Equips;}
357 UFUNCTION(BlueprintPure)
358 void GetPlayerEquipItem(const TArray<FPlayerEquipRequest>& PlayerEquipRequests);
359 UFUNCTION(BlueprintPure)
360 const FString& GetLocalPlayerID() const { return CachedLocalPlayerID; }
361 UFUNCTION(BlueprintCallable)
362 const FCosmeticDeals& GetDailyDeal() const { return DailyDeals; }
363 UFUNCTION(BlueprintCallable)
364 const FCosmeticDeals& GetFeatureDeal() const { return FeatureDeals; }
365 UFUNCTION(BlueprintCallable)
366 const FBestWeaponInfos& GetBestWeaponInfos() const {return BestweaponInfos;}
367 UFUNCTION(BlueprintCallable, BlueprintPure)
368 bool GetEarnedRewards(FCosmeticRewards& Rewards) const;
369 UFUNCTION(BlueprintCallable)
370 void ClearEarnedRewards() { NewEarnedRewards = FCosmeticRewards(); }
371 UFUNCTION(BlueprintCallable)
372 bool GetPlayerInfo(const FString& PlayerID, FSharedPlayerInfo& FoundPlayerInfo) const;
373 UFUNCTION(BlueprintCallable)
374 void UpdateLocalPlayerInfo(const FSharedPlayerInfo& UpdatedPlayerInfo);
375 UFUNCTION(BlueprintCallable)
376 void UpdateLocalPlayerInfoFavouriteClass(TSubclassOf<AProjectXCharacter> CharacterClass);
377 UFUNCTION(BlueprintCallable)
378 void SaveLocalPlayerInfo();
379 UFUNCTION(BlueprintCallable)
380 void LoadSharedPlayerInfo(const TArray<FString>& PlayerIDs);
381 UFUNCTION(BlueprintCallable)
382 void LoadEarnedRewards(const FString& PlayerID) const;
383 UFUNCTION(BlueprintCallable)
384 void LoadAllCosmeticData(const FString& PlayerID);
385 UFUNCTION(BlueprintCallable)
386 void SavePlayerInventory();
387 UFUNCTION(BlueprintCallable)
388 bool PurchaseItemRequest(const FString& ItemID);
389 UFUNCTION(BlueprintCallable)
390 bool IsItemUnlocked(const FString& ItemID) const;
391 UFUNCTION(BlueprintCallable)
392 TSubclassOf<AProjectXCharacter> GetCharacterClassFromID(const FString& PlayerID) const;
393 UFUNCTION(BlueprintCallable)
394 void EquipItem(const FString& ShortCode, const FString& EquipCode);
395 UFUNCTION(BlueprintCallable)
396 void AddItemToUnlockList(const FString& ShortCode, bool bMaxOne);
397 UFUNCTION(BlueprintCallable)
398 void OnMatchComplete();
399 void LoadInventoryFromItemList(const TArray<FString>& ShortCodes);
400 void LoadPlayerInventory(std::string cursor = "");
401 void UpdateSessionID(const FString& PlayerID,const FString& SessionID, const FString& ShortCode);
402 void LoadStore();
403 void ClearCosmeticData();
404 void GetRandomCosmetic(FString& FoundID, const TArray<ECosmeticType>& IgnoredTypes, FItem& FoundCosmetic);
405 const FString& GetShortCodeFromList(uint16 Number) const { return ShortCodesList.IsValidIndex(Number) ? ShortCodesList[Number] : FallBackCode; }
406 const FString& GetEquipCodeFromList(uint16 Number) const { return EquipCodesList.IsValidIndex(Number) ? EquipCodesList[Number] : FallBackCode; }
407 uint16 GetEquipCodeNumber(const FString& EquipCode) const;
408 uint16 GetShortCodeNumber(const FString& ShortCode) const;
409 bool CanLockCosmeticToThisSession(const FString& PlayerID,const FString& ShortCode, const FString& SessionId) const;
410 const TMap<FString, FString>& GetSessionLockedCosmetics(const FString& PlayerID) const;
411 UFUNCTION(BlueprintPure)
412 static FString BuildCosmeticKeyFromClass(ECosmeticType Type, TSubclassOf<AProjectXCharacter> CharacterClass, TSubclassOf<UWeaponInstance> WeaponClass, uint8 SlotID = 0, EPerkType PerkType = EPerkType::NONE);
413 UFUNCTION(BlueprintPure)
414 static FString BuildCosmeticKeyFromString(ECosmeticType Type, const FString& ClassID, const FString& WeaponClassID, uint8 SlotID = 0, EPerkType PerkType = EPerkType::NONE);
415 static void ParseCosmeticKey(ECosmeticType Type, const FString& EquipKey, FString& ClassID, FString& WeaponClassID, uint8& SlotID, EPerkType& PerkType);
416 UFUNCTION(BlueprintPure)
417 static bool GetEquippedItem(UPARAM(ref) const FEquips& Equips, ECosmeticType Type, UPARAM(ref) const FString& Key, FString& FoundItem);
418 UFUNCTION(BlueprintPure)
419 TSubclassOf<UWeaponInstance> GetEquippedWeaponInSlot(EEquipSlot Slot, TSubclassOf<AProjectXCharacter> CharacterClass, AProjectXPlayerState* const PlayerState);
420 static void NakamaDateParser(const FString& DateIn, FDateTime& DateOut);
421 static FCosmeticTable* FindRowByShortCode(const FString& ShortCode, UDataTable* Table);
422
423 UPROPERTY(BlueprintAssignable)
424 FPurchaseSignature PurchaseResponseEvent;
425 UPROPERTY(BlueprintAssignable)
426 FCosmeticRewardSignature OnNewRewardsEarned;
427 UPROPERTY(BlueprintAssignable)
428 FMenuConfigsLoadedSignature OnSharedPlayerInfoLoaded;
429 UPROPERTY(BlueprintAssignable)
430 FGeneralCosmeticsChangedSignature OnGeneralCosmeticsChangedEvent;
431 UPROPERTY(BlueprintAssignable)
432 FChallengeRewardSignature OnChallengeRewardsReceived;
433 UPROPERTY(BlueprintAssignable)
434 FLoadOutLoadedSignature OnPlayerInventoryLoaded;
435 UPROPERTY(BlueprintAssignable)
436 FCosmeticsLoadedSignature OnItemsInitialized;
437 UPROPERTY(BlueprintAssignable)
438 FCosmeticsLoadedSignature OnStoreLoaded;
439 UPROPERTY(BlueprintAssignable)
440 FEquipItemUpdatedSignature OnItemEquipped;
441 UPROPERTY(BlueprintAssignable)
442 FPlayerEquipItemUpdatedSignature OnOtherUserEquipsUpdated;
443
444 TMap<FString, FSharedPlayerInfo> PlayerInfoList = TMap<FString, FSharedPlayerInfo>();
445 TMap<ERarity, uint8> RarityWeights = TMap<ERarity, uint8>();
446 FCosmeticRewards NewEarnedRewards = FCosmeticRewards();
447 TMap<FString, FItem> InventoryItemList;
448 FCosmeticDeals DailyDeals = FCosmeticDeals();
449 FCosmeticDeals FeatureDeals = FCosmeticDeals();
450 FEquips Equips = FEquips();
451 FBestWeaponInfos BestweaponInfos = FBestWeaponInfos();
452 TMap<ECosmeticCategory, TArray<ECosmeticType>> CosmeticTypes = TMap<ECosmeticCategory, TArray<ECosmeticType>>();
453 TMap<FString, TMap<FString,FString>> SessionLockedCosmetics = TMap<FString, TMap<FString, FString>>();
454 TMap<FString, FEquips> UserEquips = TMap<FString, FEquips>();
455
456protected:
457 void InitializeItems();
458 void InitializeEquips();
459 void InitializeRarityWeights();
460 void UpdateBestWeaponStat(UWeaponInstance* const Weapon);
461 void PerkTableToInventory(UDataTable* const Table, TSubclassOf<AProjectXCharacter> Class,TSubclassOf<UWeaponInstance> WeaponClas, EPerkType Type);
462 void PurchaseItemResponse(bool bSuccess,const FString& ItemID);
463 void LoadStoreResponse(TSharedPtr<FJsonObject> StoreJson);
464 void LoadPlayerInventoryResponse(std::vector<NAKAMA_NAMESPACE::NStorageObject> Inventory);
465 void UnpackInventory(std::vector<NAKAMA_NAMESPACE::NStorageObject> Inventory);
466 void RefreshFavouriteClassCosmetics();
467
468 UFUNCTION(BlueprintCallable,BlueprintPure)
469 static UDataTable* GetPerksList(UDataTable* const PerksTable, TSubclassOf<AProjectXCharacter> CharacterClass, TSubclassOf<UWeaponInstance> WeaponInstanceClass, EPerkType Type);
470
471 FString CachedLocalPlayerID = "";
472 bool bUnlocksInitialized = false;
473 bool bLoadoutsLoaded = false;
474 bool bInventoryInitialized = false;
475 FString FallBackCode = "";
476 TArray<FString> ShortCodesList;
477 TArray<FString> EquipCodesList;
478 TWeakObjectPtr<UProjectXGameInstance> GameInstance;
479 TMap<FString, FString> DefaultFoundLockedCosmetics = TMap<FString, FString>();
480public:
481 UFUNCTION(BlueprintCallable)
482 static UDataTable* const GetDataTableByType(ECosmeticType Type, UObject* WorldContextObject);
483};
EPerkType
Definition: CosmeticAssetBase.h:61
ERarity
Definition: CosmeticAssetBase.h:95
ECosmeticType
Definition: CosmeticAssetBase.h:21
const TMap< FString, int > Months
Definition: CosmeticsManager.h:333
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FCosmeticRewardSignature, const TArray< FCosmeticReward > &, ItemIDs, int, Currency, bool, bFoundRewards)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCosmeticsLoadedSignature)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLoadOutLoadedSignature, bool, bSucess)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FPurchaseSignature, bool, bSucess, const FString &, ItemID)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FChallengeRewardSignature, const FString &, ChallengeID, int32, Currency, int32, Experience, const TArray< FCosmeticReward > &, ItemList)
EEquipType
Definition: CosmeticsManager.h:23
EColourSlot
Definition: CosmeticsManager.h:153
EEquipSlot
Definition: PlayerStructs.h:25
Definition: ProjectXCharacter.h:128
Definition: ProjectXPlayerState.h:238
uint16 Level
Definition: ProjectXPlayerState.h:714
TWeakObjectPtr< ADecalActor > Graffiti
Definition: ProjectXPlayerState.h:742
int32 Currency
Definition: ProjectXPlayerState.h:779
Definition: CosmeticAssetBase.h:106
Definition: ProjectXGameInstance.h:507
Definition: WeaponInstance.h:220
Definition: CosmeticsManager.h:296
Definition: CosmeticsManager.h:181
FCosmeticDeals(int Year, int Month, int Day, int Hour, int Minutes, int HourDuration)
Definition: CosmeticsManager.h:186
FCosmeticDeals()
Definition: CosmeticsManager.h:184
Definition: CosmeticsManager.h:239
FCosmeticReward(const FString &IDIn, int CurrencyConversionIn)
Definition: CosmeticsManager.h:243
Definition: CosmeticsManager.h:254
Definition: CosmeticsManager.h:200
FCosmeticStoreItem(ECosmeticType TypeIn, int32 CostIn, ERarity RarityIn, const FString &WeaponNameIn)
Definition: CosmeticsManager.h:204
Definition: CosmeticAssetBase.h:318
Definition: CosmeticsManager.h:31
FEquipItem(const FString &NewShortCode, bool bMarkDirty)
Definition: CosmeticsManager.h:34
bool UpdateShortCode(const FString &NewShortCode, bool bMarkDirty=true)
Definition: CosmeticsManager.h:36
Definition: CosmeticsManager.h:105
bool UpdateShortCode(ECosmeticType Type, const FString &Key, const FString &ShortCode, bool bMarkDirty=true)
Definition: CosmeticsManager.h:115
bool GetShortCode(ECosmeticType Type, const FString &Key, FString &FoundKey) const
Definition: CosmeticsManager.h:125
bool GetEquipsList(ECosmeticType Type, FEquipsList &FoundEquipsList)
Definition: CosmeticsManager.h:135
Definition: CosmeticsManager.h:60
bool GetEquipShortCode(const FString &Key, FString &FoundShortCode) const
Definition: CosmeticsManager.h:75
bool UpdateEquipItem(const FString &Key, const FString &ShortCode, bool bMarkDirty=true)
Definition: CosmeticsManager.h:86
bool GetEquipItem(const FString &Key, FEquipItem &FoundItem)
Definition: CosmeticsManager.h:64
Definition: CosmeticsManager.h:220
Definition: CosmeticsManager.h:267
FItem(ECosmeticType ItemType, const FString &ItemClassID, const FText &ItemDisplayName, UCosmeticAssetBase *ItemAsset, ERarity NewRarity, int OwnedAmount, bool bIsStackable)
Definition: CosmeticsManager.h:271
Definition: CosmeticsManager.h:311
Definition: CosmeticsManager.h:159
FSharedPlayerInfo()
Definition: CosmeticsManager.h:163