package com.hearthsim.event.effect; import com.hearthsim.card.Card; import com.hearthsim.event.deathrattle.DeathrattleAction; import com.hearthsim.model.PlayerModel; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; public class EffectHeroWeaponDestroy<T extends Card> implements EffectHero<T> { // -1 means destroy it completely private final int durabilityLoss; public EffectHeroWeaponDestroy() { this(-1); } public EffectHeroWeaponDestroy(int durabilityLoss) { this.durabilityLoss = durabilityLoss; } @Override public HearthTreeNode applyEffect(PlayerSide targetSide, HearthTreeNode boardState) { DeathrattleAction action = null; PlayerModel targetPlayer = boardState.data_.modelForSide(targetSide); if (this.durabilityLoss < 0) { action = targetPlayer.getHero().destroyWeapon(); } else { boolean hasWeapon = targetPlayer.getHero().getWeapon() != null; if (hasWeapon) { targetPlayer.getHero().getWeapon().useWeaponCharge(this.durabilityLoss); action = targetPlayer.getHero().checkForWeaponDeath(); } } if (action != null) { boardState = action.performAction(null, targetSide, boardState); } return boardState; } public static final EffectHeroWeaponDestroy<Card> DESTROY = new EffectHeroWeaponDestroy<>(); }