public void OnCardClicked(CardRenderer cardController) { Debug.Log("Clicked: " + cardController.name); var state = gameField == null ? GameFieldState.InTurn : gameField.GameState; if (onSpecialClickHandlers.ContainsKey(SpecialState)) { onSpecialClickHandlers[SpecialState].Invoke(cardController); return; } else if (onClickHandlers.ContainsKey(state)) { onClickHandlers[state].Invoke(cardController); return; } if (!IsMyTurn) { return; } if (cardController.card == null) { return; } if (cardController.card is EnergyCard) { StartAttachingEnergy((EnergyCard)cardController.card); } else if (cardController.card is TrainerCard) { if (Player.Hand.Contains(cardController.card)) { NetworkManager.Instance.gameService.PlayCard(gameField.Id, cardController.card.Id); } else { cardController.DisplayPopup(); } } else { cardController.DisplayPopup(); } }