package com.hearthsim.event.effect; import com.hearthsim.card.Card; import com.hearthsim.card.CardInHandIndex; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; @FunctionalInterface public interface EffectHand { public default HearthTreeNode applyEffect(PlayerSide originSide, CardInHandIndex originIndex, PlayerSide targetSide, CardInHandIndex targetCardIndex, HearthTreeNode boardState) { Card origin = boardState.data_.getCard_hand(originSide, originIndex); Card targetCard = boardState.data_.getCard_hand(targetSide, targetCardIndex); return this.applyEffect(originSide, origin, targetSide, targetCard, boardState); } public default HearthTreeNode applyEffect(PlayerSide originSide, Card origin, PlayerSide targetSide, CardInHandIndex targetCardIndex, HearthTreeNode boardState) { Card targetCard = boardState.data_.getCard_hand(targetSide, targetCardIndex); return this.applyEffect(originSide, origin, targetSide, targetCard, boardState); } HearthTreeNode applyEffect(PlayerSide originSide, Card origin, PlayerSide targetSide, Card targetCard, HearthTreeNode boardState); }