public Tower(BaseTower baseTower, BaseRace race, float x, float y) { this.baseTower = baseTower; this.x = x; this.y = y; this.race = new Race(race, baseTower.getRaces()); cooldown = 0; health = baseTower.getHealth(); this.id = IDGenerator.getNextID(); }
public String getName() { return baseTower.getName(); }
public boolean instantAttack() { return baseTower.attacksInstantly(); }
public boolean attacksAllInRange() { return baseTower.attacksAllInRange(); }
public int getTotalUpgradeCount() { return baseTower.getTotalUpgradeCount(); }
public int getLevel() { return baseTower.getLevel(); }
public float getPower() { return baseTower.getPower(); }
public float getDefense() { return baseTower.getDefense() * race.getTowerDefenseModifier(); }
@Override public String getModel() { return baseTower.getName(); }
public void shot() { cooldown = baseTower.getAttackRate(); }
public float getSellValue() { return baseTower.getCost() / 2; }
public boolean attacksOnlyGround() { return !baseTower.attacksAir() && baseTower.attacksGround(); }
public float getCost() { return baseTower.getCost(); }
public boolean attacksAir() { return baseTower.attacksAir(); }
public boolean attacksGround() { return baseTower.attacksGround(); }
public float getDamage() { return baseTower.getDamage() * race.getTowerDamageModifier(); }
public float getFireRate() { return baseTower.getAttackRate() * race.getTowerAttackRateModifier(); }
public float getAttackRange() { return baseTower.getAttackRange(); }