Exemplo n.º 1
0
        private void ProcessPlayerTurnData(PlayersTurnData data, int clientID)
        {
            Player player = players.FirstOrDefault(p => p.ClientID == clientID);

            if (player == null)
            {
                Console.WriteLine($"Player {clientID} doesn't exist");
                return;
            }
            if (player.Match == null)
            {
                Console.WriteLine($"Player {clientID} isn't in game");
                return;
            }

            GameMatch match = player.Match;

            if (!match.IsRunning)
            {
                Console.WriteLine($"Match isn't running");
                return;
            }

            if (match.Player1 == player)
            {
                Server.SendDataToClient(match.Player2.ClientID, (int)DataTypes.PlayersTurnData, data);
            }
            else
            {
                Server.SendDataToClient(match.Player1.ClientID, (int)DataTypes.PlayersTurnData, data);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Handles click on some object
        /// </summary>
        /// <param name="gameObject">Object that was clicked</param>
        /// <param name="notifyServer"></param>
        public void Handle(GameObject gameObject, bool notifyServer = true)
        {
            if (gameObject.TryGetComponent <Card>(out Card card))
            {
                Debug.Log($"Handling card {card.Index}");
                if (lastActive == card)
                {
                    return;
                }
                if (card.State == CardState.Revealed)
                {
                    return;
                }
                if (card.State == CardState.Unactive)
                {
                    if (GameSettings.IsOnline && notifyServer)
                    {
                        PlayersTurnData data = new PlayersTurnData();
                        data.CardRevealedX = card.X;
                        data.CardRevealedY = card.Y;
                        NetworkManager.Instance.SendPlayersTurn(data);
                    }
                    PlayCardFlipSound();
                    card.State = CardState.Active;
                }
                if (lastActive == null)
                {
                    lastActive = card;
                }
                else
                {
                    isAnimating = true;
                    PlayCardFlipSound();
                    gameManager.StartCoroutine(EndAnimating());

                    if (lastActive.Index == card.Index)
                    {
                        Debug.Log($"Match");
                        Match(lastActive, card);
                        gameManager.StartCoroutine(PlayMatchSound(0.65F));
                    }
                    else
                    {
                        Debug.Log($"Unmatch");
                        Unmatch(lastActive, card);
                        gameManager.StartCoroutine(PlayCardFlipBackSound(1F));
                    }
                    lastActive = null;
                }
            }
        }
Exemplo n.º 3
0
 public void SendPlayersTurn(PlayersTurnData playersTurnData)
 {
     client.SendData((int)DataTypes.PlayersTurnData, playersTurnData);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Handles click on card by X Y
 /// </summary>
 /// <param name="data"></param>
 public void Handle(PlayersTurnData data)
 {
     Handle(cards[data.CardRevealedX][data.CardRevealedY].gameObject, false);
 }