package com.hearthsim.card.minion; import com.hearthsim.card.Card; import com.hearthsim.card.CharacterIndex; import com.hearthsim.event.effect.EffectCharacter; import com.hearthsim.event.filter.FilterCharacterInterface; import com.hearthsim.model.BoardModel; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; @Deprecated public interface MinionTargetableBattlecry extends MinionBattlecryInterface { /** * Derived classes should implement this function for targtable battlecries. * * @param targetCharacterIndex * @param boardState * @return */ public HearthTreeNode useTargetableBattlecry_core(PlayerSide targetSide, CharacterIndex targetCharacterIndex, HearthTreeNode boardState); public boolean canTargetWithBattlecry(PlayerSide originSide, Card origin, PlayerSide targetSide, CharacterIndex targetCharacterIndex, BoardModel board); @Override public default FilterCharacterInterface getBattlecryFilter() { return (PlayerSide originSide, Card origin, PlayerSide targetSide, Minion targetCharacter, BoardModel board) -> this.canTargetWithBattlecry(originSide, origin, targetSide, board.modelForSide(targetSide).getIndexForCharacter(targetCharacter), board); } @Override public default EffectCharacter<Minion> getBattlecryEffect() { return this::useTargetableBattlecry_core; } }