private void HandleOnlineSessionEvent(AbstractSessionEvent sessionEvent) { var terminateEvent = sessionEvent as TerminateSessionEvent; if (terminateEvent != null) { TerminateSessionEvent.ExplainCauseToUser(terminateEvent.Cause); if (IsGameRunning()) { EndGame(EndGameType.Disconnect); } ExitGame(); EnterSubstate(OnlineSubstate.OnlineBoard); } var kickPlayerEvent = sessionEvent as KickPlayerEvent; if (kickPlayerEvent != null) { if (kickPlayerEvent.KickedPlayerId == Profile.Instance.CurrentProfile.UserHashId) { MessageHelper.ShowMessage("Vous avez mal à votre popotin!", "Le puissant serviteur de la reine du bal vous à expulsé du bal à coup de pied sur les fesses!"); ExitGame(); EnterSubstate(OnlineSubstate.OnlineBoard); } } var playerReadyEvent = sessionEvent as PlayerReadyEvent; if (playerReadyEvent != null) { } var startOnlineGame = sessionEvent as StartGameEvent; if (startOnlineGame != null) { _currentGame.Start(false); _currentSubState = OnlineSubstate.InGame; } var endOnlineGame = sessionEvent as EndOnlineGameEvent; if (endOnlineGame != null) { Console.WriteLine("**************** Received EndOnlineGameEvent ****************"); EndOnlineGameEvent.ExplainCauseToUser(endOnlineGame.EndCause); EndGame(endOnlineGame.EndCause); ExitGame(); EnterSubstate(OnlineSubstate.OnlineBoard); } var playerForfeit = sessionEvent as PlayerForfeitEvent; if (playerForfeit != null) { Console.WriteLine("**************** A player had forfeit ****************"); } }
private AbstractSessionEvent Convert(SessionEventMessage message) { AbstractSessionEvent sessionEvent = null; switch ((SessionEventMessage.OnlineSessionEventType)message.EventType) { case SessionEventMessage.OnlineSessionEventType.KickPlayerEvent: sessionEvent = JsonConvert.DeserializeObject <KickPlayerEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.TerminateOnlineSessionEvent: sessionEvent = JsonConvert.DeserializeObject <TerminateSessionEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.StartOnlineGameEvent: sessionEvent = JsonConvert.DeserializeObject <StartGameEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.PlayerReadyEvent: sessionEvent = JsonConvert.DeserializeObject <PlayerReadyEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.EndOnlineGameEvent: sessionEvent = JsonConvert.DeserializeObject <EndOnlineGameEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.PlayerForfeitEvent: sessionEvent = JsonConvert.DeserializeObject <PlayerForfeitEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.InvitationEvent: sessionEvent = JsonConvert.DeserializeObject <InvitationEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.MatchMakingSearchingEvent: sessionEvent = JsonConvert.DeserializeObject <MatchMakingSearchingEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.MatchMakingSyncEvent: sessionEvent = JsonConvert.DeserializeObject <MatchMakingSyncEvent>(message.JsonEvent); break; case SessionEventMessage.OnlineSessionEventType.MatchMakingGameInvitation: sessionEvent = JsonConvert.DeserializeObject <MatchMakingGameInvitation>(message.JsonEvent); break; } if (sessionEvent != null) { sessionEvent.SendToServer = false; } return(sessionEvent); }
private SessionEventMessage Convert(AbstractSessionEvent sessionEvent) { var message = new SessionEventMessage() { EventType = (int)sessionEvent.Type, JsonEvent = JsonConvert.SerializeObject(sessionEvent), OnlineSessionId = OnlineSession.Instance?.SessionId ?? "", UserToken = User.Instance.UserToken, Broadcast = sessionEvent.Broadcast }; return(message); }