Ejemplo n.º 1
0
    public void GetCloudLastSavedMetadataAsync(Action<CloudMetadata> onPeekResult)
    {
        PlatformSaveUtil.ShowPeekProgressPopup();

        if (File.Exists(RemoteSaveFileForEditor))
        {
            var remoteSaveDict = PlatformSaveUtil.DeserializeSaveData(File.ReadAllBytes(RemoteSaveFileForEditor));
            var cloudMetadata = new CloudMetadata
            {
                level = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_LEVEL_KEY),
                levelExp = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict,
                    PlatformSaveUtil.ACCOUNT_LEVEL_EXP_KEY),
                gem = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                    PlatformSaveUtil.ACCOUNT_GEM_KEY),
                riceRate = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                    PlatformSaveUtil.ACCOUNT_RICE_RATE_KEY),
                saveDate = PlatformSaveUtil.GetInt64FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.SAVE_DATE_KEY)
            };
            onPeekResult(cloudMetadata);
        }
        else
        {
            onPeekResult(CloudMetadata.Invalid);
        }
    }
Ejemplo n.º 2
0
 public static bool IsSaveRollback(CloudMetadata cloudMetadata)
 {
     return(cloudMetadata.level > ResourceManager.instance.accountLevel ||
            cloudMetadata.levelExp > ResourceManager.instance.accountLevelExp ||
            cloudMetadata.gem > ResourceManager.instance.accountGem ||
            cloudMetadata.goldRate > ResourceManager.instance.accountGoldRate);
 }
Ejemplo n.º 3
0
 public static bool IsLoadRollback(CloudMetadata cloudMetadata)
 {
     return(cloudMetadata.level < ResourceManager.instance.accountLevel ||
            cloudMetadata.levelExp < ResourceManager.instance.accountLevelExp ||
            cloudMetadata.gem < ResourceManager.instance.accountGem ||
            cloudMetadata.goldRate < ResourceManager.instance.accountGoldRate);
 }
Ejemplo n.º 4
0
    public void GetCloudLastSavedMetadataAsync(Action <CloudMetadata> onPeekResult)
    {
        if (!Social.localUser.authenticated)
        {
            SushiDebug.LogFormat("GetCloudSavedAccountData: not authenticated");
            onPeekResult(CloudMetadata.Invalid);
            return;
        }

#if !NO_GPGS
        var savedGameClient = PlayGamesPlatform.Instance.SavedGame;
        if (savedGameClient != null)
        {
            Open(savedGameClient,
                 true,
                 OnSavedGameOpenedAndReadConflictResolve,
                 (status, game) =>
            {
                if (status == SavedGameRequestStatus.Success)
                {
                    // handle reading or writing of saved game.

                    SushiDebug.LogFormat("GetCloudSavedAccountData: Save game open (read) success! Filename: {0}",
                                         game.Filename);

                    savedGameClient.ReadBinaryData(game, (status2, data2) =>
                    {
                        if (status == SavedGameRequestStatus.Success)
                        {
                            // handle processing the byte array data
                            SushiDebug.LogFormat("GetCloudSavedAccountData success! - Data size: {0} bytes",
                                                 data2.Length);
                            try
                            {
                                var remoteSaveDict = PlatformSaveUtil.DeserializeSaveData(data2);
                                var cloudMetadata  = new CloudMetadata
                                {
                                    level = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict,
                                                                                        PlatformSaveUtil.ACCOUNT_LEVEL_KEY),
                                    levelExp = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict,
                                                                                           PlatformSaveUtil.ACCOUNT_LEVEL_EXP_KEY),
                                    gem = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                                                                                           PlatformSaveUtil.ACCOUNT_GEM_KEY),
                                    riceRate = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                                                                                                PlatformSaveUtil.ACCOUNT_RICE_RATE_KEY),
                                    saveDate = PlatformSaveUtil.GetInt64FromRemoteSaveDict(remoteSaveDict,
                                                                                           PlatformSaveUtil.SAVE_DATE_KEY)
                                };
                                onPeekResult(cloudMetadata);
                            }
                            catch
                            {
                                SushiDebug.LogFormat("GetCloudSavedAccountData: Exception at deserialization");
                                onPeekResult(CloudMetadata.Invalid);
                            }
                        }
                        else
                        {
                            SushiDebug.LogFormat("GetCloudSavedAccountData: ReadBinaryData error! - {0}", status2);
                            onPeekResult(CloudMetadata.Invalid);
                        }
                    });
                }
                else
                {
                    PlatformSaveUtil.LogCloudLoadSaveError(string.Format(
                                                               "GetCloudSavedAccountData: OpenWithAutomaticConflictResolution error! - {0}", status));
                    onPeekResult(CloudMetadata.Invalid);
                }
            });
        }
        else
        {
            PlatformSaveUtil.LogCloudLoadSaveError("GetCloudSavedAccountData: savedGameClient null");
            onPeekResult(CloudMetadata.Invalid);
        }
#endif
    }
Ejemplo n.º 5
0
 public static string GetSaveOverwriteConfirmMessage(CloudMetadata cloudMetadata)
 {
     return(TextHelper.GetText("platform_save_confirm_popup"));
 }
Ejemplo n.º 6
0
    public void OnCloudLoadResult(string result, byte[] data)
    {
        if (result == "OK")
        {
            SushiDebug.LogFormat("OnCloudLoadResult: data length {0} bytes", data != null ? data.Length : 0);
            // 메타데이터 조회의 경우와 실제 세이브 데이터 로딩의 경우를 나눠서 처리
            if (onPeekResultSave != null)
            {
                SushiDebug.Log("OnCloudLoadResult: onPeekResultSave valid");
                var cloudMetadata = CloudMetadata.Invalid;
                if (data == null || data.Length == 0)
                {
                }
                else
                {
                    try
                    {
                        var remoteSaveDict = PlatformSaveUtil.DeserializeSaveData(data);
                        cloudMetadata = new CloudMetadata
                        {
                            level = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict,
                                                                                PlatformSaveUtil.ACCOUNT_LEVEL_KEY),
                            levelExp = PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict,
                                                                                   PlatformSaveUtil.ACCOUNT_LEVEL_EXP_KEY),
                            gem = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                                                                                   PlatformSaveUtil.ACCOUNT_GEM_KEY),
                            riceRate = PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict,
                                                                                        PlatformSaveUtil.ACCOUNT_RICE_RATE_KEY),
                            saveDate = PlatformSaveUtil.GetInt64FromRemoteSaveDict(remoteSaveDict,
                                                                                   PlatformSaveUtil.SAVE_DATE_KEY)
                        };
                    }
                    catch
                    {
                        cloudMetadata = CloudMetadata.Invalid;
                    }
                }

                onPeekResultSave(cloudMetadata);
                onPeekResultSave = null;
            }
            else
            {
                SushiDebug.Log("OnCloudLoadResult: onPeekResultSave empty. data load...");
                if (data == null || data.Length == 0)
                {
                    PlatformSaveUtil.ShowLoadErrorPopup("OnCloudLoadResult: Cloud save data corrupted");
                }
                else
                {
                    SushiDebug.LogFormat("OnCloudLoadResult: success! - Data size: {0} bytes", data.Length);
                    var remoteSaveDict = PlatformSaveUtil.DeserializeSaveData(data);
                    PlatformSaveUtil.LoadDataAndLoadSplashScene(remoteSaveDict);
                }
            }
        }
        else
        {
            PlatformSaveUtil.ShowSaveErrorPopup(TextHelper.GetText("platform_cloud_load_fail") + "\n\n" + result);
        }
    }