private static AndroidJavaObject AsMetadataChange(SavedGameMetadataUpdate update)
        {
            using (var builder =
                       new AndroidJavaObject("com.google.android.gms.games.snapshot.SnapshotMetadataChange$Builder"))
            {
                if (update.IsCoverImageUpdated)
                {
                    using (var bitmapFactory = new AndroidJavaClass("android.graphics.BitmapFactory"))
                        using (var bitmap = bitmapFactory.CallStatic <AndroidJavaObject>(
                                   "decodeByteArray", update.UpdatedPngCoverImage, /* offset= */ 0,
                                   update.UpdatedPngCoverImage.Length))
                            using (builder.Call <AndroidJavaObject>("setCoverImage", bitmap))
                                ;
                }

                if (update.IsDescriptionUpdated)
                {
                    using (builder.Call <AndroidJavaObject>("setDescription", update.UpdatedDescription));
                }

                if (update.IsPlayedTimeUpdated)
                {
                    using (builder.Call <AndroidJavaObject>("setPlayedTimeMillis",
                                                            Convert.ToInt64(update.UpdatedPlayedTime.Value.TotalMilliseconds)));
                }

                return(builder.Call <AndroidJavaObject>("build"));
            }
        }
Example #2
0
    public void SavePlayerDataCloud(SavedGameRequestStatus status, ISavedGameMetadata meta)
    {
        if (status == SavedGameRequestStatus.Success)
        {
            if (isSaving)
            {
                ISavedGameClient savedGameClient        = PlayGamesPlatform.Instance.SavedGame;
                SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
                builder = builder
                          .WithUpdatedPlayedTime(meta.TotalTimePlayed.Add(new TimeSpan(0, 0, (int)Time.realtimeSinceStartup)));
                SavedGameMetadataUpdate update = builder.Build();

                savedGameClient.CommitUpdate(meta, update, ObjectToByteArray(GameManager.singleton.playerData), SaveUpdate);
            }
            else
            {
                ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;
                savedGameClient.ReadBinaryData(meta, SaveReadPlayerData);
            }
        }
        else
        {
            Debug.Log("Not succeed! Save Player Data Cloud!");
        }
    }
 public void Write(GameData value)
 {
     System.Action action = () =>
     {
         ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;
         savedGameClient.OpenWithAutomaticConflictResolution(Globals.GetFilename <GameData>(), DataSource.ReadCacheOrNetwork, ConflictResolutionStrategy.UseMostRecentlySaved,
                                                             (status, game) =>
         {
             if (status == SavedGameRequestStatus.Success)
             {
                 byte[] binaryData = value.Serialize();
                 SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
                 builder = builder.WithUpdatedDescription($"Saved at {DateTime.Now}");
                 SavedGameMetadataUpdate updatedMetadata = builder.Build();
                 savedGameClient.CommitUpdate(game, updatedMetadata, binaryData, (s, g) =>
                 {
                     if (s == SavedGameRequestStatus.Success)
                     {
                         Extensions.Log(GetType(), $"Google Play writing completed. Status: {s}; Filename: {g.Filename}; Description: {g.Description};");
                     }
                     else
                     {
                         Extensions.Log(GetType(), $"Google Play writing failed. Status: {s};");
                     }
                 });
             }
             else
             {
                 Extensions.Log(GetType(), $"Couldn't open saved game. Status: {status};");
             }
         });
     };
     PerformAction(action);
 }
