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); } }
/// <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; } } }
public void SendPlayersTurn(PlayersTurnData playersTurnData) { client.SendData((int)DataTypes.PlayersTurnData, playersTurnData); }
/// <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); }