package com.weem.epicinventor.placeable;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.monster.*;
import java.awt.*;
public class AutoXBow extends Building {
private static final long serialVersionUID = 10000L;
private float recastTotalTime;
private float RECAST_TIME = 1.0f;
private boolean canFire = true;
private final static int MAX_RANGE = 300;
public AutoXBow(PlaceableManager pm, Registry rg, String sm, String am, int x, int y, Placeable.State cs) {
super(pm, rg, sm, am, x, y, cs);
type = "AutoXBow";
totalBuildTime = 90;
totalHitPoints = 560;
powerRequired = 10;
powerGenerated = 0;
hitPoints = totalHitPoints;
}
@Override
public void setTransient(Registry rg) {
totalHitPoints = 560;
super.setTransient(rg);
}
@Override
public void update() {
super.update();
if(isActivated()) {
if(canFire)
{
//target the closest mob
Monster m = registry.getMonsterManager().getClosestWithinMax(getCenterPoint(), MAX_RANGE);
if(m != null) {
if(m.getMapX() > mapX) {
facingRight = true;
} else {
facingRight = false;
}
registry.getProjectileManager().createProjectile(registry.getPlayerManager().getCurrentPlayer(),
"Arrow",
20,
new Point(
getMapX(),
getMapY()),
new Point(
m.getCenterPoint().x,
m.getCenterPoint().y),
true,
true,
false,
70);
canFire = false;
recastTotalTime = 0;
} else {
facingRight = true;
}
} else {
long p = registry.getImageLoader().getPeriod();
recastTotalTime = (recastTotalTime
+ registry.getImageLoader().getPeriod())
% (long) (1000 * RECAST_TIME * 2);
if ((recastTotalTime / (RECAST_TIME * 1000)) > 1) {
canFire = true;
recastTotalTime = 0;
}
}
}
}
}