Example #4
0
        public void CommitUpdate(ISavedGameMetadata metadata, SavedGameMetadataUpdate updateForMetadata, byte[] updatedBinaryData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback)
        {
            Misc.CheckNotNull <ISavedGameMetadata>(metadata);
            Misc.CheckNotNull <byte[]>(updatedBinaryData);
            Misc.CheckNotNull <Action <SavedGameRequestStatus, ISavedGameMetadata> >(callback);
            callback = NativeSavedGameClient.ToOnGameThread <SavedGameRequestStatus, ISavedGameMetadata>(callback);
            NativeSnapshotMetadata metadata1 = metadata as NativeSnapshotMetadata;

            if (metadata1 == null)
            {
                Logger.e("Encountered metadata that was not generated by this ISavedGameClient");
                callback(SavedGameRequestStatus.BadInputError, (ISavedGameMetadata)null);
            }
            else if (!metadata1.IsOpen)
            {
                Logger.e("This method requires an open ISavedGameMetadata.");
                callback(SavedGameRequestStatus.BadInputError, (ISavedGameMetadata)null);
            }
            else
            {
                this.mSnapshotManager.Commit(metadata1, NativeSavedGameClient.AsMetadataChange(updateForMetadata), updatedBinaryData, (Action <GooglePlayGames.Native.PInvoke.SnapshotManager.CommitResponse>)(response =>
                {
                    if (!response.RequestSucceeded())
                    {
                        callback(NativeSavedGameClient.AsRequestStatus(response.ResponseStatus()), (ISavedGameMetadata)null);
                    }
                    else
                    {
                        callback(SavedGameRequestStatus.Success, (ISavedGameMetadata)response.Data());
                    }
                }));
            }
        }
Example #5
0
    static public void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime, Action <SavedGameRequestStatus, ISavedGameMetadata> onSavedGameWritten, string description = "")
    {
        ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

        if (string.IsNullOrEmpty(description))
        {
            description = "Saved at " + DateTime.Now;
        }

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
        builder = builder
                  .WithUpdatedPlayedTime(totalPlaytime)
                  .WithUpdatedDescription(description);

        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, (status, data) =>
        {
            if (status != SavedGameRequestStatus.Success)
            {
                PlayerLoggedIn = false;
            }

            if (onSavedGameWritten != null)
            {
                onSavedGameWritten.Invoke(status, data);
            }
        });
    }
Example #6
0
    public void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime)
    {
        ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
        builder = builder
                  .WithUpdatedPlayedTime(totalPlaytime)
                  .WithUpdatedDescription("Saved game at " + DateTime.Now);

        // my customization
        Texture2D savedImage = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>().saveGameImage;

        // end my customization

        if (savedImage != null)
        {
            // This assumes that savedImage is an instance of Texture2D
            // and that you have already called a function equivalent to
            // getScreenshot() to set savedImage
            // NOTE: see sample definition of getScreenshot() method below
            byte[] pngData = savedImage.EncodeToPNG();
            builder = builder.WithUpdatedPngCoverImage(pngData);
        }
        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
    }
Example #7
0
        public void CommitUpdate(ISavedGameMetadata metadata, SavedGameMetadataUpdate updateForMetadata, byte[] updatedBinaryData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback)
        {
            Misc.CheckNotNull(metadata);
            Misc.CheckNotNull(updatedBinaryData);
            Misc.CheckNotNull(callback);
            callback = ToOnGameThread(callback);
            NativeSnapshotMetadata nativeSnapshotMetadata = metadata as NativeSnapshotMetadata;

            if (nativeSnapshotMetadata == null)
            {
                Logger.e("Encountered metadata that was not generated by this ISavedGameClient");
                callback(SavedGameRequestStatus.BadInputError, null);
            }
            else if (!nativeSnapshotMetadata.IsOpen)
            {
                Logger.e("This method requires an open ISavedGameMetadata.");
                callback(SavedGameRequestStatus.BadInputError, null);
            }
            else
            {
                mSnapshotManager.Commit(nativeSnapshotMetadata, AsMetadataChange(updateForMetadata), updatedBinaryData, delegate(GooglePlayGames.Native.PInvoke.SnapshotManager.CommitResponse response)
                {
                    if (!response.RequestSucceeded())
                    {
                        callback(AsRequestStatus(response.ResponseStatus()), null);
                    }
                    else
                    {
                        callback(SavedGameRequestStatus.Success, response.Data());
                    }
                });
            }
        }
            public void ResolveConflict(ISavedGameMetadata chosenMetadata, SavedGameMetadataUpdate metadataUpdate,
                                        byte[] updatedData)
            {
                NativeSnapshotMetadata convertedMetadata = chosenMetadata as NativeSnapshotMetadata;

                if (convertedMetadata != mOriginal && convertedMetadata != mUnmerged)
                {
                    Logger.e("Caller attempted to choose a version of the metadata that was not part " +
                             "of the conflict");
                    mCompleteCallback(SavedGameRequestStatus.BadInputError, null);
                    return;
                }

                NativeSnapshotMetadataChange convertedMetadataChange = new NativeSnapshotMetadataChange.Builder().From(metadataUpdate).Build();

                mManager.Resolve(convertedMetadata, convertedMetadataChange, mConflictId, updatedData,
                                 response =>
                {
                    // If the resolution didn't succeed, propagate the failure to the client.
                    if (!response.RequestSucceeded())
                    {
                        mCompleteCallback(AsRequestStatus(response.ResponseStatus()), null);
                        return;
                    }

                    // Otherwise, retry opening the file.
                    mRetryFileOpen();
                });
            }
