Пример #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);
        }
    }
Пример #2
0
 void ShowSaveResultPopup(byte[] savedData, RemoteSaveDictionary remoteSaveDict, string path)
 {
     ProgressMessage.instance.Close();
     var text = string.Format(
         "세이브 완료 - age: {0} sec, size: {1} bytes, accountLevel = {2}, accountLevelExp = {3}, accountGem = {4}, savedDate = {5}, path = {6}",
         TimeChecker.instance.GetLastSavedTimeTotalSeconds(),
         savedData.Length,
         PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_LEVEL_KEY),
         PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_LEVEL_EXP_KEY),
         PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_GEM_KEY),
         PlatformSaveUtil.GetInt64FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.SAVE_DATE_KEY),
         path
     );
     ConfirmPopup.instance.Open(text);
 }
Пример #3
0
    void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime)
    {
#if !NO_GPGS
        var remoteSaveDict = PlatformSaveUtil.DeserializeSaveData(savedData);
        var accountLevel   =
            PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_LEVEL_KEY);
        var accountLevelExp =
            PlatformSaveUtil.GetInt32FromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_LEVEL_EXP_KEY);
        var accountGem =
            PlatformSaveUtil.GetBigIntegerFromRemoteSaveDict(remoteSaveDict, PlatformSaveUtil.ACCOUNT_GEM_KEY);

        var savedGameClient = PlayGamesPlatform.Instance.SavedGame;
        var builder         = new SavedGameMetadataUpdate.Builder();
        builder = builder.WithUpdatedDescription(string.Format("Level {0} / Exp {1} / Gem {2}", accountLevel,
                                                               accountLevelExp, accountGem));
        builder = builder.WithUpdatedPlayedTime(totalPlaytime);
        var updatedMetadata = builder.Build();
        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
#endif
    }
Пример #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
    }
Пример #5
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);
        }
    }