package com.hearthsim.card.minion.heroes;
import com.hearthsim.card.minion.Hero;
import com.hearthsim.card.minion.Minion;
import com.hearthsim.model.BoardModel;
import com.hearthsim.model.PlayerSide;
import com.hearthsim.util.tree.HearthTreeNode;
public class TestHero extends Hero {
public boolean enableHeroAbility = false;
private byte baseHealth_;
private String name_;
public TestHero() {
this("NoHero", (byte)30);
}
public TestHero(String name, byte health) {
this.name_ = name;
this.health_ = health;
this.baseHealth_ = health_;
this.maxHealth_ = health_;
this.heroTargetable_ = true;
}
@Override
public String getHeroClass() {
return "None";
}
@Override
public byte getBaseHealth() {
return this.baseHealth_;
}
@Override
public String getName() {
return this.name_;
}
@Override
public boolean canBeUsedOn(PlayerSide playerSide, Minion minion, BoardModel boardModel) {
if (!super.canBeUsedOn(playerSide, minion, boardModel)) {
return false;
}
return enableHeroAbility;
}
/**
* Use the hero ability on a given target
*
* Test Hero: Does nothing
*
* @param targetPlayerSide
* @param targetMinion
* The target minion
* @param boardState
*
* @return
*/
@Override
public HearthTreeNode useHeroAbility_core(PlayerSide targetPlayerSide, Minion targetMinion, HearthTreeNode boardState) {
if (this.enableHeroAbility) {
this.hasBeenUsed = true;
boardState.data_.getCurrentPlayer().subtractMana(HERO_ABILITY_COST);
return boardState;
}
return null;
}
@Override
public Hero deepCopy() {
TestHero copy = (TestHero)super.deepCopy();
copy.enableHeroAbility = this.enableHeroAbility;
copy.baseHealth_ = this.getBaseHealth();
copy.name_ = this.getName();
return copy;
}
}