package com.hearthsim.event.effect.conditional; import com.hearthsim.card.Card; import com.hearthsim.card.CharacterIndex; import com.hearthsim.event.effect.EffectCharacter; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; public class EffectCharacterConditional<T extends Card> implements EffectCharacter<T> { private final EffectCharacter<T> baseEffect; private final Conditional condition; private final PlayerSide conditionForSide; public EffectCharacterConditional(EffectCharacter<T> baseEffect, Conditional condition, PlayerSide conditionForSide) { this.baseEffect = baseEffect; this.condition = condition; this.conditionForSide = conditionForSide; } @Override public HearthTreeNode applyEffect(PlayerSide targetSide, CharacterIndex targetCharacterIndex, HearthTreeNode boardState) { if (condition.isSatisfied(conditionForSide, boardState)) { return baseEffect.applyEffect(targetSide, targetCharacterIndex, boardState); } else { return boardState; } } }