Files
ft/CodexOutput/upserver/KVGameplayLoopTests/diff-PlayFabMgr.cs.txt

124 lines
4.2 KiB
Plaintext

--- Client/Assets/Scripts/Core/PlayFabMgr.cs (reviewed baseline)
+++ Client/Assets/Scripts/Core/PlayFabMgr.cs
@@ -45,6 +45,9 @@
public Dictionary<string, string> CompareDatas(Dictionary<string, UserDataRecord> remoteDatas, string userId)
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) throw PlayerKVGameplayLoop.Stop("PF archive comparison is disabled in KV loop.");
+#endif
PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.Compare);
Last_Update_Time_Key = $"{Last_Update_Time_Key_Prefix}_{userId}";
Local_Data_Key = $"{Local_Data_Key_prefix}_{userId}";
@@ -121,11 +124,24 @@
{
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return;
_instance = this;
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) return;
+#endif
InitBuffer();
tokenSource = new CancellationTokenSource();
UpdateUserDataValue(tokenSource.Token);
}
+#if UNITY_EDITOR && !SERVICE_HOST
+ internal void StartKVGameplayLoopSync()
+ {
+ if(!PlayerKVGameplayLoop.Ready || tokenSource!=null) return;
+ tokenSource=new CancellationTokenSource();
+ UpdateUserDataValue(tokenSource.Token);
+ }
+ internal void StopKVGameplayLoopSync()
+ { tokenSource?.Cancel(); tokenSource?.Dispose(); tokenSource=null; }
+#endif
void InitBuffer()
{
dataBuffer = new LinkedList<Dictionary<string, string>>();
@@ -138,6 +154,14 @@
void OnApplicationPause(bool is_pause)
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled)
+ {
+ if(is_pause) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.FlushObservedAsync(); }
+ else StartKVGameplayLoopSync();
+ return;
+ }
+#endif
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return;
if (is_pause)
{
@@ -154,6 +178,9 @@
void OnApplicationQuit()
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.CloseAsync(); return; }
+#endif
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return;
tokenSource.Cancel();
tokenSource = null;
@@ -162,6 +189,9 @@
void OnDestroy()
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.CloseAsync(); return; }
+#endif
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return;
tokenSource?.Cancel();
tokenSource = null;
@@ -185,6 +215,9 @@
public void UpdateUserDataValue(string key, string data, bool remoteStore = true)
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) { PlayerKVGameplayLoop.Write(key,data,remoteStore); return; }
+#endif
PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.Update);
if (remoteStore)
{
@@ -215,6 +248,9 @@
/// <returns></returns>
public string GetLocalData(string key)
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) return PlayerKVGameplayLoop.Read(key);
+#endif
PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.ReadLocal);
if (localData.ContainsKey(key))
{
@@ -228,6 +264,9 @@
private void SyncData()
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) { _=PlayerKVGameplayLoop.FlushObservedAsync(); return; }
+#endif
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Sync)) return;
// Logout clears credentials before RootCtx is destroyed. Keep pending data local.
if (!PlayFabClientAPI.IsClientLoggedIn()) return;
@@ -283,6 +322,9 @@
public async Task<bool> SyncDataImmidiate(string key, string data)
{
+#if UNITY_EDITOR && !SERVICE_HOST
+ if(PlayerKVGameplayLoop.Enabled) throw PlayerKVGameplayLoop.Stop("Immediate/consuming saves are outside the equipment loop.");
+#endif
if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Immediate)) return false;
foreach (var buff in dataBuffer)
{