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()); } })); } }
public void ReadBinaryData(ISavedGameMetadata metadata, Action <SavedGameRequestStatus, byte[]> completedCallback) { Misc.CheckNotNull <ISavedGameMetadata>(metadata); Misc.CheckNotNull <Action <SavedGameRequestStatus, byte[]> >(completedCallback); completedCallback = NativeSavedGameClient.ToOnGameThread <SavedGameRequestStatus, byte[]>(completedCallback); NativeSnapshotMetadata metadata1 = metadata as NativeSnapshotMetadata; if (metadata1 == null) { Logger.e("Encountered metadata that was not generated by this ISavedGameClient"); completedCallback(SavedGameRequestStatus.BadInputError, (byte[])null); } else if (!metadata1.IsOpen) { Logger.e("This method requires an open ISavedGameMetadata."); completedCallback(SavedGameRequestStatus.BadInputError, (byte[])null); } else { this.mSnapshotManager.Read(metadata1, (Action <GooglePlayGames.Native.PInvoke.SnapshotManager.ReadResponse>)(response => { if (!response.RequestSucceeded()) { completedCallback(NativeSavedGameClient.AsRequestStatus(response.ResponseStatus()), (byte[])null); } else { completedCallback(SavedGameRequestStatus.Success, response.Data()); } })); } }
public void ShowSelectSavedGameUI(string uiTitle, uint maxDisplayedSavedGames, bool showCreateSaveUI, bool showDeleteSaveUI, Action <SelectUIStatus, ISavedGameMetadata> callback) { Misc.CheckNotNull <string>(uiTitle); Misc.CheckNotNull <Action <SelectUIStatus, ISavedGameMetadata> >(callback); callback = NativeSavedGameClient.ToOnGameThread <SelectUIStatus, ISavedGameMetadata>(callback); if (maxDisplayedSavedGames <= 0U) { Logger.e("maxDisplayedSavedGames must be greater than 0"); callback(SelectUIStatus.BadInputError, (ISavedGameMetadata)null); } else { this.mSnapshotManager.SnapshotSelectUI(showCreateSaveUI, showDeleteSaveUI, maxDisplayedSavedGames, uiTitle, (Action <GooglePlayGames.Native.PInvoke.SnapshotManager.SnapshotSelectUIResponse>)(response => callback(NativeSavedGameClient.AsUIStatus(response.RequestStatus()), !response.RequestSucceeded() ? (ISavedGameMetadata)null : (ISavedGameMetadata)response.Data()))); } }
public void FetchAllSavedGames(GooglePlayGames.BasicApi.DataSource source, Action <SavedGameRequestStatus, List <ISavedGameMetadata> > callback) { Misc.CheckNotNull <Action <SavedGameRequestStatus, List <ISavedGameMetadata> > >(callback); callback = NativeSavedGameClient.ToOnGameThread <SavedGameRequestStatus, List <ISavedGameMetadata> >(callback); this.mSnapshotManager.FetchAll(NativeSavedGameClient.AsDataSource(source), (Action <GooglePlayGames.Native.PInvoke.SnapshotManager.FetchAllResponse>)(response => { if (!response.RequestSucceeded()) { callback(NativeSavedGameClient.AsRequestStatus(response.ResponseStatus()), new List <ISavedGameMetadata>()); } else { callback(SavedGameRequestStatus.Success, response.Data().Cast <ISavedGameMetadata>().ToList <ISavedGameMetadata>()); } })); }
public void OpenWithManualConflictResolution(string filename, GooglePlayGames.BasicApi.DataSource source, bool prefetchDataOnConflict, ConflictCallback conflictCallback, Action <SavedGameRequestStatus, ISavedGameMetadata> completedCallback) { Misc.CheckNotNull <string>(filename); Misc.CheckNotNull <ConflictCallback>(conflictCallback); Misc.CheckNotNull <Action <SavedGameRequestStatus, ISavedGameMetadata> >(completedCallback); conflictCallback = this.ToOnGameThread(conflictCallback); completedCallback = NativeSavedGameClient.ToOnGameThread <SavedGameRequestStatus, ISavedGameMetadata>(completedCallback); if (!NativeSavedGameClient.IsValidFilename(filename)) { Logger.e("Received invalid filename: " + filename); completedCallback(SavedGameRequestStatus.BadInputError, (ISavedGameMetadata)null); } else { this.InternalManualOpen(filename, source, prefetchDataOnConflict, conflictCallback, completedCallback); } }
public void OpenWithAutomaticConflictResolution(string filename, GooglePlayGames.BasicApi.DataSource source, ConflictResolutionStrategy resolutionStrategy, Action <SavedGameRequestStatus, ISavedGameMetadata> callback) { Misc.CheckNotNull <string>(filename); Misc.CheckNotNull <Action <SavedGameRequestStatus, ISavedGameMetadata> >(callback); callback = NativeSavedGameClient.ToOnGameThread <SavedGameRequestStatus, ISavedGameMetadata>(callback); if (!NativeSavedGameClient.IsValidFilename(filename)) { Logger.e("Received invalid filename: " + filename); callback(SavedGameRequestStatus.BadInputError, (ISavedGameMetadata)null); } else { this.OpenWithManualConflictResolution(filename, source, false, (ConflictCallback)((resolver, original, originalData, unmerged, unmergedData) => { switch (resolutionStrategy) { case ConflictResolutionStrategy.UseLongestPlaytime: if (original.TotalTimePlayed >= unmerged.TotalTimePlayed) { resolver.ChooseMetadata(original); break; } resolver.ChooseMetadata(unmerged); break; case ConflictResolutionStrategy.UseOriginal: resolver.ChooseMetadata(original); break; case ConflictResolutionStrategy.UseUnmerged: resolver.ChooseMetadata(unmerged); break; default: Logger.e("Unhandled strategy " + (object)resolutionStrategy); callback(SavedGameRequestStatus.InternalError, (ISavedGameMetadata)null); break; } }), callback); } }