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")); } }
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); }
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()); } })); } }
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); } }); }
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); }
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(); }); }
//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); } }
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); } }
/// <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"; } }
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); } }
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 }
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); } }
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); }
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); }
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); }); } }
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); }
// 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); } }
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); }
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); }
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); }
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"; }
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); }
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); } ); } } }