sorted entity rendering

This commit is contained in:
2025-11-28 23:22:10 +01:00
parent b2b65dd290
commit 6a6bfd971f
3 changed files with 25 additions and 6 deletions

View File

@@ -4,11 +4,13 @@ import de.miaurizius.jgame2d.core.enums.GameState;
import de.miaurizius.jgame2d.core.handlers.*; import de.miaurizius.jgame2d.core.handlers.*;
import de.miaurizius.jgame2d.entity.Entity; import de.miaurizius.jgame2d.entity.Entity;
import de.miaurizius.jgame2d.entity.Player; import de.miaurizius.jgame2d.entity.Player;
import de.miaurizius.jgame2d.entity.objects.SuperObject;
import de.miaurizius.jgame2d.tile.TileManager; import de.miaurizius.jgame2d.tile.TileManager;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -47,6 +49,7 @@ public class GamePanel extends JPanel implements Runnable {
public Player player = new Player(this, keyH); public Player player = new Player(this, keyH);
public Entity[] obj = new Entity[10]; public Entity[] obj = new Entity[10];
public Entity[] npc = new Entity[10]; public Entity[] npc = new Entity[10];
ArrayList<Entity> entityList = new ArrayList<>();
// GAME STATE // GAME STATE
public GameState gameState; public GameState gameState;
@@ -127,9 +130,15 @@ public class GamePanel extends JPanel implements Runnable {
// GAME // GAME
tileM.draw(graphics2d); tileM.draw(graphics2d);
for (Entity superObject : obj) if (superObject != null) superObject.draw(graphics2d);
for(Entity npc : npc) if(npc != null) npc.draw(graphics2d); // ENTITY RENDER SYSTEM
player.draw(graphics2d); 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); ui.draw(graphics2d);
long drawEnd = System.nanoTime(); long drawEnd = System.nanoTime();

View File

@@ -2,6 +2,7 @@ package de.miaurizius.jgame2d.core.handlers;
import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.core.GamePanel;
import de.miaurizius.jgame2d.entity.OldManNPC; import de.miaurizius.jgame2d.entity.OldManNPC;
import de.miaurizius.jgame2d.entity.objects.DoorObj;
public class AssetSetter { public class AssetSetter {
@@ -11,7 +12,17 @@ public class AssetSetter {
this.panel = panel; 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() { public void setNPC() {
panel.npc[0] = new OldManNPC(panel); panel.npc[0] = new OldManNPC(panel);

View File

@@ -2,7 +2,6 @@ package de.miaurizius.jgame2d.core.handlers;
import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.core.GamePanel;
import de.miaurizius.jgame2d.entity.Entity; import de.miaurizius.jgame2d.entity.Entity;
import de.miaurizius.jgame2d.entity.objects.SuperObject;
public class CollisionHandler { public class CollisionHandler {