package rts.core.engine.layers.entities.projectiles; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import rts.core.engine.Engine; import rts.core.engine.GameSound; import rts.core.engine.layers.Layer; import rts.core.engine.layers.entities.ActiveEntity; import rts.core.engine.layers.entities.EData; import rts.core.engine.layers.entities.buildings.Artillery; import rts.core.engine.layers.entities.buildings.Turret; import rts.core.engine.layers.entities.effects.Explosion; import rts.utils.ResourceManager; public class Bullet extends Projectile { private Image bullet; public Bullet(Engine engine, ActiveEntity owner, ActiveEntity target, int type, int decX, int decY) { super(engine, owner, target, Layer.EARTH_MARINE_ENT, decX, decY); this.bullet = ResourceManager.getSpriteSheet("bullets").getSprite(type, 0); if (owner instanceof Artillery) { this.speed = ((Artillery) owner).getBulletSpeed(); this.power = ((Artillery) owner).getBulletPower(); } else { if (owner instanceof Turret) { this.speed = ((Turret) owner).getBulletSpeed(); this.power = ((Turret) owner).getBulletPower(); } else { this.speed = EData.BULLET_SPEED[owner.getType()]; this.power = EData.BULLET_POWER[owner.getType()][target.getType()]; } } GameSound.shoot(); } @Override public void render(GameContainer container, Graphics g) throws SlickException { g.rotate(x + 10, y + 10, ang); g.drawImage(bullet, x, y); g.rotate(x + 10, y + 10, -ang); } @Override protected void destroy() { engine.addEntity(new Explosion(engine, Layer.SECOND_EFFECT, Explosion.SMALL_2, x - 10, y - 10)); } }