112 lines
2.5 KiB
Java
112 lines
2.5 KiB
Java
package de.samdev.cannonshooter.entities;
|
|
|
|
import com.badlogic.gdx.graphics.Color;
|
|
import com.badlogic.gdx.math.Rectangle;
|
|
|
|
import de.samdev.absgdx.framework.entities.Entity;
|
|
import de.samdev.absgdx.framework.entities.colliosiondetection.CollisionGeometryOwner;
|
|
import de.samdev.absgdx.framework.entities.colliosiondetection.geometries.CollisionGeometry;
|
|
import de.samdev.absgdx.framework.layer.GameLayer;
|
|
import de.samdev.cannonshooter.Textures;
|
|
import de.samdev.cannonshooter.ZLayers;
|
|
import de.samdev.cannonshooter.teams.Team;
|
|
|
|
public class CannonBullet extends Entity {
|
|
private final static float RESIZE_SPEED = 0.002f;
|
|
|
|
private Cannon cannon;
|
|
private final Team team;
|
|
|
|
private boolean inBarrel = true;
|
|
public float scale = 0.001f;
|
|
private boolean death = false;
|
|
|
|
public CannonBullet(Cannon owner, Team t) {
|
|
super(Textures.cannon_bullet, 0.5f, 0.5f);
|
|
this.cannon = owner;
|
|
this.team = t;
|
|
|
|
setPosition(cannon.getPositionX(), cannon.getPositionY());
|
|
|
|
setZLayer(ZLayers.LAYER_CANNON_BULLET);
|
|
|
|
setColorTint(team.teamColor);
|
|
}
|
|
|
|
@Override
|
|
public void beforeUpdate(float delta) {
|
|
if (death) {
|
|
scale -= RESIZE_SPEED * delta;
|
|
if (scale <= 0) {
|
|
death = false;
|
|
scale = 0.0001f;
|
|
alive = false;
|
|
}
|
|
}
|
|
|
|
// TODO OPTIMIZE
|
|
// TODO Add max lifetime (=> kill() )
|
|
if (! owner.getVisibleMapBox().overlaps(new Rectangle(getPositionX(), getPositionY(), getWidth(), getHeight())))
|
|
{
|
|
alive = false;
|
|
}
|
|
}
|
|
|
|
public void shoot(float rotation) {
|
|
inBarrel = false;
|
|
|
|
speed.set(0.001f, 0);
|
|
speed.rotate(rotation);
|
|
}
|
|
|
|
public void kill() {
|
|
death = true;
|
|
}
|
|
|
|
@Override
|
|
public float getTextureScaleX() {
|
|
return scale;
|
|
}
|
|
|
|
@Override
|
|
public float getTextureScaleY() {
|
|
return scale;
|
|
}
|
|
|
|
@Override
|
|
public void onLayerAdd(GameLayer layer) {
|
|
//
|
|
}
|
|
|
|
@Override
|
|
public void onActiveCollide(CollisionGeometryOwner passiveCollider, CollisionGeometry myGeo, CollisionGeometry otherGeo) {
|
|
//
|
|
}
|
|
|
|
@Override
|
|
public void onPassiveCollide(CollisionGeometryOwner activeCollider, CollisionGeometry myGeo, CollisionGeometry otherGeo) {
|
|
//
|
|
}
|
|
|
|
@Override
|
|
public void onActiveMovementCollide(CollisionGeometryOwner passiveCollider, CollisionGeometry myGeo, CollisionGeometry otherGeo) {
|
|
//
|
|
}
|
|
|
|
@Override
|
|
public void onPassiveMovementCollide(CollisionGeometryOwner activeCollider, CollisionGeometry myGeo, CollisionGeometry otherGeo) {
|
|
//
|
|
}
|
|
|
|
@Override
|
|
public boolean canCollideWith(CollisionGeometryOwner other) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean canMoveCollideWith(CollisionGeometryOwner other) {
|
|
return false;
|
|
}
|
|
|
|
}
|