package game.habits;
import engine.classes.Colour;
import engine.geometry.Circle;
import engine.geometry.Vector;
import engine.hierarchy.DefaultHabit;
import engine.interfaces.RenderTarget;
import game.scenes.LevelScene;
public class MetalHabit extends DefaultHabit {
private DynamicHabit dynamic;
public MetalHabit(final DynamicHabit dynamic) {
this.dynamic = dynamic;
}
@Override
protected void onAdd() {
((LevelScene) getScene()).getSpace().putObject(this, getCircle().getBoundingPolygon());
}
@Override
protected void onUpdate() {
setVisible(false);
}
@Override
protected void onMove() {
// TODO: ensure this happens after dynamic's move event???
((LevelScene) getScene()).getSpace().putObject(this, getCircle().getBoundingPolygon());
}
public void applyImpulse(final Vector impulse) {
dynamic.applyImpulse(impulse);
setVisible(true);
}
public void addVelocity(final Vector impulse) {
dynamic.addVelocity(impulse);
setVisible(true);
}
public double getMass() {
return dynamic.getMass();
}
public Circle getCircle() {
return new Circle(dynamic.getPolygon().getMid(), 40); // TODO: use the correct size
}
@Override
protected void onDraw(RenderTarget target) {
target.fillCircle(getCircle(), new Colour(255, 0, 0, 64)); // TODO: remove once debugged
}
}