/// <summary> /// Invokes the method that chooses the card. /// </summary> /// <returns>The card chosen.</returns> internal Card InvokeChooseCard() { if (!Board.Instance.IsPlayTime) { throw new WrongPhaseException("A player can play a card only during the playtime phase", "Playtime"); } Card c = _controller.ChooseCard(); if (c == null) { return(null); } if (c.initialPlayer != this || !c.IsPlayable) { throw new WrongCardException("This can't play this card", c); } return(c); }