enemy management

This commit is contained in:
Daniel
2024-10-19 23:28:00 +03:00
parent fe6e1bf62b
commit 414fcb61ce
6 changed files with 70 additions and 36 deletions

View File

@@ -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<Projectile> projectiles = new Array<>();
private final List<EnemyEntity> enemies = new ArrayList<>();
private final Array<Entity> 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<EnemyEntity> getEnemies() {
return enemies;
}
public World getWorld() {
return world;
}
@@ -152,10 +129,6 @@ public class Bugger {
return player;
}
public Array<Entity> getEntitiesToDestroy() {
return entitiesToDestroy;
}
public Array<Projectile> getProjectiles() {
return projectiles;
}

View File

@@ -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<EnemyEntity> 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<EnemyEntity> getEnemies() {
return enemies;
}
}

View File

@@ -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));
}
}

View File

@@ -11,6 +11,8 @@ import org.lumijiez.bugger.vfx.ParticleManager;
import java.util.List;
public class EntityCleaner {
private final Array<Entity> entitiesToDestroy = new Array<>();
private static EntityCleaner instance;
private EntityCleaner() {}
@@ -23,9 +25,9 @@ public class EntityCleaner {
}
public void tryClean() {
Array<Entity> entities = Bugger.getInstance().getEntitiesToDestroy();
Array<Entity> entities = entitiesToDestroy;
Array<Projectile> projectiles = Bugger.getInstance().getProjectiles();
List<EnemyEntity> enemies = Bugger.getInstance().getEnemies();
List<EnemyEntity> enemies = EnemyHandler.getInstance().getEnemies();
World world = Bugger.getInstance().getWorld();
for (Entity entity : entities) {
@@ -44,6 +46,10 @@ public class EntityCleaner {
entities.clear();
}
public Array<Entity> getEntitiesToDestroy() {
return entitiesToDestroy;
}
public void disposeAll() {
Bugger.spriteBatch.dispose();
Bugger.uiBatch.dispose();

View File

@@ -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<Projectile> projectiles = new Array<>();
private static ProjectileHandler instance;
private ProjectileHandler() {}
public static ProjectileHandler getInstance() {
if (instance == null) {
instance = new ProjectileHandler();
}
return instance;
}
}

View File

@@ -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();