public ServerMessage CreateMessage(byte[] bytes) { var messageType = (bytes?.FirstOrDefault() ?? 0).GetMessageType(); switch (messageType) { case ServerMessageType.PlayerJoined: var playerJoinedMessage = new PlayerJoinedMessage(bytes); Players.Add(playerJoinedMessage.Player); return(playerJoinedMessage); case ServerMessageType.StartOfGame: Players.Clear(); ResetGameTime(); return(new StartOfGameMessage(bytes)); case ServerMessageType.StartOfDay: case ServerMessageType.StartOfNight: Trial.Clear(); MoveTimeForward(); return(new MoveTimeForwardMessage(bytes)); case ServerMessageType.PlayerVote: var playerVoteMessage = new PlayerVoteMessage(bytes); Trial.AddVote(playerVoteMessage); return(playerVoteMessage); case ServerMessageType.PlayerOnStand: var playerOnStandMessage = new PlayerOnStandMessage(bytes); Trial.SetPlayerOnStand(playerOnStandMessage); return(playerOnStandMessage); case ServerMessageType.VoteVerdict: var voteVerdictMessage = new VoteVerdictMessage(bytes); Trial.AddVerdict(voteVerdictMessage); return(voteVerdictMessage); case ServerMessageType.PlayerIsGuilty: case ServerMessageType.PlayerIsInnocent: Trial.Complete(); return(new ServerMessage(bytes)); case ServerMessageType.Chat: return(new ChatMessage(bytes)); case ServerMessageType.PlayerDead: return(new PlayerDeadMessage(bytes)); case ServerMessageType.LocalPlayerReport: return(new LocalPlayerReportMessage(bytes)); case ServerMessageType.MafiaPlayersReport: return(new MafiaPlayersReportMessage(bytes)); case ServerMessageType.MayorRevealed: return(new MayorRevealedMessage(bytes)); case ServerMessageType.PlayerRevived: return(new PlayerRevivedMessage(bytes)); default: return(new ServerMessage(bytes)); } }
public void SetPlayerOnStand(PlayerOnStandMessage message) { _playerOnStand = message.Player; var votesForStand = _votes.Where(v => v.PlayerTo == _playerOnStand).ToList(); for (int i = 0; i < votesForStand.Count; i++) { votesForStand[i].Order = i + 1; } }