Example #9
0
 //save is opened, either save or load it.
 private void SavedGameOpened(SavedGameRequestStatus status, ISavedGameMetadata game)
 {
     //check success
     if (status == SavedGameRequestStatus.Success)
     {
         //saving
         if (m_saving)
         {
             //read bytes from save
             byte[] data = ToBytes();
             //create builder. here you can add play time, time created etc for UI.
             SavedGameMetadataUpdate.Builder builder         = new SavedGameMetadataUpdate.Builder();
             SavedGameMetadataUpdate         updatedMetadata = builder.Build();
             //saving to cloud
             ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(game, updatedMetadata, data, SavedGameWritten);
             //loading
         }
         else
         {
             ((PlayGamesPlatform)Social.Active).SavedGame.ReadBinaryData(game, SavedGameLoaded);
         }
         //error
     }
     else
     {
         Debug.LogWarning("Error opening game: " + status);
     }
 }
Example #10
0
 public void SavedGameOpened(SavedGameRequestStatus _status, ISavedGameMetadata _game)
 {
     if (_status == SavedGameRequestStatus.Success)
     {
         if (isSaving)
         {
             // 스트링 데이터를 바이트로 바꿔서 메타 정보와 함꼐 저장한다
             slot0.State = "Opened, now writing";
             byte[]   data       = slot0.ToBytes();
             TimeSpan playedTime = slot0.TotalPlayingTime;
             SavedGameMetadataUpdate.Builder builder =
                 new SavedGameMetadataUpdate.Builder()
                 .WithUpdatedPlayedTime(playedTime)
                 .WithUpdatedDescription("Saved Game at " +
                                         DateTime.Now);
             SavedGameMetadataUpdate updatedMetadata = builder.Build();
             ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(
                 _game, updatedMetadata, data, SavedGameWritten);
         }
         else
         {
             // 우선 파일을 읽어온다
             slot0.State = "Opened, reading...";
             ((PlayGamesPlatform)Social.Active).SavedGame
             .ReadBinaryData(_game, SavedGameLoaded);
         }
     }
     else
     {
         Debug.LogWarning("Error opening game: " + _status);
     }
 }
Example #11
0
        /// <summary>
        /// Используется для обработки сохранения/загрузки в облако
        /// </summary>
        /// <param name="status"></param>
        /// <param name="game"></param>
        public void SavedGameOpened(SavedGameRequestStatus status,
                                    ISavedGameMetadata game)
        {
            if (status == SavedGameRequestStatus.Success)
            {
                if (isSaving) // writing data
                {
                    byte[]   data       = ASCIIEncoding.ASCII.GetBytes(GetSaveStringSkillAndCost());
                    TimeSpan playedTime = TimeSpan.FromSeconds(TotalPlaytime);
                    SavedGameMetadataUpdate.Builder builder =
                        new SavedGameMetadataUpdate.Builder().
                        WithUpdatedPlayedTime(playedTime).
                        WithUpdatedDescription("Saved game ad " + DateTime.Now);

                    SavedGameMetadataUpdate update = builder.Build();
                    ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(game, update, data, SavedGameWritten);
                    popupManager.text += " successfully!\n";
                }
                else // reading data
                {
                    ((PlayGamesPlatform)Social.Active).SavedGame.ReadBinaryData(game, SavedGameLoaded);
                }
            }
            else
            {
                popupManager.text += "\nWrong saving in cloud...\n";
            }
        }
