From 6a6bfd971fd8e691b0d57745a9634fc0f58e475c Mon Sep 17 00:00:00 2001 From: Maurice Date: Fri, 28 Nov 2025 23:22:10 +0100 Subject: [PATCH] sorted entity rendering --- src/de/miaurizius/jgame2d/core/GamePanel.java | 17 +++++++++++++---- .../jgame2d/core/handlers/AssetSetter.java | 13 ++++++++++++- .../jgame2d/core/handlers/CollisionHandler.java | 1 - 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index d3a7194..1ae0627 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -4,11 +4,13 @@ import de.miaurizius.jgame2d.core.enums.GameState; import de.miaurizius.jgame2d.core.handlers.*; import de.miaurizius.jgame2d.entity.Entity; import de.miaurizius.jgame2d.entity.Player; -import de.miaurizius.jgame2d.entity.objects.SuperObject; import de.miaurizius.jgame2d.tile.TileManager; import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.logging.Level; import java.util.logging.Logger; @@ -47,6 +49,7 @@ public class GamePanel extends JPanel implements Runnable { public Player player = new Player(this, keyH); public Entity[] obj = new Entity[10]; public Entity[] npc = new Entity[10]; + ArrayList entityList = new ArrayList<>(); // GAME STATE public GameState gameState; @@ -127,9 +130,15 @@ public class GamePanel extends JPanel implements Runnable { // GAME tileM.draw(graphics2d); - for (Entity superObject : obj) if (superObject != null) superObject.draw(graphics2d); - for(Entity npc : npc) if(npc != null) npc.draw(graphics2d); - player.draw(graphics2d); + + // ENTITY RENDER SYSTEM + entityList.add(player); + for(Entity entity : npc) if(entity != null) entityList.add(entity); + for(Entity entity : obj) if(entity != null) entityList.add(entity); + entityList.sort(Comparator.comparingInt(o -> o.worldY)); + for(Entity entity : entityList) entity.draw(graphics2d); + entityList.clear(); + ui.draw(graphics2d); long drawEnd = System.nanoTime(); diff --git a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java index f7a2c22..74a6139 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java +++ b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java @@ -2,6 +2,7 @@ package de.miaurizius.jgame2d.core.handlers; import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.entity.OldManNPC; +import de.miaurizius.jgame2d.entity.objects.DoorObj; public class AssetSetter { @@ -11,7 +12,17 @@ public class AssetSetter { this.panel = panel; } - public void setObject() {} + public void setObject() { + + panel.obj[0] = new DoorObj(panel); + panel.obj[0].worldX = panel.tileSize*21; + panel.obj[0].worldY = panel.tileSize*22; + + panel.obj[1] = new DoorObj(panel); + panel.obj[1].worldX = panel.tileSize*23; + panel.obj[1].worldY = panel.tileSize*25; + + } public void setNPC() { panel.npc[0] = new OldManNPC(panel); diff --git a/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java b/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java index b11ea76..aad0fef 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java @@ -2,7 +2,6 @@ package de.miaurizius.jgame2d.core.handlers; import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.entity.Entity; -import de.miaurizius.jgame2d.entity.objects.SuperObject; public class CollisionHandler {