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); }
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); } }
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(); } }