Example #12
0
    public void OnSavedGameOpened(SavedGameRequestStatus status, ISavedGameMetadata game)
    {
        if (status == SavedGameRequestStatus.Success)
        {
            if (isSaving)
            {
                Debug.Log("Saving to " + game);
                byte[] data = GameManager.GetInstance().GetPlayerPrefsAsBytes();
                //TimeSpan playedTime = mProgress.TotalPlayingTime;
                SavedGameMetadataUpdate.Builder builder = new
                                                          SavedGameMetadataUpdate.Builder()
                                                          //.WithUpdatedPlayedTime(playedTime)
                                                          .WithUpdatedDescription("Saved Game at " + DateTime.Now);

                SavedGameMetadataUpdate updatedMetadata = builder.Build();
                ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(game, updatedMetadata, data, OnSavedGameWritten);
            }
            else
            {
                ((PlayGamesPlatform)Social.Active).SavedGame.ReadBinaryData(game, OnSaveGameLoaded);
            }
        }
        else
        {
            Debug.LogWarning("Error opening game: " + status);
        }
    }
Example #13
0
 private void SaveGameProcessing(SavedGameRequestStatus status, ISavedGameMetadata metaData,
                                 ISaveGame game, SocialCallbackSaveGame saveResult)
 {
     #if UNITY_ANDROID
     if (status == SavedGameRequestStatus.Success)
     {
         byte[] data = game.ObjectToBytes();
         SavedGameMetadataUpdate.Builder builder         = new SavedGameMetadataUpdate.Builder();
         SavedGameMetadataUpdate         updatedMetadata = builder.Build();
         ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(metaData, updatedMetadata, data,
                                                                   //Lamda Result
                                                                   (SavedGameRequestStatus statusCommit, ISavedGameMetadata metaDataCommit) => {
             if (statusCommit == SavedGameRequestStatus.Success)
             {
                 saveResult.Invoke(ESocialCloudState.ESocialCloudState_Completed);
             }
             else
             {
                 saveResult.Invoke(ESocialCloudState.ESocialCloudState_Failure_CannotSaveGame);
             }
         });
     }
     else
     {
         saveResult.Invoke(ESocialCloudState.ESocialCloudState_Failure_CannotOpenSavedGame);
     }
     #else
     saveResult.Invoke(ESocialCloudState.ESocialCloudState_Failure_CannotOpenSavedGame);
     #endif
 }
Example #14
0
    void WriteSaveGameData(ISavedGameMetadata game)
    {
        try
        {
            ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

            SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
            builder = builder
                      .WithUpdatedPlayedTime(game.TotalTimePlayed)
                      .WithUpdatedDescription("Saved game at " + DateTime.Now);

            SavedGameMetadataUpdate updatedMetadata = builder.Build();

            SaveData saveData = new SaveData
            {
                CountCoins       = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CountCollectedCoins),
                CurrentLevel     = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CurrentLevel),
                TimeSession      = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.MaxTimeGameSession),
                CountKillEnemies = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CountKillEnemies),
                HighScore        = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.HighScore)
            };

            string json = JsonUtility.ToJson(saveData);
            savedGameClient.CommitUpdate(game, updatedMetadata, JsonStringToByteArray(json), OnSavedGameWritten);
        }
        catch (Exception e)
        {
            Debug.Log(e);
        }
    }
Example #15
0
    public void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime)
    {
        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
        builder = builder.WithUpdatedPlayedTime(totalPlaytime).WithUpdatedDescription("Saved game at " + DateTime.Now);
        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        PlayGamesPlatform.Instance.SavedGame.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
    }
Example #16
0
        private void WriteGame(ISavedGameMetadata game, byte[] savedData)
        {
            ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

            SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
            builder = builder.WithUpdatedDescription("Saved game at " + System.DateTime.Now);
            SavedGameMetadataUpdate updatedMetadata = builder.Build();
            savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
        }
