From 140cfcacae04a414371c3d595b5ee0ab65bc6c0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 26 Mar 2021 22:53:55 +0100 Subject: [PATCH] Add support for z-index parameters in Entity which determines the Entity rendering order --- .../com/bartlomiejpluta/base/api/entity/Entity.java | 4 ++++ .../base/lib/entity/EntityDelegate.java | 10 ++++++++++ .../base/engine/world/entity/model/DefaultEntity.java | 4 ++++ .../world/map/layer/object/DefaultObjectLayer.java | 6 +++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java b/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java index 44454c11..dd191ef2 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java @@ -31,4 +31,8 @@ public interface Entity extends Movable, Renderable, Updatable { void setBlocking(boolean blocking); void changeEntitySet(String entitySetUid); + + int getZIndex(); + + void setZIndex(int zIndex); } diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java b/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java index 9bc26abb..dfcee4b2 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java @@ -219,6 +219,16 @@ public abstract class EntityDelegate implements Entity { entity.changeEntitySet(entitySetUid); } + @Override + public int getZIndex() { + return entity.getZIndex(); + } + + @Override + public void setZIndex(int zIndex) { + entity.setZIndex(zIndex); + } + @Override public void update(float dt) { entity.update(dt); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java index 256de7af..76ea6211 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/model/DefaultEntity.java @@ -27,6 +27,10 @@ public class DefaultEntity extends MovableSprite implements Entity { private final Vector2f entityScale = new Vector2f(1, 1); private Vector2fc entitySetSize; + @Getter + @Setter + private int zIndex = 0; + private int animationSpeed = 100; @Getter diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java index 7e3b517e..1ca086e4 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java @@ -20,6 +20,9 @@ import java.util.LinkedList; import java.util.List; import java.util.Queue; +import static java.lang.Float.compare; +import static java.lang.Integer.compare; + public class DefaultObjectLayer extends BaseLayer implements ObjectLayer { @Getter @@ -190,6 +193,7 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer { } private int compareObjects(Entity a, Entity b) { - return Float.compare(a.getPosition().y(), b.getPosition().y()); + var z = compare(a.getZIndex(), b.getZIndex()); + return z == 0 ? compare(a.getPosition().y(), b.getPosition().y()) : z; } }