Ejemplo n.º 1
0
        private void PlayerQuitRoom(IHanabiPlayer player, RequestQuitRoom request)
        {
            RoomInfo       roomInfo = new RoomInfo();
            QuitRoomResult result   = QuitRoomResult.Fail;

            if (player.RoomStatus != PlayerRoomStatus.Idle)
            {
                RoomIndexType roomIndex = new RoomIndexType(request.RoomIndex);
                if (Rooms.ContainsKey(roomIndex))
                {
                    Room room = Rooms[roomIndex];
                    room.Players.Remove(player);
                    roomInfo = room.Info;
                    player.OnQuitRoom();

                    if (room.Players.Count == 0)
                    {
                        room.Clear();
                    }
                    result = QuitRoomResult.Success;
                }
            }

            ResponseQuitRoom response = new ResponseQuitRoom();

            response.Result = result;
            response.Room   = roomInfo;

            SendCommand(player, ActionType.QuitRoom, response);
        }
Ejemplo n.º 2
0
        public void PlayerDisconnect(IPlayer player)
        {
            Player hanabiPlayer = player as Player;

            if (hanabiPlayer == null)
            {
                return;
            }

            if (hanabiPlayer.Room != null)
            {
                RequestQuitRoom request = new RequestQuitRoom();
                request.RoomIndex = hanabiPlayer.Room.RoomIndex.Index;
                PlayerQuitRoom(hanabiPlayer, request);
            }

            if (player.GameStatus != PlayerGameStatus.Idle)
            {
                RequestExitGame request = new RequestExitGame();
                request.Nickname = player.Nickname.Value;
                PlayerExitGame(hanabiPlayer, request);
            }

            Players.Remove(player.Nickname);
        }
Ejemplo n.º 3
0
        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;
            }
        }