Example #17
0
        public void CommitUpdate(ISavedGameMetadata metadata, SavedGameMetadataUpdate updateForMetadata,
                                 byte[] updatedBinaryData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback)
        {
            Misc.CheckNotNull(metadata);
            Misc.CheckNotNull(updatedBinaryData);
            Misc.CheckNotNull(callback);

            callback = ToOnGameThread(callback);

            AndroidSnapshotMetadata convertedMetadata = metadata as AndroidSnapshotMetadata;

            if (convertedMetadata == null)
            {
                OurUtils.Logger.e("Encountered metadata that was not generated by this ISavedGameClient");
                callback(SavedGameRequestStatus.BadInputError, null);
                return;
            }

            if (!convertedMetadata.IsOpen)
            {
                OurUtils.Logger.e("This method requires an open ISavedGameMetadata.");
                callback(SavedGameRequestStatus.BadInputError, null);
                return;
            }

            if (!convertedMetadata.JavaContents.Call <bool>("writeBytes", updatedBinaryData))
            {
                OurUtils.Logger.e("This method requires an open ISavedGameMetadata.");
                callback(SavedGameRequestStatus.BadInputError, null);
            }

            using (var convertedMetadataChange = AsMetadataChange(updateForMetadata))
                using (var task = mSnapshotsClient.Call <AndroidJavaObject>("commitAndClose", convertedMetadata.JavaSnapshot,
                                                                            convertedMetadataChange))
                {
                    AndroidTaskUtils.AddOnSuccessListener <AndroidJavaObject>(
                        task,
                        /* disposeResult= */ false,
                        snapshotMetadata =>
                    {
                        Debug.Log("commitAndClose.succeed");
                        callback(SavedGameRequestStatus.Success,
                                 new AndroidSnapshotMetadata(snapshotMetadata, /* contents= */ null));
                    });

                    AddOnFailureListenerWithSignOut(
                        task,
                        exception =>
                    {
                        Debug.Log("commitAndClose.failed: " + exception.Call <string>("toString"));
                        var status = mAndroidClient.IsAuthenticated() ?
                                     SavedGameRequestStatus.InternalError :
                                     SavedGameRequestStatus.AuthenticationError;
                        callback(status, null);
                    });
                }
        }
Example #18
0
    private void SaveData(byte[] dataToSave)
    {
        TimeSpan allPlayingTime = DateTime.Now - startPlayingTime;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();

        builder = builder.WithUpdatedPlayedTime(currentGameMetadata.TotalTimePlayed + allPlayingTime).WithUpdatedDescription("Saved game at " + DateTime.Now);

        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        SavedGameClient.CommitUpdate(currentGameMetadata, updatedMetadata, dataToSave, OnSavedGameCreated);
    }
