diff options
Diffstat (limited to 'core/src/org/snoopdesigns')
4 files changed, 80 insertions, 36 deletions
diff --git a/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java b/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java index b67987c..9d7d4dd 100644 --- a/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java +++ b/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java @@ -47,14 +47,13 @@ public class Box2DDebugRenderer implements Renderer {                  s %.1f m/s                  v %.1f %.1f                  """, -                    Context.getInstance().getCameraContext().getPosition().x, -                    Context.getInstance().getCameraContext().getPosition().y, -                    Context.getInstance().getPlayerShip().getBody().getAngle(), -                    Context.getInstance().getPlayerShip().getBody().getLinearVelocity().len(), -                    Context.getInstance().getPlayerShip().getBody().getLinearVelocity().x, -                    Context.getInstance().getPlayerShip().getBody().getLinearVelocity().y); +                    body.getPosition().x, +                    body.getPosition().y, +                    body.getAngle(), +                    body.getLinearVelocity().len(), +                    body.getLinearVelocity().x, +                    body.getLinearVelocity().y);              font.draw(batch, debugText, body.getPosition().x + 5f, body.getPosition().y - 5f); -            //ont.draw(batch, debugText, 10f, 190f);          });          batch.end();      } diff --git a/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java b/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java index c9792e4..3afea26 100644 --- a/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java +++ b/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java @@ -2,6 +2,7 @@ package org.snoopdesigns.endless.world;  import java.util.ArrayList;  import java.util.List; +import java.util.stream.IntStream;  import com.badlogic.gdx.graphics.g2d.SpriteBatch;  import org.snoopdesigns.endless.context.Context; @@ -18,9 +19,9 @@ public class ObjectsRenderer implements Renderer {      public void create() {          batch = new SpriteBatch();          renderables.add(Context.getInstance().getPlayerShip()); -        renderables.add(new SteerableEnemyShip()); -        //renderables.add(new SteerableEnemyShip()); -        //renderables.add(new SteerableEnemyShip()); + +        IntStream.range(0, 1).forEach(i -> +                renderables.add(new SteerableEnemyShip()));          renderables.forEach(Renderable::create);      } diff --git a/core/src/org/snoopdesigns/endless/world/effects/EngineEffect.java b/core/src/org/snoopdesigns/endless/world/effects/EngineEffect.java new file mode 100644 index 0000000..d6301db --- /dev/null +++ b/core/src/org/snoopdesigns/endless/world/effects/EngineEffect.java @@ -0,0 +1,64 @@ +package org.snoopdesigns.endless.world.effects; + +import java.util.LinkedList; +import java.util.Queue; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.g2d.ParticleEffect; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.MathUtils; +import com.badlogic.gdx.math.Vector2; +import org.snoopdesigns.endless.physics.PhysicalBody; +import org.snoopdesigns.endless.world.Renderable; + +public class EngineEffect implements Renderable { +    private final Queue<ParticleEffect> effects = new LinkedList<>(); +    private final PhysicalBody body; + +    public EngineEffect(PhysicalBody body) { +        this.body = body; +    } + +    public void start() { +        final ParticleEffect effect = new ParticleEffect(); +        effect.load(Gdx.files.internal("particles.p"), Gdx.files.internal("")); +        effect.setPosition( +                body.getBody().getPosition().x, +                body.getBody().getPosition().y); +        effect.start(); +        effects.add(effect); +    } + +    public void stop() { +        effects.forEach(ParticleEffect::allowCompletion); +    } + +    @Override +    public void create() { +    } + +    @Override +    public void render(SpriteBatch batch) { +        final float x = body.getBody().getPosition().x; +        final float y = body.getBody().getPosition().y; + +        effects.removeIf(ParticleEffect::isComplete); +        effects.forEach(effect -> { +            final Vector2 effectOffset = new Vector2(-5f, 0f).rotateRad(body.getBody().getAngle()); +            effect.setPosition(x + effectOffset.x, y + effectOffset.y); +            effect.getEmitters().forEach(emitter -> { +                final float effectRotation = MathUtils.radDeg * body.getBody().getAngle(); +                emitter.getAngle().setLow(effectRotation); +                emitter.getAngle().setHigh(effectRotation); +            }); +        }); + +        effects.forEach(effect -> +                effect.draw(batch, Gdx.graphics.getDeltaTime())); +    } + +    @Override +    public void dispose() { + +    } +} diff --git a/core/src/org/snoopdesigns/endless/world/player/PlayerShip.java b/core/src/org/snoopdesigns/endless/world/player/PlayerShip.java index 1393d02..c844c24 100644 --- a/core/src/org/snoopdesigns/endless/world/player/PlayerShip.java +++ b/core/src/org/snoopdesigns/endless/world/player/PlayerShip.java @@ -1,12 +1,8 @@  package org.snoopdesigns.endless.world.player; -import java.util.LinkedList; -import java.util.Queue; -  import com.badlogic.gdx.Gdx;  import com.badlogic.gdx.Input.Keys;  import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.ParticleEffect;  import com.badlogic.gdx.graphics.g2d.Sprite;  import com.badlogic.gdx.graphics.g2d.SpriteBatch;  import com.badlogic.gdx.math.MathUtils; @@ -18,11 +14,11 @@ import org.snoopdesigns.endless.context.Context;  import org.snoopdesigns.endless.physics.PhysicalBody;  import org.snoopdesigns.endless.world.Controllable;  import org.snoopdesigns.endless.world.Renderable; +import org.snoopdesigns.endless.world.effects.EngineEffect;  public final class PlayerShip extends PhysicalBody implements Controllable, Renderable { - -    private final Queue<ParticleEffect> effects = new LinkedList<>();      private Sprite sprite; +    private EngineEffect effect;      @Override      public BodyType getBodyType() { @@ -66,6 +62,8 @@ public final class PlayerShip extends PhysicalBody implements Controllable, Rend                  expectedSizeInMeters / sprite.getWidth());          sprite.setScale(scale.x, scale.y); + +        effect = new EngineEffect(this);      }      @Override @@ -80,20 +78,8 @@ public final class PlayerShip extends PhysicalBody implements Controllable, Rend          sprite.setCenter(x, y);          sprite.setRotation(MathUtils.radDeg * getBody().getAngle()); -        effects.removeIf(ParticleEffect::isComplete); -        effects.forEach(effect -> { -            final Vector2 effectOffset = new Vector2(-5f, 0f).rotateRad(getBody().getAngle()); -            effect.setPosition(x + effectOffset.x, y + effectOffset.y); -            effect.getEmitters().forEach(emitter -> { -                final float effectRotation = MathUtils.radDeg * getBody().getAngle(); -                emitter.getAngle().setLow(effectRotation); -                emitter.getAngle().setHigh(effectRotation); -            }); -        }); -          sprite.draw(batch); -        effects.forEach(effect -> -                effect.draw(batch, Gdx.graphics.getDeltaTime())); +        effect.render(batch);          limitVelocity();      } @@ -105,13 +91,7 @@ public final class PlayerShip extends PhysicalBody implements Controllable, Rend      @Override      public boolean keyDown(int keycode) {          if (keycode == Keys.SPACE) { -            final ParticleEffect effect = new ParticleEffect(); -            effect.load(Gdx.files.internal("particles.p"), Gdx.files.internal("")); -            effect.setPosition( -                    getBody().getPosition().x, -                    getBody().getPosition().y);              effect.start(); -            effects.add(effect);              return true;          }          return false; @@ -120,7 +100,7 @@ public final class PlayerShip extends PhysicalBody implements Controllable, Rend      @Override      public boolean keyUp(int keycode) {          if (keycode == Keys.SPACE) { -            effects.forEach(ParticleEffect::allowCompletion); +            effect.stop();              return true;          }          return false;  | 
