private void PlayerEnter(Game game, IHanabiPlayer player, NicknameType nickname) { RequestEnterGame request = new RequestEnterGame(); request.Nickname = nickname.nickname; Command command = new Command(); command.action = ActionType.EnterGame.ToString(); command.payload = JsonConvert.SerializeObject(request); game.DispatchRequest(player, JsonConvert.SerializeObject(command)); }
private void PlayerEnterGame(IHanabiPlayer player, RequestEnterGame request) { ExitGameResult result = ExitGameResult.Fail; NicknameType nickname = new NicknameType(request.Nickname); if (!Players.ContainsKey(nickname)) { result = ExitGameResult.Success; player.OnEnterGame(nickname); Players.Add(player.Nickname, player); } ResponseEnterGame response = new ResponseEnterGame(result); SendCommand(player, ActionType.EnterGame, response); }
public void DispatchRequest(IPlayer player, string message) { IHanabiPlayer hanabiPlayer = player as IHanabiPlayer; if (hanabiPlayer == null) { return; } Command command = JsonConvert.DeserializeObject <Command>(message); ActionType action = ( ActionType )Enum.Parse(typeof(ActionType), command.Action, false); switch (action) { case ActionType.EnterGame: { RequestEnterGame request = JsonConvert.DeserializeObject <RequestEnterGame>(command.Payload); PlayerEnterGame(hanabiPlayer, request); break; } case ActionType.ExitGame: { RequestExitGame request = JsonConvert.DeserializeObject <RequestExitGame>(command.Payload); PlayerExitGame(hanabiPlayer, request); break; } case ActionType.GetRoomList: { PlayerGetRoomList(hanabiPlayer); break; } case ActionType.JoinRoom: { RequestJoinRoom request = JsonConvert.DeserializeObject <RequestJoinRoom>(command.Payload); PlayerJoinRoom(hanabiPlayer, request); break; } case ActionType.QuitRoom: { RequestQuitRoom request = JsonConvert.DeserializeObject <RequestQuitRoom>(command.Payload); PlayerQuitRoom(hanabiPlayer, request); break; } case ActionType.Message: { // TODO: break; } case ActionType.Ready: { PlayerReady(hanabiPlayer); break; } case ActionType.PromptCard: { RequestPromptCard request = JsonConvert.DeserializeObject <RequestPromptCard>(command.Payload); PlayerPrompt(hanabiPlayer, request); break; } case ActionType.PlayCard: { RequestPlayCard request = JsonConvert.DeserializeObject <RequestPlayCard>(command.Payload); PlayerPlayCard(hanabiPlayer, request); break; } case ActionType.DiscardCard: { RequestDiscardCard request = JsonConvert.DeserializeObject <RequestDiscardCard>(command.Payload); PlayerDiscardCard(hanabiPlayer, request); break; } default: break; } }