Example #19
0
    // Callback called by GPG when the file is opened.
    public void SavedGameOpenedForWrite(SavedGameRequestStatus status, ISavedGameMetadata game)
    {
        if (status == SavedGameRequestStatus.Success)
        {
            mMsg = "Opened, writing...";
            Debug.Log(mMsg);

            // this is the screen image for the metadata.
            byte[] pngData = (mScreenImage != null) ?mScreenImage.EncodeToPNG():null;

            // Call WriteValuesToBytes to convert our fields that we need to save to a byte array.
            byte[] data = WriteValuesToBytes();

            // Update the total playing time.
            TimeSpan playedTime = mTotalPlayingTime.Add(DateTime.Now.Subtract(mStartTime));

            string description;

            if (game.Filename.Equals(autoSaveFileName))
            {
                description = "Autosaved game at " + DateTime.Now;
            }
            else
            {
                description = "Saved Game at " + DateTime.Now;
            }

            // Build the metadata
            SavedGameMetadataUpdate.Builder builder = new
                                                      SavedGameMetadataUpdate.Builder()
                                                      .WithUpdatedPlayedTime(playedTime)
                                                      .WithUpdatedDescription(description);

            if (pngData != null)
            {
                Debug.Log("Save image of len " + pngData.Length);
                builder = builder.WithUpdatedPngCoverImage(pngData);
            }
            else
            {
                Debug.Log("No image avail");
            }
            SavedGameMetadataUpdate updatedMetadata = builder.Build();

            // Finally commit the data and metadata to the saved game.
            ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(game, updatedMetadata, data, SavedGameWritten);
        }
        else
        {
            mMsg = "Error opening game: " + status + " filename = " + game.Filename;
            Debug.LogWarning(mMsg);
        }
    }
    void SaveGame(ISavedGameMetadata data, byte[] _byte, TimeSpan playTime)
    {
        ISavedGameClient savedClient = PlayGamesPlatform.Instance.SavedGame;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();

        builder = builder.WithUpdatedPlayedTime(playTime).WithUpdatedDescription("Saved at " + DateTime.Now);

        SavedGameMetadataUpdate updateData = builder.Build();

        savedClient.CommitUpdate(data, updateData, _byte, OnSavedGameWritten);
    }
    public void SaveGame(ISavedGameMetadata _data, byte[] _byte, TimeSpan _playTime)
    {
#if UNITY_ANDROID
        ISavedGameClient savedGame = PlayGamesPlatform.Instance.SavedGame;
        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();

        builder = builder.WithUpdatedPlayedTime(_playTime).WithUpdatedDescription("Saved at " + DateTime.Now);

        SavedGameMetadataUpdate updateData = builder.Build();
        savedGame.CommitUpdate(_data, updateData, _byte, OnSacedGameWritten);
#endif
    }
    //Save Data To Cloud
    private void WriteSavedGame(ISavedGameMetadata game, byte[] savedData,
                                Action <SavedGameRequestStatus, ISavedGameMetadata> callback)
    {
        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder()
                                                  .WithUpdatedPlayedTime(TimeSpan.FromMinutes(game.TotalTimePlayed.Minutes + 1))
                                                  .WithUpdatedDescription("Saved at: " + System.DateTime.Now);

        SavedGameMetadataUpdate updatedMetadata = builder.Build();
        ISavedGameClient        savedGameClient = PlayGamesPlatform.Instance.SavedGame;

        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, callback);
    }
        private void WriteGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime, Action <SavedGameRequestStatus, ISavedGameMetadata> onSavedGameWritten)
        {
            ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

            SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
            builder = builder
                      .WithUpdatedPlayedTime(totalPlaytime)
                      .WithUpdatedDescription("Saved game at " + DateTime.Now);
            SavedGameMetadataUpdate updatedMetadata = builder.Build();

            savedGameClient.CommitUpdate(game, updatedMetadata, savedData, onSavedGameWritten);
        }
    public void SavedGameOpened(SavedGameRequestStatus status, ISavedGameMetadata game)
    {
        if (status == SavedGameRequestStatus.Success)
        {
            if (mSaving)
            {
                if (mScreenImage == null)
                {
                    CaptureScreenshot();
                }

                byte[] pngData = null;
                if (mScreenImage != null)
                {
                    pngData = mScreenImage.EncodeToPNG();
                }

                Debug.Log("Saving to " + game);
                byte[]   data       = mProgress.ToBytes();
                TimeSpan playedTime = mProgress.TotalPlayingTime;
                SavedGameMetadataUpdate.Builder builder =
                    new SavedGameMetadataUpdate.Builder()
                    .WithUpdatedPlayedTime(playedTime)
                    .WithUpdatedDescription(
                        "Saved Game at " + DateTime.Now);

                if (pngData != null)
                {
                    Debug.Log("Save image of len " + pngData.Length);
                    builder = builder.WithUpdatedPngCoverImage(pngData);
                }
                else
                {
                    Debug.Log("No image avail");
                }
                SavedGameMetadataUpdate updatedMetadata = builder.Build();
                ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(
                    game, updatedMetadata, data, SavedGameWritten);
            }
            else
            {
                ((PlayGamesPlatform)Social.Active).SavedGame.ReadBinaryData(
                    game, SavedGameLoaded);
            }
        }
        else
        {
            Debug.LogWarning("Error opening game: " + status);
        }
    }
Example #25
0
    private static void SaveGooglePlay(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime)
    {
        //Debug.Log("SavingGP");
        ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
        builder = builder
                  .WithUpdatedPlayedTime(totalPlaytime)
                  .WithUpdatedDescription("Saved game at " + DateTime.Now);

        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
    }
Example #26
0
    static void SaveGame(ISavedGameMetadata game)
    {
        byte[] savedData = SaveLoad.ToByteArray();

        ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();
        builder = builder
                  .WithUpdatedDescription("Saved game at " + DateTime.Now);

        SavedGameMetadataUpdate updatedMetadata = builder.Build();

        savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten);
    }
