summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorDmitri Morozov <snoopdesigns@gmail.com>2024-02-08 23:50:08 +0100
committerue86388 <dmitrii.morozov@sbb.ch>2024-02-08 23:50:08 +0100
commit0612318e688a654ddb71467c01910a84a6b02488 (patch)
tree8769771e9f5ff2f831f9b47121aa8fb8407c6a07 /core/src
parente513d085789be3eedfd56b0103646e989c750b33 (diff)
Fixed debug renderer, isolated engine effect in separate class
Diffstat (limited to 'core/src')
-rw-r--r--core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java13
-rw-r--r--core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java7
-rw-r--r--core/src/org/snoopdesigns/endless/world/effects/EngineEffect.java64
-rw-r--r--core/src/org/snoopdesigns/endless/world/player/PlayerShip.java32
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;