package com.hearthsim.event.effect; import com.hearthsim.card.Card; import com.hearthsim.model.BoardModel; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; @FunctionalInterface public interface SimpleEffectInterface<T extends Card, V> { public void applyEffect(PlayerSide originSide, T origin, PlayerSide targetSide, V targetIndex, BoardModel board); public default HearthTreeNode applyEffect(PlayerSide originSide, T origin, PlayerSide targetSide, V targetIndex, HearthTreeNode boardState) { this.applyEffect(originSide, origin, targetSide, targetIndex, boardState.data_); return boardState; } }