Example #27
0
        private static void WriteSavedGame(byte[] Data)
        {
            SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder()
                                                      .WithUpdatedPlayedTime(TimeSpan.FromMinutes(currentGame.TotalTimePlayed.Minutes + 1))
                                                      .WithUpdatedDescription("Saved at: " + System.DateTime.Now);

            // You can add an image to saved game data (such as as screenshot)
            // byte[] pngData = <PNG AS BYTES>;
            // builder = builder.WithUpdatedPngCoverImage(pngData);

            SavedGameMetadataUpdate updatedMetadata = builder.Build();

            ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame;

            savedGameClient.CommitUpdate(currentGame, updatedMetadata, Data, OnWriteSavedGames);
        }
Example #28
0
        private void SaveEmpty(SavedGameRequestStatus status,
                               ISavedGameMetadata game)
        {
            byte[]   data       = ASCIIEncoding.ASCII.GetBytes("");
            TimeSpan playedTime = TimeSpan.FromSeconds(TotalPlaytime);

            SavedGameMetadataUpdate.Builder builder =
                new SavedGameMetadataUpdate.Builder().
                WithUpdatedPlayedTime(playedTime).
                WithUpdatedDescription("Saved game ad " + DateTime.Now);

            SavedGameMetadataUpdate update = builder.Build();

            ((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(game, update, data, SavedGameWritten);
            popupManager.text += " successfully!\n";
        }
Example #29
0
    private void SaveGame(ISavedGameMetadata data, byte[] _byte, TimeSpan playTime)
    {
        // 저장된 게임 열어서 시간비교하고
        ISavedGameClient savedClient = PlayGamesPlatform.Instance.SavedGame;

        SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder();

        builder = builder.WithUpdatedPlayedTime(playTime).WithUpdatedDescription("saved at " + DateTime.Now);
        SaveManager.cloudSaveDate = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
        SaveManager.instance.SaveString("cloudSaveDate", SaveManager.cloudSaveDate);

        SavedGameMetadataUpdate updatedData = builder.Build();

        // 데이터들을 Commit해줌
        savedClient.CommitUpdate(data, updatedData, _byte, OnSavedGameWritten);
    }
Example #30
0
            public void ResolveConflict(ISavedGameMetadata chosenMetadata, SavedGameMetadataUpdate metadataUpdate,
                                        byte[] updatedData)
            {
                var convertedMetadata = chosenMetadata as AndroidSnapshotMetadata;

                if (convertedMetadata != mOriginal && convertedMetadata != mUnmerged)
                {
                    Logger.e("Caller attempted to choose a version of the metadata that was not part " +
                             "of the conflict");
                    mCompleteCallback(SavedGameRequestStatus.BadInputError, null);
                    return;
                }

                using (var contentUpdate = mConflict.Call <AndroidJavaObject>("getResolutionSnapshotContents"))
                {
                    if (!contentUpdate.Call <bool>("writeBytes", updatedData))
                    {
                        Logger.e("Can't update snapshot contents during conflict resolution.");
                        mCompleteCallback(SavedGameRequestStatus.BadInputError, null);
                    }

                    using (var convertedMetadataChange = AsMetadataChange(metadataUpdate))
                        using (var task = mSnapshotsClient.Call <AndroidJavaObject>(
                                   "resolveConflict",
                                   mConflict.Call <string>("getConflictId"),
                                   convertedMetadata.JavaMetadata.Call <string>("getSnapshotId"),
                                   convertedMetadataChange,
                                   contentUpdate))
                        {
                            AndroidTaskUtils.AddOnSuccessListener <AndroidJavaObject>(
                                task,
                                dataOrConflict => mRetryFileOpen());

                            mAndroidSavedGameClient.AddOnFailureListenerWithSignOut(
                                task,
                                exception =>
                            {
                                Logger.d("ResolveConflict failed: " + exception.Call <string>("toString"));
                                var status = mAndroidSavedGameClient.mAndroidClient.IsAuthenticated()
                                    ? SavedGameRequestStatus.InternalError
                                    : SavedGameRequestStatus.AuthenticationError;
                                mCompleteCallback(status, null);
                            }
                                );
                        }
                }
            }