package com.arretadogames.pilot.entities;
import com.arretadogames.pilot.entities.effects.EffectDescriptor;
import com.arretadogames.pilot.entities.effects.EffectManager;
import com.arretadogames.pilot.physics.PhysicalWorld;
import com.arretadogames.pilot.render.AnimationSwitcher;
import com.arretadogames.pilot.render.PhysicsRect;
import com.arretadogames.pilot.render.opengl.GLCanvas;
import org.jbox2d.collision.shapes.CircleShape;
import org.jbox2d.dynamics.BodyType;
import org.jbox2d.dynamics.contacts.Contact;
public class Coin extends Entity {
private final static PhysicsRect SEED_RECT = new PhysicsRect(0.4f, 0.4f);
private final static PhysicsRect SEED_EFFECT_RECT = new PhysicsRect(0.8f, 0.8f);
private static EffectDescriptor dieAnimation;
private AnimationSwitcher sprite;
private static EffectDescriptor getDieEffect() {
if (dieAnimation == null) {
dieAnimation = new EffectDescriptor();
dieAnimation.type = "SeedFade";
dieAnimation.pRect = SEED_EFFECT_RECT;
dieAnimation.repeat = false;
}
return dieAnimation;
}
public Coin(float x, float y, int value) {
super(x, y);
CircleShape shape = new CircleShape();
shape.setRadius(0.5f);
body.createFixture(shape, 0f).setSensor(true);
body.setType(BodyType.KINEMATIC);
physRect = SEED_RECT;
}
@Override
public void render(GLCanvas canvas, float timeElapsed) {
canvas.saveState();
canvas.translatePhysics(getPosX(), getPosY());
canvas.rotate((float) (180 * - body.getAngle() / Math.PI));
sprite.render(canvas, physRect, timeElapsed);
canvas.restoreState();
}
@Override
public EntityType getType() {
return EntityType.SEED;
}
@Override
public void setSprite(AnimationSwitcher sprite) {
this.sprite = sprite;
}
@Override
public void beginContact(Entity e, Contact contact) {
super.beginContact(e, contact);
if (e.getType() == EntityType.PLAYER && isAlive()) {
kill();
PhysicalWorld.getInstance().addDeadEntity(this);
}
}
@Override
public void kill() {
EffectDescriptor effect = getDieEffect();
effect.position = body.getPosition();
EffectManager.getInstance().addEffect(effect);
super.kill();
}
}