LootLocker Unreal SDK 10.4.0
Game backend SDK for Unreal Engine
Loading...
Searching...
No Matches
LootLockerStateData.h
Go to the documentation of this file.
1// Copyright (c) 2021 LootLocker
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "GameFramework/SaveGame.h"
8#include "Runtime/Launch/Resources/Version.h"
9#include "LootLockerStateData.generated.h"
10
11UCLASS()
12class ULootLockerStateMetaDataSaveGame : public USaveGame
13{
14 GENERATED_BODY()
15public:
16 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
17 TArray<FString> SavedPlayerStateUlids;
18 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
19 FString DefaultPlayer = "";
20};
21
22USTRUCT(BlueprintType)
24{
25 GENERATED_BODY()
26public:
27 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
28 TArray<FString> SavedPlayerStateUlids;
29 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
30 FString DefaultPlayer = "";
31};
32
33UCLASS()
34class LOOTLOCKERSDK_API ULootLockerPlayerDataSaveGame : public USaveGame
35{
36 GENERATED_BODY()
37public:
38 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
39 FString Token = "";
40 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
41 FString RefreshToken = "";
42 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
43 FString PlayerIdentifier = "";
44 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
45 FString PlayerUlid = "";
46 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
47 FString PlayerPublicUid = "";
48 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
49 FString PlayerName = "";
50 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
51 FString WhiteLabelEmail = "";
52 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
53 FString WhiteLabelToken = "";
54 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
55 FLootLockerPlatformRepresentation CurrentPlatform;
56 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
57 FString LastSignIn = "";
58 UPROPERTY(VisibleAnywhere, Category = "LootLocker")
59 FString PlayerCreatedAt = "";
60
62 {
63 return Create(PlayerData.Token, PlayerData.RefreshToken, PlayerData.PlayerIdentifier, PlayerData.PlayerUlid, PlayerData.PlayerPublicUid, PlayerData.PlayerName, PlayerData.WhiteLabelEmail, PlayerData.WhiteLabelToken, PlayerData.CurrentPlatform, PlayerData.LastSignIn, PlayerData.PlayerCreatedAt);
64 }
65
66 static ULootLockerPlayerDataSaveGame* Create(const FString& token = "", const FString& refreshToken = "", const FString& playerIdentifier = "", const FString& playerUlid = "", const FString& playerPublicUid = "", const FString& playerName = "", const FString& whiteLabelEmail = "", const FString& whiteLabelToken = "", const FLootLockerPlatformRepresentation& currentPlatform = FLootLockerPlatformRepresentation(), const FString& lastSignIn = "", const FString& playerCreatedAt = "")
67 {
68 ULootLockerPlayerDataSaveGame* newObj = NewObject<ULootLockerPlayerDataSaveGame>();
69 newObj->Token = token;
70 newObj->RefreshToken = refreshToken;
71 newObj->PlayerIdentifier = playerIdentifier;
72 newObj->PlayerUlid = playerUlid;
73 newObj->PlayerPublicUid = playerPublicUid;
74 newObj->PlayerName = playerName;
75 newObj->WhiteLabelEmail = whiteLabelEmail;
76 newObj->WhiteLabelToken = whiteLabelToken;
77 newObj->CurrentPlatform = currentPlatform;
78 newObj->LastSignIn = lastSignIn;
79 newObj->PlayerCreatedAt = playerCreatedAt;
80 return newObj;
81 }
82};
83
84UCLASS()
85class LOOTLOCKERSDK_API ULootLockerStateData : public UObject
86{
87 GENERATED_BODY()
88private:
89 static FLootLockerPlayerData EmptyPlayerData;
90 static FLootLockerStateMetaData ActiveMetaData;
91 static bool isMetadataLoaded;
92 static TMap<FString, TSharedPtr<FLootLockerPlayerData>> ActivePlayerData;
93
94#if ENGINE_MAJOR_VERSION < 5
95 static const FString BaseSaveSlot;
96 static const FString MetaDataSaveSlot;
97 static const FString PlayerDataSaveSlot;
98 static constexpr int SaveIndex = 0;
99#else
100 inline static const FString BaseSaveSlot = "LootLocker";
101 inline static const FString MetaDataSaveSlot = BaseSaveSlot+"_md";
102 inline static const FString PlayerDataSaveSlot = BaseSaveSlot+"_pd";
103 inline static constexpr int SaveIndex = 0;
104#endif
105 static FLootLockerStateMetaData LoadMetaState();
106 static TSharedPtr<FLootLockerPlayerData> LoadPlayerData(const FString& PlayerUlid, bool makeActive = true);
107 static void SetMetaState(FLootLockerStateMetaData& updatedMetaData);
108public:
110
112 static bool SaveStateExistsForPlayer(const FString& PlayerUlid = "");
113 static bool MakePlayerActive(const FString& PlayerUlid);
115 static const TSharedPtr<FLootLockerPlayerData> GetStateForPlayerOrDefaultFromCache(const FString& PlayerUlid = "");
116 static const TSharedPtr<FLootLockerPlayerData> GetStateForPlayerOrDefaultIfActive(const FString& PlayerUlid = "");
117 static FString GetDefaultPlayerUlid();
118 static bool SetDefaultPlayerUlid(const FString& PlayerUlid);
119 static const FLootLockerPlayerData& GetSavedStateForFirstPlayer() { return GetAndActivateSavedStateOrDefaultOrEmptyForPlayer(GetDefaultPlayerUlid()); }
120 static void SavePlayerData(const FLootLockerPlayerData& PlayerData);
121 static bool ClearSavedStateForPlayer(const FString& PlayerUlid);
122 static void ClearAllSavedStatesExceptForPlayer(const FString& PlayerUlid);
123 static void ClearAllSavedStates();
124 static TArray<FString> GetActivePlayerUlids();
125 static TArray<FString> GetCachedPlayerUlids();
126 static void SetPlayerUlidToInactive(const FString& PlayerUlid);
128 static void SetAllPlayersToInactiveExceptForPlayer(const FString& PlayerUlid);
129};
Definition LootLockerStateData.h:35
static ULootLockerPlayerDataSaveGame * Create(const FString &token="", const FString &refreshToken="", const FString &playerIdentifier="", const FString &playerUlid="", const FString &playerPublicUid="", const FString &playerName="", const FString &whiteLabelEmail="", const FString &whiteLabelToken="", const FLootLockerPlatformRepresentation &currentPlatform=FLootLockerPlatformRepresentation(), const FString &lastSignIn="", const FString &playerCreatedAt="")
Definition LootLockerStateData.h:66
FString PlayerPublicUid
Definition LootLockerStateData.h:47
FString PlayerIdentifier
Definition LootLockerStateData.h:43
FString WhiteLabelToken
Definition LootLockerStateData.h:53
FString PlayerUlid
Definition LootLockerStateData.h:45
FLootLockerPlatformRepresentation CurrentPlatform
Definition LootLockerStateData.h:55
FString RefreshToken
Definition LootLockerStateData.h:41
FString PlayerCreatedAt
Definition LootLockerStateData.h:59
FString WhiteLabelEmail
Definition LootLockerStateData.h:51
FString PlayerName
Definition LootLockerStateData.h:49
FString Token
Definition LootLockerStateData.h:39
FString LastSignIn
Definition LootLockerStateData.h:57
Definition LootLockerStateData.h:86
static void SetPlayerUlidToInactive(const FString &PlayerUlid)
static bool ClearSavedStateForPlayer(const FString &PlayerUlid)
static TArray< FString > GetCachedPlayerUlids()
static void ClearAllSavedStates()
static const FLootLockerPlayerData & GetAndActivateSavedStateOrDefaultOrEmptyForPlayer(const FString &PlayerUlid="")
static void SetAllPlayersToInactiveExceptForPlayer(const FString &PlayerUlid)
static bool MakePlayerActive(const FString &PlayerUlid)
static bool SetDefaultPlayerUlid(const FString &PlayerUlid)
static bool SaveStateExistsForPlayer(const FString &PlayerUlid="")
static FString GetDefaultPlayerUlid()
static const TSharedPtr< FLootLockerPlayerData > GetStateForPlayerOrDefaultFromCache(const FString &PlayerUlid="")
static void SavePlayerData(const FLootLockerPlayerData &PlayerData)
static const FLootLockerPlayerData & GetSavedStateForFirstPlayer()
Definition LootLockerStateData.h:119
static FString GenerateNewGuestIdentifier()
static void ClearAllSavedStatesExceptForPlayer(const FString &PlayerUlid)
static void SetAllPlayersToInactive()
static TArray< FString > GetActivePlayerUlids()
static const TSharedPtr< FLootLockerPlayerData > GetStateForPlayerOrDefaultIfActive(const FString &PlayerUlid="")
Definition LootLockerStateData.h:13
Definition LootLockerPlayerData.h:12
Definition LootLockerStateData.h:24