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 ****************");
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }