internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId, NativeTurnBasedMatch match) { // Capture the current value of the delegate to protect against racing updates. var currentDelegate = mMatchDelegate; if (currentDelegate == null) { return; } // Ignore REMOVED events - this plugin has no use for them. if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVE event for match " + matchId); return; } bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; match.ReferToMe(); Callbacks.AsCoroutine(WaitForLogin(() => { currentDelegate(match.AsTurnBasedMatch(mNativeClient.GetUserId()), shouldAutolaunch); match.ForgetMe(); })); }
private Action <TurnBasedManager.TurnBasedMatchResponse> BridgeMatchToUserCallback(Action <UIStatus, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> userCallback) { return(delegate(TurnBasedManager.TurnBasedMatchResponse callbackResult) { using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match()) { if (nativeTurnBasedMatch == null) { UIStatus arg = UIStatus.InternalError; switch (callbackResult.ResponseStatus()) { case CommonErrorStatus.MultiplayerStatus.VALID: arg = UIStatus.Valid; break; case CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE: arg = UIStatus.Valid; break; case CommonErrorStatus.MultiplayerStatus.ERROR_INTERNAL: arg = UIStatus.InternalError; break; case CommonErrorStatus.MultiplayerStatus.ERROR_NOT_AUTHORIZED: arg = UIStatus.NotAuthorized; break; case CommonErrorStatus.MultiplayerStatus.ERROR_VERSION_UPDATE_REQUIRED: arg = UIStatus.VersionUpdateRequired; break; case CommonErrorStatus.MultiplayerStatus.ERROR_TIMEOUT: arg = UIStatus.Timeout; break; } userCallback(arg, null); } else { GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(mNativeClient.GetUserId()); Logger.d("Passing converted match to user callback:" + turnBasedMatch); userCallback(UIStatus.Valid, turnBasedMatch); } } }); }
private Action <TurnBasedManager.TurnBasedMatchResponse> BridgeMatchToUserCallback(Action <GooglePlayGames.BasicApi.UIStatus, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> userCallback) { return((Action <TurnBasedManager.TurnBasedMatchResponse>)(callbackResult => { using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match()) { if (nativeTurnBasedMatch == null) { GooglePlayGames.BasicApi.UIStatus uiStatus = GooglePlayGames.BasicApi.UIStatus.InternalError; switch (callbackResult.ResponseStatus() + 5) { case ~(CommonErrorStatus.MultiplayerStatus.ERROR_INTERNAL | CommonErrorStatus.MultiplayerStatus.VALID): uiStatus = GooglePlayGames.BasicApi.UIStatus.Timeout; break; case CommonErrorStatus.MultiplayerStatus.VALID: uiStatus = GooglePlayGames.BasicApi.UIStatus.VersionUpdateRequired; break; case CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE: uiStatus = GooglePlayGames.BasicApi.UIStatus.NotAuthorized; break; case CommonErrorStatus.MultiplayerStatus.VALID | CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE: uiStatus = GooglePlayGames.BasicApi.UIStatus.InternalError; break; case ~CommonErrorStatus.MultiplayerStatus.ERROR_MATCH_ALREADY_REMATCHED: uiStatus = GooglePlayGames.BasicApi.UIStatus.Valid; break; case ~CommonErrorStatus.MultiplayerStatus.ERROR_INACTIVE_MATCH: uiStatus = GooglePlayGames.BasicApi.UIStatus.Valid; break; } userCallback(uiStatus, (GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch)null); } else { GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(this.mNativeClient.GetUserId()); Logger.d("Passing converted match to user callback:" + (object)turnBasedMatch); userCallback(GooglePlayGames.BasicApi.UIStatus.Valid, turnBasedMatch); } } })); }
public void AcceptFromInbox(Action <bool, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> callback) { callback = Callbacks.AsOnGameThreadCallback(callback); mTurnBasedManager.ShowInboxUI(delegate(TurnBasedManager.MatchInboxUIResponse callbackResult) { using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match()) { if (nativeTurnBasedMatch == null) { callback(false, null); } else { GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(mNativeClient.GetUserId()); Logger.d("Passing converted match to user callback:" + turnBasedMatch); callback(true, turnBasedMatch); } } }); }
private void FindEqualVersionMatch(GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch match, Action <bool> onFailure, Action <NativeTurnBasedMatch> onVersionMatch) { mTurnBasedManager.GetMatch(match.MatchId, delegate(TurnBasedManager.TurnBasedMatchResponse response) { using (NativeTurnBasedMatch nativeTurnBasedMatch = response.Match()) { if (nativeTurnBasedMatch == null) { Logger.e($"Could not find match {match.MatchId}"); onFailure(false); } else if (nativeTurnBasedMatch.Version() != match.Version) { Logger.e($"Attempted to update a stale version of the match. Expected version was {match.Version} but current version is {nativeTurnBasedMatch.Version()}."); onFailure(false); } else { onVersionMatch(nativeTurnBasedMatch); } } }); }
private void FindEqualVersionMatch(GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch match, Action <bool> onFailure, Action <NativeTurnBasedMatch> onVersionMatch) { this.mTurnBasedManager.GetMatch(match.MatchId, (Action <TurnBasedManager.TurnBasedMatchResponse>)(response => { using (NativeTurnBasedMatch nativeTurnBasedMatch = response.Match()) { if (nativeTurnBasedMatch == null) { Logger.e(string.Format("Could not find match {0}", (object)match.MatchId)); onFailure(false); } else if ((int)nativeTurnBasedMatch.Version() != (int)match.Version) { Logger.e(string.Format("Attempted to update a stale version of the match. Expected version was {0} but current version is {1}.", (object)match.Version, (object)nativeTurnBasedMatch.Version())); onFailure(false); } else { onVersionMatch(nativeTurnBasedMatch); } } })); }
internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId, NativeTurnBasedMatch match) { Action <GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch, bool> currentDelegate = mMatchDelegate; if (currentDelegate != null) { if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVE event for match " + matchId); } else { bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; match.ReferToMe(); Callbacks.AsCoroutine(WaitForLogin(delegate { currentDelegate(match.AsTurnBasedMatch(mNativeClient.GetUserId()), shouldAutolaunch); match.ForgetMe(); })); } } }
internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId, NativeTurnBasedMatch match) { // ISSUE: object of a compiler-generated type is created // ISSUE: variable of a compiler-generated type NativeTurnBasedMultiplayerClient.\u003CHandleMatchEvent\u003Ec__AnonStorey154 eventCAnonStorey154 = new NativeTurnBasedMultiplayerClient.\u003CHandleMatchEvent\u003Ec__AnonStorey154(); // ISSUE: reference to a compiler-generated field eventCAnonStorey154.match = match; // ISSUE: reference to a compiler-generated field eventCAnonStorey154.\u003C\u003Ef__this = this; // ISSUE: reference to a compiler-generated field eventCAnonStorey154.currentDelegate = this.mMatchDelegate; // ISSUE: reference to a compiler-generated field if (eventCAnonStorey154.currentDelegate == null) { return; } if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVE event for match " + matchId); } else { // ISSUE: reference to a compiler-generated field eventCAnonStorey154.shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; // ISSUE: reference to a compiler-generated field eventCAnonStorey154.match.ReferToMe(); // ISSUE: reference to a compiler-generated method Callbacks.AsCoroutine(this.WaitForLogin(new Action(eventCAnonStorey154.\u003C\u003Em__7E))); } }