diff --git a/core/src/main/java/org/lumijiez/bugger/Bugger.java b/core/src/main/java/org/lumijiez/bugger/Bugger.java index 47f96f0..81e6a47 100644 --- a/core/src/main/java/org/lumijiez/bugger/Bugger.java +++ b/core/src/main/java/org/lumijiez/bugger/Bugger.java @@ -19,16 +19,10 @@ import org.lumijiez.bugger.handlers.*; import org.lumijiez.bugger.vfx.ParticleManager; import org.lumijiez.bugger.vfx.SpaceBackground; -import java.util.ArrayList; -import java.util.List; - public class Bugger { private static Bugger instance; private final World world = new World(new Vector2(0, 0), true);; private final SpaceBackground spaceBackground = new SpaceBackground(); - private final Array projectiles = new Array<>(); - private final List enemies = new ArrayList<>(); - private final Array entitiesToDestroy = new Array<>(); private final Box2DDebugRenderer debugRenderer = new Box2DDebugRenderer(); public static SpriteBatch spriteBatch = new SpriteBatch(); public static SpriteBatch uiBatch = new SpriteBatch(); @@ -65,7 +59,7 @@ public class Bugger { step(); cycleProjectiles(delta); - cycleEnemies(); + EnemyHandler.getInstance().cycle(); cycleParticles(delta); EntityCleaner.getInstance().tryClean(); @@ -73,7 +67,7 @@ public class Bugger { updateCamera(); renderPlayer(); - renderEnemies(delta); + EnemyHandler.getInstance().render(delta); // renderDebug(); UIRenderer.getInstance().renderUI(); @@ -90,11 +84,6 @@ public class Bugger { spaceBackground.render(); } - public void renderEnemies(float delta) { - EnemySpawner.getInstance().cycle(delta); - for (EnemyEntity enemy : enemies) enemy.cycle(); - } - public void renderPlayer() { player.render(); } @@ -119,14 +108,6 @@ public class Bugger { } } - public void cycleEnemies() { - for (EnemyEntity enemy : enemies) { - if (enemy.isMarkedToDestroy()) { - entitiesToDestroy.add(enemy); - } - } - } - public void cycleParticles(float delta) { ParticleManager.getInstance().update(delta); ParticleManager.getInstance().render(spriteBatch); @@ -140,10 +121,6 @@ public class Bugger { EntityCleaner.getInstance().disposeAll(); } - public List getEnemies() { - return enemies; - } - public World getWorld() { return world; } @@ -152,10 +129,6 @@ public class Bugger { return player; } - public Array getEntitiesToDestroy() { - return entitiesToDestroy; - } - public Array getProjectiles() { return projectiles; } diff --git a/core/src/main/java/org/lumijiez/bugger/handlers/EnemyHandler.java b/core/src/main/java/org/lumijiez/bugger/handlers/EnemyHandler.java new file mode 100644 index 0000000..978d7d2 --- /dev/null +++ b/core/src/main/java/org/lumijiez/bugger/handlers/EnemyHandler.java @@ -0,0 +1,38 @@ +package org.lumijiez.bugger.handlers; + +import org.lumijiez.bugger.Bugger; +import org.lumijiez.bugger.entities.enemies.EnemyEntity; + +import java.util.ArrayList; +import java.util.List; + +public class EnemyHandler { + private final List enemies = new ArrayList<>(); + private static EnemyHandler instance; + + private EnemyHandler() {} + + public static EnemyHandler getInstance() { + if (instance == null) { + instance = new EnemyHandler(); + } + return instance; + } + + public void render(float delta) { + EnemySpawner.getInstance().cycle(delta); + for (EnemyEntity enemy : enemies) enemy.cycle(); + } + + public void cycle() { + for (EnemyEntity enemy : enemies) { + if (enemy.isMarkedToDestroy()) { + Bugger.getInstance().getEntitiesToDestroy().add(enemy); + } + } + } + + public List getEnemies() { + return enemies; + } +} diff --git a/core/src/main/java/org/lumijiez/bugger/handlers/EnemySpawner.java b/core/src/main/java/org/lumijiez/bugger/handlers/EnemySpawner.java index d95974c..836ad48 100644 --- a/core/src/main/java/org/lumijiez/bugger/handlers/EnemySpawner.java +++ b/core/src/main/java/org/lumijiez/bugger/handlers/EnemySpawner.java @@ -33,15 +33,15 @@ public class EnemySpawner { public void spawn(Enemies enemy) { World world = Bugger.getInstance().getWorld(); Vector2 playerPos = Bugger.getInstance().getPlayer().getPosition(); - Bugger.getInstance().getEnemies().add(EnemyFactory.createEnemy(enemy, world, playerPos)); + EnemyHandler.getInstance().getEnemies().add(EnemyFactory.createEnemy(enemy, world, playerPos)); } public void spawn(Enemies enemy, World world, Vector2 position) { - Bugger.getInstance().getEnemies().add(EnemyFactory.createEnemy(enemy, world, position)); + EnemyHandler.getInstance().getEnemies().add(EnemyFactory.createEnemy(enemy, world, position)); } private void trySpawnRandom(World world, Vector2 position) { - Bugger.getInstance().getEnemies().add(EnemyFactory.createRandomEnemy(world, position)); + EnemyHandler.getInstance().getEnemies().add(EnemyFactory.createRandomEnemy(world, position)); } } diff --git a/core/src/main/java/org/lumijiez/bugger/handlers/EntityCleaner.java b/core/src/main/java/org/lumijiez/bugger/handlers/EntityCleaner.java index e8d2ae2..b3c9144 100644 --- a/core/src/main/java/org/lumijiez/bugger/handlers/EntityCleaner.java +++ b/core/src/main/java/org/lumijiez/bugger/handlers/EntityCleaner.java @@ -11,6 +11,8 @@ import org.lumijiez.bugger.vfx.ParticleManager; import java.util.List; public class EntityCleaner { + private final Array entitiesToDestroy = new Array<>(); + private static EntityCleaner instance; private EntityCleaner() {} @@ -23,9 +25,9 @@ public class EntityCleaner { } public void tryClean() { - Array entities = Bugger.getInstance().getEntitiesToDestroy(); + Array entities = entitiesToDestroy; Array projectiles = Bugger.getInstance().getProjectiles(); - List enemies = Bugger.getInstance().getEnemies(); + List enemies = EnemyHandler.getInstance().getEnemies(); World world = Bugger.getInstance().getWorld(); for (Entity entity : entities) { @@ -44,6 +46,10 @@ public class EntityCleaner { entities.clear(); } + public Array getEntitiesToDestroy() { + return entitiesToDestroy; + } + public void disposeAll() { Bugger.spriteBatch.dispose(); Bugger.uiBatch.dispose(); diff --git a/core/src/main/java/org/lumijiez/bugger/handlers/ProjectileHandler.java b/core/src/main/java/org/lumijiez/bugger/handlers/ProjectileHandler.java new file mode 100644 index 0000000..15a2602 --- /dev/null +++ b/core/src/main/java/org/lumijiez/bugger/handlers/ProjectileHandler.java @@ -0,0 +1,18 @@ +package org.lumijiez.bugger.handlers; + +import com.badlogic.gdx.utils.Array; +import org.lumijiez.bugger.entities.weapons.Projectile; + +public class ProjectileHandler { + private final Array projectiles = new Array<>(); + private static ProjectileHandler instance; + + private ProjectileHandler() {} + + public static ProjectileHandler getInstance() { + if (instance == null) { + instance = new ProjectileHandler(); + } + return instance; + } +} diff --git a/core/src/main/java/org/lumijiez/bugger/handlers/UIRenderer.java b/core/src/main/java/org/lumijiez/bugger/handlers/UIRenderer.java index c9e3d51..6a1d8d5 100644 --- a/core/src/main/java/org/lumijiez/bugger/handlers/UIRenderer.java +++ b/core/src/main/java/org/lumijiez/bugger/handlers/UIRenderer.java @@ -3,7 +3,6 @@ package org.lumijiez.bugger.handlers; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.BitmapFont; -import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import org.lumijiez.bugger.Bugger; import org.lumijiez.bugger.entities.Player; @@ -27,7 +26,7 @@ public class UIRenderer { SpriteBatch uiBatch = Bugger.uiBatch; OrthographicCamera uiCam = Bugger.uiCam; int kills = Bugger.kills; - int enemies = Bugger.getInstance().getEnemies().size(); + int enemies = EnemyHandler.getInstance().getEnemies().size(); int projectiles = Bugger.getInstance().getProjectiles().size; int bodies = Bugger.getInstance().getWorld().getBodyCount(); uiBatch.begin();