/** * Returns player's card. * * @param player who is on turn. * @return Card object instance or null. */ public Card getPlayMethodCard(final Player player) { final Card attackCard = game.getTrickCards().getAttackCard(); if (attackCard != null && canHook(player, attackCard.getSuit())) { if (player.getCards().hasSuitCard(attackCard.getSuit())) { final Card handCard = game.getTrickCards().getHandAttackSuitCard(); final Card card = player.getCards().findMaxSuitCard(attackCard.getSuit()); if (card != null && handCard != null) { if (isMeterSuitCard(player, card) && card.compareTo(handCard) > 0) { return card; } if (isMaxSuitCardLeft(card, true)) { Card maxAboveCard = player.getCards().findMinAboveCard(handCard); if (maxAboveCard != null) { return maxAboveCard; } } else { if (card.compareTo(handCard) > 0) { return card; } } } } } return null; }