package vooga.rts.gamedesign.sprite.gamesprites.interactive.buildings;
import java.awt.Dimension;
import vooga.rts.gamedesign.sprite.gamesprites.Projectile;
import vooga.rts.gamedesign.sprite.gamesprites.interactive.InteractiveEntity;
import vooga.rts.gamedesign.sprite.gamesprites.interactive.units.Unit;
import vooga.rts.gamedesign.strategy.attackstrategy.AttackStrategy;
import vooga.rts.gamedesign.strategy.attackstrategy.CanAttack;
import vooga.rts.gamedesign.strategy.attackstrategy.CannotAttack;
import vooga.rts.gamedesign.strategy.gatherstrategy.CannotGather;
import vooga.rts.gamedesign.strategy.occupystrategy.CanBeOccupied;
import vooga.rts.gamedesign.strategy.production.CannotProduce;
import vooga.rts.gamedesign.upgrades.UpgradeTree;
import vooga.rts.gamedesign.weapon.Gun;
import vooga.rts.gamedesign.weapon.Weapon;
import vooga.rts.util.Information;
import vooga.rts.util.Location3D;
import vooga.rts.util.Pixmap;
import vooga.rts.util.Sound;
/**
* A custom implementation of building. Instead of specifying type in XML, you
* can specify type with default values here.
*
* @author Francesco Agosti
*
*/
public class Tower extends Building {
private static Pixmap DEFAULTPIX = new Pixmap("barracks.jpeg");
private static Location3D DEFAULTLOC = new Location3D(100, 100, 100);
private static Dimension DEFAULTSIZE = new Dimension(50, 50);
private static Sound DEFAULTSOUND = new Sound("squirtle.wav");
private static int DEFAULTHEALTH = 100;
private static int DEFAULTBUILDTIME = 10;
private static int NOTEAM = 0;
private AttackStrategy myAttack = new CanAttack();
public Tower (int playerID) {
super(DEFAULTPIX, DEFAULTLOC, DEFAULTSIZE, DEFAULTSOUND, playerID, DEFAULTHEALTH,
DEFAULTBUILDTIME);
myAttack.addWeapon(new Weapon(new Projectile(Projectile.DEFAULT_PIC,
getWorldLocation(),
Projectile.DEFAULT_DIMENSION, getPlayerID(),
Projectile.DEFAULT_DAMAGE,
Projectile.DEFAULT_HEALTH,800),Weapon.DEFAULT_RANGE,
getWorldLocation(),
Weapon.DEFAULT_COOLDOWN_TIME));
}
public Tower() {
this(NOTEAM);
}
@Override
public void update(double elapsedTime) {
super.update(elapsedTime);
if (getOccupyStrategy().getOccupiers().size() > 0) {
setAttackStrategy(myAttack);
}
else {
setAttackStrategy(new CannotAttack());
}
}
}