package audioProject.entities;
import java.awt.Graphics2D;
import toritools.entity.Entity;
import toritools.entity.Level;
import toritools.entity.sprite.AbstractSprite.AbstractSpriteAdapter;
import toritools.math.Vector2;
import toritools.scripting.EntityScript.EntityScriptAdapter;
import toritools.scripting.ScriptUtils;
import audioProject.AudioProject;
public class BadBullet extends Entity {
/**
* Build a bad booooleeeeet
*
* @param position
* the starting position of bullet.
* @param speed
* the delta per update.
*/
public BadBullet(final Vector2 position, final Vector2 speed, final float radius) {
type = "BadBullet";
getVariableCase().setVar("damage", "5");
layer = 2;
pos = position;
dim = Vector2.ONE.scale(radius);
addScript(new EntityScriptAdapter() {
boolean explodeDeath = true;
@Override
public void onUpdate(Entity self, float time, Level level) {
if (!ScriptUtils.isColliding(level, self)) {
level.despawnEntity(self);
explodeDeath = false;
}
self.setPos(self.getPos().add(speed.scale(time)));
}
@Override
public void onDeath(Entity self, Level level, boolean isRoomExit) {
if (explodeDeath)
level.spawnEntity(new Explosion(self.getPos(), AudioProject.enemyColor, self.getDim().x, 20));
}
});
setSprite(new AbstractSpriteAdapter() {
@Override
public void draw(Graphics2D g, Entity self) {
g.setColor(AudioProject.enemyColor);
g.fillOval((int) self.getPos().x, (int) (self.getPos().y), (int) self.getDim().x, (int) self.getDim().y);
}
});
}
}