Ejemplo n.º 1
0
        public async Task <bool> OnHandle(MessageContext context, CPlayerGameModeChangeReqMessage message)
        {
            var session = context.GetSession <Session>();
            var plr     = session.Player;
            var room    = plr.Room;

            // Can only change between modes in lobby
            if (plr.State != PlayerState.Lobby)
            {
                return(true);
            }

            // gm mode should always be spectator
            if (plr.IsInGMMode)
            {
                return(true);
            }

            var error = room.TeamManager.ChangeMode(plr, message.Mode);

            switch (error)
            {
            case TeamChangeModeError.Full:
                session.Send(new SChangeTeamFailAckMessage(ChangeTeamResult.Full));
                break;

            case TeamChangeModeError.PlayerIsReady:
                session.Send(new SChangeTeamFailAckMessage(ChangeTeamResult.AlreadyReady));
                break;
            }

            return(true);
        }
Ejemplo n.º 2
0
        public void CPlayerGameModeChangeReq(GameSession session, CPlayerGameModeChangeReqMessage message)
        {
            var plr = session.Player;

            try
            {
                plr.Room.TeamManager.ChangeMode(plr, message.Mode);
            }
            catch (RoomException ex)
            {
                Logger.ForAccount(plr)
                .Error(ex, "Failed to change mode to {mode}", message.Mode);
            }
        }
Ejemplo n.º 3
0
        public void CPlayerGameModeChangeReq(GameSession session, CPlayerGameModeChangeReqMessage message)
        {
            var plr = session.Player;

            try
            {
                plr.Room.TeamManager.ChangeMode(plr, message.Mode);
            }
            catch (RoomException ex)
            {
                _logger.Error()
                .Account(plr)
                .Exception(ex)
                .Message("Failed to change mode to {0}", message.Mode)
                .Write();
            }
        }