瀏覽代碼

修改存档bug

lzx 3 周之前
父節點
當前提交
0946f933d6

+ 27 - 21
Assets/Scripts/GameLogic/Player/AccountFileInfo.cs

@@ -128,9 +128,10 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
 
         //招募数据
         public List<SummonData> SummonDatas = new List<SummonData>();
-        
+
         public List<RedDot> RedDotDatas = new List<RedDot>();
 
+        public string Uuid = String.Empty;
 
         /// <summary>
         /// 挂机掉落了多少时间
@@ -141,7 +142,7 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
         /// 领取挂机每日掉落时间
         /// </summary>
         public long QiankundaiLingQuDailyDropTime;
-        
+
         /// <summary>
         /// 乾坤袋领取时间
         /// </summary>
@@ -158,6 +159,7 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
         public List<int> phaseKey = new List<int>();
         public List<int> phaseValue = new List<int>();
     }
+
     [System.Serializable]
     public class RedDot
     {
@@ -526,17 +528,14 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
             SavePlayerData();
         }
 #else
-        // await CloudSaveManager.Instance.LoadArchiveAsync();
+
         if (!File.Exists(persistentDataPath))
         {
             LogTool.Log("没有文件: " + persistentDataPath);
-            await ClearInitPlayerData();
-            // await CloudSaveManager.Instance.CreateArchiveAsync();
+            return;
+            // await ClearInitPlayerData();
         }
-        // else
-        // {
-        //     await CloudSaveManager.Instance.LoadArchiveAsync();
-        // }
+
 
         LogTool.Log("读取=文件: " + persistentDataPath);
         StreamReader sr = File.OpenText(persistentDataPath);
@@ -549,6 +548,14 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
         RestoreIndexMap();
     }
 
+    public async CTask ClearPlayerData()
+    {
+        playerData = new PlayerData();
+        await ClearInitPlayerData();
+        //初始化索引
+        RestoreIndexMap();
+    }
+
 
     private int lastHeroIdx = 0;
 
@@ -644,19 +651,7 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
         {
             CleanEmptyData();
         }
-        
-        if (lasetSaveTime == 0)
-        {
-            lasetSaveTime = System.DateTime.Now.Ticks;
-        }
-
-        long currTime = System.DateTime.Now.Ticks;
-        if ( currTime - lasetSaveTime < 600000000)
-        {
-            return;
-        }
 
-        lasetSaveTime = currTime;
 
         if (!string.IsNullOrEmpty(persistentDataPath))
         {
@@ -667,7 +662,18 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
 #else
             File.WriteAllText(persistentDataPath, playerSettingJson);
 #endif
+            if (lasetSaveTime == 0)
+            {
+                lasetSaveTime = System.DateTime.Now.Ticks;
+            }
+
+            long currTime = System.DateTime.Now.Ticks;
+            if (currTime - lasetSaveTime < 600000000)
+            {
+                return;
+            }
 
+            lasetSaveTime = currTime;
             await CloudSaveManager.Instance.UpdateArchiveAsync();
         }
     }

+ 1 - 4
Assets/Scripts/GameLogic/Player/PlayerManager.cs

@@ -41,10 +41,7 @@ public class PlayerManager : Singleton<PlayerManager>
 
     private string playerName;
 
-    /// <summary>
-    /// 当前存档uuid
-    /// </summary>
-    public string Uuid = "";
+
 
     public string PlayerName
     {

+ 27 - 23
Assets/Scripts/GameLogic/SDK/CloudSaveManager.cs

@@ -27,32 +27,31 @@ public class CloudSaveManager : Singleton<CloudSaveManager>
         {
             // 获取存档列表
             List<ArchiveData> archives = await TapTapCloudSave.GetArchiveList();
-
-
-            if (archives != null && archives.Count > 0)
+            await AccountFileInfo.Instance.LoadPlayerData();
+            //如果没有本地文件看有存档没有
+            if (!File.Exists(AccountFileInfo.Instance.persistentDataPath) ||
+                AccountFileInfo.Instance.playerData.Uuid == String.Empty ||
+                archives.Find(a => a.Uuid == AccountFileInfo.Instance.playerData.Uuid) == null)
             {
-                // 存在存档,加载第一个存档
-                ArchiveData archive = archives[0];
-
-                if (archive == null || string.IsNullOrEmpty(archive.Uuid) || archive.Uuid.Length > 64)
+                //有存档就读取第一个存档
+                if (archives != null && archives.Count > 0)
                 {
+                    ArchiveData archive = archives[0];
+                    AccountFileInfo.Instance.playerData.Uuid = archive.Uuid;
+                    await LoadArchiveAsync();
                     AccountFileInfo.Instance.LoadPlayerData();
-                    // 创建新存档
+                    AccountFileInfo.Instance.playerData.Uuid = archive.Uuid;
+                }
+                else
+                {
+                    await AccountFileInfo.Instance.ClearPlayerData();
                     await CreateArchiveAsync();
-                    return;
                 }
-
-
-                PlayerManager.Instance.Uuid = archive.Uuid;
-                await LoadArchiveAsync();
-                AccountFileInfo.Instance.LoadPlayerData();
             }
+            //有数据直接读取本地数据 然后更新一次存档避免上次游戏没有更新
             else
             {
-                // 无存档,创建新存档
-
-                AccountFileInfo.Instance.LoadPlayerData();
-                await CreateArchiveAsync();
+                UpdateArchiveAsync();
             }
         }
         catch (TapException ex)
@@ -86,7 +85,7 @@ public class CloudSaveManager : Singleton<CloudSaveManager>
             ArchiveData createdArchive =
                 await TapTapCloudSave.CreateArchive(metadata, AccountFileInfo.Instance.persistentDataPath, null);
             AccountFileInfo.Instance.lasetSaveTime = System.DateTime.Now.Ticks;
-            PlayerManager.Instance.Uuid = createdArchive.Uuid;
+            AccountFileInfo.Instance.playerData.Uuid = createdArchive.Uuid;
             LogTool.Error($"存档创建成功,UUID: {createdArchive.Uuid}");
 
             return createdArchive.Uuid;
@@ -106,7 +105,7 @@ public class CloudSaveManager : Singleton<CloudSaveManager>
     // 更新存档
     public async CTask UpdateArchiveAsync()
     {
-        if (PlayerManager.Instance.Uuid == "")
+        if (AccountFileInfo.Instance.playerData.Uuid == "")
             return;
         try
         {
@@ -120,7 +119,7 @@ public class CloudSaveManager : Singleton<CloudSaveManager>
 
             // 更新存档
             ArchiveData updatedArchive =
-                await TapTapCloudSave.UpdateArchive(PlayerManager.Instance.Uuid, metadata,
+                await TapTapCloudSave.UpdateArchive(AccountFileInfo.Instance.playerData.Uuid, metadata,
                     AccountFileInfo.Instance.persistentDataPath,
                     null);
             LogTool.Log($"存档更新成功,UUID: {updatedArchive.Uuid}");
@@ -145,11 +144,16 @@ public class CloudSaveManager : Singleton<CloudSaveManager>
             // 获取存档列表
             List<ArchiveData> archives = await TapTapCloudSave.GetArchiveList();
 
-            ArchiveData archive = archives[0];
+            ArchiveData archive = archives.Find(a => a.Uuid == AccountFileInfo.Instance.playerData.Uuid);
+            if (archive == null)
+            {
+                LogTool.Error("没有查询到指定uuid存档");
+                return;
+            }
             // 下载存档文件
 
             byte[] data =
-                await TapTapCloudSave.GetArchiveData(PlayerManager.Instance.Uuid,
+                await TapTapCloudSave.GetArchiveData(AccountFileInfo.Instance.playerData.Uuid,
                     archive.FileId);
 
             string str1 = Encoding.UTF8.GetString(data);