public RoomDealer CreateRoom(ClientInfo client)
        {
            RoomDealer RoomCreated = new RoomDealer(Net, client, RoomIdentifier);

            RoomIdentifier += 1;
            Rooms.Add(RoomCreated);
            return(RoomCreated);
        }
        private void ManagedDogReturnHandler(ClientInfo client, Object request)
        {
            ManagedDogReturn pckt         = (ManagedDogReturn)request;
            RoomDealer       RoomOfClient = Rooms.FindRoomFromClientId(client.Id);

            RoomOfClient.GameInfo.Dog = pckt.Dog;
            RoomOfClient.GameInfo.DropCardsDogFromPlayerHand(pckt.Dog);
            Net.GetConnectionByClientId(RoomOfClient.RoomInfo.Players[RoomOfClient.StartingPlayer].Id).SendObject("YourTurnPlayCard", new YourTurnPlayCard());
        }
        private void IAmReadyHandler(ClientInfo client, Object request)
        {
            RoomDealer RoomOfClient = Rooms.FindRoomFromClientId(client.Id);

            RoomOfClient.GameInfo.PlayersInfo[client.Id].IsReady = true;
            if (RoomOfClient.IsAllPlayersReady())
            {
                RoomOfClient.StartGame();
            }
        }
        private void AskMovingIntoRoomHandler(ClientInfo client, Object request)
        {
            AskMovingIntoRoom pckt = (AskMovingIntoRoom)request;
            RoomDealer        room = Rooms.GetRoomFromRoomId(pckt.RoomId);

            if (room == null)
            {
                client.Instance.SendObject("MovingIntoRoomAnswer", new MovingIntoRoomAnswer(MovingIntoRoomAnswerType.FAIL));
                return;
            }
            if (room.RoomInfo.Players.Count() == 4)
            {
                client.Instance.SendObject("MovingIntoRoomAnswer", new MovingIntoRoomAnswer(MovingIntoRoomAnswerType.ROOM_FULL));
                return;
            }
            client.Instance.SendObject("MovingIntoRoomAnswer", new MovingIntoRoomAnswer(MovingIntoRoomAnswerType.OK));
            room.AddPlayer(client);
        }
        private void CallHandler(ClientInfo client, Object request)
        {
            Call       pckt = (Call)request;
            RoomDealer room = Rooms.FindRoomFromClientId(client.Id);

            room.GameInfo.SetPlayerCall(client.Id, pckt.Type);
            room.SendMessageToRoom("Call", pckt);
            if (room.GameInfo.IsAllPlayersSkiped())
            {
                room.GameCancelled();
            }
            else if (room.GameInfo.IsGameCallOver())
            {
                room.StartPlayerDogHandling();
            }
            else
            {
                Net.GetConnectionByClientId(room.GetNextPlayerIdTurnById(client.Id)).SendObject("YourTurnCall", new YourTurnCall());
            }
        }
        private void CardPlayedHandler(ClientInfo client, Object request)
        {
            CardPlayed pckt         = (CardPlayed)request;
            RoomDealer RoomOfClient = Rooms.FindRoomFromClientId(client.Id);

            RoomOfClient.GameInfo.PlayersInfo[client.Id].CardPlayedOnTable = pckt.Card;
            RoomOfClient.GameInfo.PlayersInfo[client.Id].RemoveCardPlayed(pckt.Card);
            RoomOfClient.SendMessageToRoom("CardPlayed", pckt);
            if (RoomOfClient.GameInfo.IsTurnOver())
            {
                RoomOfClient.HandleTurnOver();
            }
            else
            {
                if (RoomOfClient.GameInfo.IsFirstCardToPlayed())
                {
                    RoomOfClient.GameInfo.ColorPlayed = pckt.Card.Color;
                }
                Net.GetConnectionByClientId(RoomOfClient.GetNextPlayerIdTurnById(client.Id)).SendObject("YourTurnPlayCard", new YourTurnPlayCard());
            }
        }
 public void DeleteRoom(RoomDealer room)
 {
     Rooms.Remove(room);
 }
        private void AskCreateRoomHandler(ClientInfo client, Object request)
        {
            AskCreateRoom pckt = (AskCreateRoom)request;

            RoomDealer NewRoom = Rooms.CreateRoom(client);
        }