package com.hearthsim.event.effect; import com.hearthsim.card.Card; import com.hearthsim.card.goblinsvsgnomes.spell.spareparts.*; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; import com.hearthsim.util.tree.RandomEffectNode; import java.util.ListIterator; /** * Created by oyachai on 8/11/15. */ public class EffectHeroAddSparePart<T extends Card> implements EffectHero<T> { public EffectHeroAddSparePart(){} @Override public HearthTreeNode applyEffect(PlayerSide targetSide, HearthTreeNode boardState) { if (boardState.numChildren() > 0) { ListIterator<HearthTreeNode> iter = boardState.getChildren().listIterator(); while (iter.hasNext()) { HearthTreeNode newNode = this.applyEffect(targetSide, iter.next()); if (newNode != null) { iter.set(newNode); } } } if (!boardState.data_.modelForSide(targetSide).isHandFull()) { boardState = new RandomEffectNode(boardState, null); for (Card sparePart : new Card[]{new ArmorPlating(), new EmergencyCoolant(), new FinickyCloakfield(), new ReversingSwitch(), new RustyHorn(), new TimeRewinder(), new WhirlingBlades()}) { HearthTreeNode ch = new HearthTreeNode(boardState.data_.deepCopy()); ch.data_.modelForSide(targetSide).getHand().add(sparePart); boardState.addChild(ch); } } return boardState; } }