summaryrefslogtreecommitdiff
path: root/core/src/main/java/coffee/liz/dyl
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/coffee/liz/dyl')
-rw-r--r--core/src/main/java/coffee/liz/dyl/DylGame.java1
-rw-r--r--core/src/main/java/coffee/liz/dyl/components/BoundingBox.java21
-rw-r--r--core/src/main/java/coffee/liz/dyl/components/Transform.java18
-rw-r--r--core/src/main/java/coffee/liz/dyl/components/Velocity.java5
-rw-r--r--core/src/main/java/coffee/liz/dyl/components/graphic/Graphic.java4
-rw-r--r--core/src/main/java/coffee/liz/dyl/components/graphic/TextureGraphic.java14
-rw-r--r--core/src/main/java/coffee/liz/dyl/entities/PlayerFactory.java2
-rw-r--r--core/src/main/java/coffee/liz/dyl/systems/InputSystem.java26
-rw-r--r--core/src/main/java/coffee/liz/dyl/systems/IntegrationSystem.java14
-rw-r--r--core/src/main/java/coffee/liz/dyl/systems/RenderSystem.java10
-rw-r--r--core/src/main/java/coffee/liz/dyl/world/DylGameWorld.java11
11 files changed, 70 insertions, 56 deletions
diff --git a/core/src/main/java/coffee/liz/dyl/DylGame.java b/core/src/main/java/coffee/liz/dyl/DylGame.java
index aa25617..1166d42 100644
--- a/core/src/main/java/coffee/liz/dyl/DylGame.java
+++ b/core/src/main/java/coffee/liz/dyl/DylGame.java
@@ -17,7 +17,6 @@ import lombok.Getter;
public class DylGame extends Game {
public static final float WORLD_WIDTH = 10f;
public static final float WORLD_HEIGHT = 10f;
- public static final float UNIT_SCALE = 1/10f;
private InputMultiplexer inputMultiplexer;
private Batch batch;
diff --git a/core/src/main/java/coffee/liz/dyl/components/BoundingBox.java b/core/src/main/java/coffee/liz/dyl/components/BoundingBox.java
new file mode 100644
index 0000000..481e91e
--- /dev/null
+++ b/core/src/main/java/coffee/liz/dyl/components/BoundingBox.java
@@ -0,0 +1,21 @@
+package coffee.liz.dyl.components;
+
+import coffee.liz.ecs.math.Vec2;
+import coffee.liz.ecs.model.Component;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@AllArgsConstructor
+@Getter
+@Setter
+public class BoundingBox implements Component, Comparable<BoundingBox> {
+ private Vec2<Float> position;
+ private Vec2<Integer> dimensions;
+ private int z;
+
+ @Override
+ public int compareTo(final BoundingBox other) {
+ return Integer.compare(z, other.getZ());
+ }
+}
diff --git a/core/src/main/java/coffee/liz/dyl/components/Transform.java b/core/src/main/java/coffee/liz/dyl/components/Transform.java
deleted file mode 100644
index b2d5a60..0000000
--- a/core/src/main/java/coffee/liz/dyl/components/Transform.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package coffee.liz.dyl.components;
-
-import coffee.liz.ecs.model.Component;
-import com.badlogic.gdx.math.Vector2;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-@AllArgsConstructor
-@Getter
-public class Transform implements Component, Comparable<Transform> {
- private Vector2 position;
- private int z;
-
- @Override
- public int compareTo(final Transform other) {
- return Integer.compare(z, other.getZ());
- }
-}
diff --git a/core/src/main/java/coffee/liz/dyl/components/Velocity.java b/core/src/main/java/coffee/liz/dyl/components/Velocity.java
index 170fa84..f31e861 100644
--- a/core/src/main/java/coffee/liz/dyl/components/Velocity.java
+++ b/core/src/main/java/coffee/liz/dyl/components/Velocity.java
@@ -1,7 +1,8 @@
package coffee.liz.dyl.components;
+import coffee.liz.ecs.math.Vec2;
+import coffee.liz.ecs.math.Vec2f;
import coffee.liz.ecs.model.Component;
-import com.badlogic.gdx.math.Vector2;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -12,5 +13,5 @@ import lombok.Setter;
@Getter
@Setter
public class Velocity implements Component {
- private Vector2 velocity = Vector2.Zero.cpy();
+ private Vec2<Float> velocity = Vec2f.ZERO;
}
diff --git a/core/src/main/java/coffee/liz/dyl/components/graphic/Graphic.java b/core/src/main/java/coffee/liz/dyl/components/graphic/Graphic.java
index 648a930..c70b382 100644
--- a/core/src/main/java/coffee/liz/dyl/components/graphic/Graphic.java
+++ b/core/src/main/java/coffee/liz/dyl/components/graphic/Graphic.java
@@ -1,6 +1,6 @@
package coffee.liz.dyl.components.graphic;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import coffee.liz.ecs.model.Component;
import com.badlogic.gdx.graphics.g2d.Batch;
@@ -9,5 +9,5 @@ public interface Graphic extends Component {
return Graphic.class;
}
- void draw(final Batch batch, final Transform transform);
+ void draw(final Batch batch, final BoundingBox boundingBox);
}
diff --git a/core/src/main/java/coffee/liz/dyl/components/graphic/TextureGraphic.java b/core/src/main/java/coffee/liz/dyl/components/graphic/TextureGraphic.java
index 0d12f1a..6f29759 100644
--- a/core/src/main/java/coffee/liz/dyl/components/graphic/TextureGraphic.java
+++ b/core/src/main/java/coffee/liz/dyl/components/graphic/TextureGraphic.java
@@ -1,9 +1,9 @@
package coffee.liz.dyl.components.graphic;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Batch;
-import com.badlogic.gdx.graphics.g2d.TextureRegion;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -11,11 +11,15 @@ import lombok.Getter;
@AllArgsConstructor
public class TextureGraphic implements Graphic {
private Color color;
- private TextureRegion textureRegion;
+ private Texture texture;
@Override
- public void draw(final Batch batch, final Transform transform) {
+ public void draw(final Batch batch, final BoundingBox boundingBox) {
batch.setColor(color);
- batch.draw(textureRegion, transform.getPosition().x, transform.getPosition().y);
+ batch.draw(texture,
+ boundingBox.getPosition().getX(), boundingBox.getPosition().getY(),
+ 0, 0,
+ boundingBox.getDimensions().getX(), boundingBox.getDimensions().getY()
+ );
}
}
diff --git a/core/src/main/java/coffee/liz/dyl/entities/PlayerFactory.java b/core/src/main/java/coffee/liz/dyl/entities/PlayerFactory.java
index f7344c7..8655447 100644
--- a/core/src/main/java/coffee/liz/dyl/entities/PlayerFactory.java
+++ b/core/src/main/java/coffee/liz/dyl/entities/PlayerFactory.java
@@ -22,7 +22,7 @@ public class PlayerFactory {
texture.getWidth() / PENGUIN_FRAMES_X,
texture.getHeight() / PENGUIN_FRAMES_Y);
return world.createEntity()
- .add(new TextureGraphic(Color.PINK, tmp[0][0]))
+ .add(new TextureGraphic(Color.PINK, tmp[0][0].getTexture()))
.add(new Controllable())
.add(new Velocity());
}
diff --git a/core/src/main/java/coffee/liz/dyl/systems/InputSystem.java b/core/src/main/java/coffee/liz/dyl/systems/InputSystem.java
index 8a357ba..d5dfe0b 100644
--- a/core/src/main/java/coffee/liz/dyl/systems/InputSystem.java
+++ b/core/src/main/java/coffee/liz/dyl/systems/InputSystem.java
@@ -1,12 +1,14 @@
package coffee.liz.dyl.systems;
import coffee.liz.dyl.FrameState;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import coffee.liz.dyl.components.Velocity;
import coffee.liz.dyl.config.KeyBinds;
+import coffee.liz.ecs.math.Vec2;
+import coffee.liz.ecs.math.Vec2f;
+import coffee.liz.ecs.math.Vec2i;
import coffee.liz.ecs.model.System;
import coffee.liz.ecs.model.World;
-import com.badlogic.gdx.math.Vector2;
import java.util.Collection;
import java.util.Set;
@@ -22,20 +24,20 @@ public class InputSystem implements System<FrameState> {
final Set<KeyBinds.Action> currentlyActive = state.getSettings().getKeyBinds()
.filterActiveActions(state.getIsKeyPressed());
- final Vector2 momentum = Vector2.Zero.cpy();
- currentlyActive.stream().map(InputSystem::actionToMovement).forEach(momentum::add);
+ final Vec2<Float> momentum = currentlyActive.stream().map(InputSystem::actionToMovement)
+ .reduce(Vec2::plus)
+ .orElse(Vec2f.ZERO);
- world.queryable().allOf(Velocity.class, Transform.class).forEach(e -> {
- e.get(Velocity.class).getVelocity().set(momentum);
- });
+ world.queryable().allOf(Velocity.class, BoundingBox.class)
+ .forEach(e -> e.get(Velocity.class).setVelocity(momentum));
}
- private static Vector2 actionToMovement(final KeyBinds.Action action) {
+ private static Vec2<Float> actionToMovement(final KeyBinds.Action action) {
return switch (action) {
- case MOVE_UP -> new Vector2(0, 1);
- case MOVE_DOWN -> new Vector2(0, -1);
- case MOVE_LEFT -> new Vector2(-1, 0);
- case MOVE_RIGHT -> new Vector2(1, 0);
+ case MOVE_UP -> Vec2i.NORTH.floatValue();
+ case MOVE_DOWN -> Vec2i.SOUTH.floatValue();
+ case MOVE_LEFT -> Vec2i.WEST.floatValue();
+ case MOVE_RIGHT -> Vec2i.EAST.floatValue();
};
}
}
diff --git a/core/src/main/java/coffee/liz/dyl/systems/IntegrationSystem.java b/core/src/main/java/coffee/liz/dyl/systems/IntegrationSystem.java
index 3fb9b76..cd7d7b1 100644
--- a/core/src/main/java/coffee/liz/dyl/systems/IntegrationSystem.java
+++ b/core/src/main/java/coffee/liz/dyl/systems/IntegrationSystem.java
@@ -1,11 +1,11 @@
package coffee.liz.dyl.systems;
import coffee.liz.dyl.FrameState;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import coffee.liz.dyl.components.Velocity;
+import coffee.liz.ecs.math.Vec2;
import coffee.liz.ecs.model.System;
import coffee.liz.ecs.model.World;
-import com.badlogic.gdx.math.Vector2;
import lombok.extern.log4j.Log4j2;
import java.util.Collection;
@@ -20,11 +20,13 @@ public class IntegrationSystem implements System<FrameState> {
@Override
public void update(final World<FrameState> world, final FrameState state, final float deltaSeconds) {
- world.queryable().allOf(Velocity.class, Transform.class)
+ world.queryable().allOf(Velocity.class, BoundingBox.class)
.forEach(e -> {
- final Vector2 velocity = e.get(Velocity.class).getVelocity();
- final Vector2 position = e.get(Transform.class).getPosition();
- position.add(velocity.cpy().scl(deltaSeconds));
+ final Vec2<Float> velocity = e.get(Velocity.class).getVelocity();
+ final BoundingBox box = e.get(BoundingBox.class);
+ final Vec2<Float> position = box.getPosition()
+ .plus(velocity.scale(deltaSeconds, deltaSeconds));
+ box.setPosition(position);
});
}
}
diff --git a/core/src/main/java/coffee/liz/dyl/systems/RenderSystem.java b/core/src/main/java/coffee/liz/dyl/systems/RenderSystem.java
index 2f185cd..86c18fd 100644
--- a/core/src/main/java/coffee/liz/dyl/systems/RenderSystem.java
+++ b/core/src/main/java/coffee/liz/dyl/systems/RenderSystem.java
@@ -2,7 +2,7 @@ package coffee.liz.dyl.systems;
import coffee.liz.dyl.FrameState;
import coffee.liz.dyl.components.graphic.Graphic;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import coffee.liz.ecs.model.System;
import coffee.liz.ecs.model.World;
import com.badlogic.gdx.graphics.Color;
@@ -39,12 +39,12 @@ public class RenderSystem implements System<FrameState> {
batch.begin();
batch.setColor(Color.WHITE);
- world.queryable().allOf(Transform.class, Graphic.class).stream()
- .sorted(Comparator.comparing(e -> e.get(Transform.class)))
+ world.queryable().allOf(BoundingBox.class, Graphic.class).stream()
+ .sorted(Comparator.comparing(e -> e.get(BoundingBox.class)))
.forEach(e -> {
- final Transform transform = e.get(Transform.class);
+ final BoundingBox boundingBox = e.get(BoundingBox.class);
final Graphic graphic = e.get(Graphic.class);
- graphic.draw(batch, transform);
+ graphic.draw(batch, boundingBox);
});
batch.setColor(Color.WHITE);
diff --git a/core/src/main/java/coffee/liz/dyl/world/DylGameWorld.java b/core/src/main/java/coffee/liz/dyl/world/DylGameWorld.java
index b04a4df..c3e1c2d 100644
--- a/core/src/main/java/coffee/liz/dyl/world/DylGameWorld.java
+++ b/core/src/main/java/coffee/liz/dyl/world/DylGameWorld.java
@@ -2,13 +2,14 @@ package coffee.liz.dyl.world;
import coffee.liz.dyl.DylGame;
import coffee.liz.dyl.FrameState;
-import coffee.liz.dyl.components.Transform;
+import coffee.liz.dyl.components.BoundingBox;
import coffee.liz.dyl.entities.PlayerFactory;
import coffee.liz.dyl.systems.InputSystem;
import coffee.liz.dyl.systems.IntegrationSystem;
import coffee.liz.dyl.systems.RenderSystem;
import coffee.liz.ecs.DAGWorld;
-import com.badlogic.gdx.math.Vector2;
+import coffee.liz.ecs.math.Vec2f;
+import coffee.liz.ecs.math.Vec2i;
public class DylGameWorld extends DAGWorld<FrameState> {
public DylGameWorld(final DylGame game) {
@@ -17,7 +18,9 @@ public class DylGameWorld extends DAGWorld<FrameState> {
new IntegrationSystem(),
new RenderSystem(game.getBatch(), game.getViewport())
);
- PlayerFactory.addTo(this)
- .add(new Transform(Vector2.One, 1));
+ for (int i = 0; i < 8000; i++) {
+ PlayerFactory.addTo(this)
+ .add(new BoundingBox(new Vec2f(i / 200f, i/ 200f), new Vec2i(1, 1), 1));
+ }
}
}