package game.actors;
import engine.classes.Colour;
import engine.geometry.Circle;
import engine.geometry.Polygon;
import engine.geometry.Vector;
import engine.hierarchy.DefaultActor;
import engine.interfaces.Clock;
import engine.interfaces.Keyboard;
import engine.interfaces.Mouse;
import engine.interfaces.RenderTarget;
import engine.interfaces.Mouse.Button;
import game.habits.DynamicHabit;
import game.habits.GravityHabit;
import game.habits.MetalHabit;
public class CoinActor extends DefaultActor {
private static final Colour colour = new Colour(64, 128, 255);
private DynamicHabit dynamic;
private MetalHabit metal;
private Vector startPosition;
public CoinActor(Vector startPosition) {
this.startPosition = startPosition;
}
@Override
protected void onAdd() {
dynamic = addHabit(new DynamicHabit(new Circle(startPosition, 8).toPolygon(16), 1));
addHabit(new GravityHabit(dynamic));
metal = addHabit(new MetalHabit(dynamic));
}
@Override
protected void onBeforeMove(Keyboard keyboard, Mouse mouse, Clock clock) {
if (mouse.isDown(Button.MB_LEFT)) {
PlayerActor pa = getLayer().findActor(PlayerActor.class);
Polygon p = pa.findHabit(DynamicHabit.class).getPolygon();
metal.applyImpulse(p.getMid().subtract(dynamic.getPolygon().getMid()).divide(1000));
}
}
@Override
protected void onDraw(RenderTarget target) {
target.fillPolygon(dynamic.getPolygon(), colour);
}
}