diff --git a/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java b/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java index 37dd07117..970c44fd6 100644 --- a/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java +++ b/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java @@ -21,6 +21,7 @@ public MainGameActions(GdxGame game) { public void create() { entity.getEvents().addListener("exit", this::onExit); entity.getEvents().addListener("lose", this::onLose); + //entity.getEvents().addListener("win", this::onWin); } /** diff --git a/source/core/src/main/com/csse3200/game/components/tasks/waves/WaveTask.java b/source/core/src/main/com/csse3200/game/components/tasks/waves/WaveTask.java index 4be3210de..dbf8fbaed 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/waves/WaveTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/waves/WaveTask.java @@ -103,8 +103,8 @@ public void update() { ServiceLocator.getWaveService().setNextWaveTime(currentTime + (spawnDelay * 1000)); // Check if level has been completed - no more waves remaining - if (currentWaveIndex == this.level.getNumWaves()) { - logger.info("No waves remaining, level completed"); + if (currentWaveIndex == this.level.getNumWaves() - 1) { + logger.info("No waves remaining"); ServiceLocator.getWaveService().setLevelCompleted(); } else { diff --git a/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java b/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java index 55623b881..d7de9a289 100644 --- a/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java +++ b/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java @@ -215,14 +215,21 @@ public void render(float delta) { // Checks if tower selected is dead this.getUpgradedInputHandler().checkForDispose(); + ServiceLocator.getWaveService().getDisplay().updateTimerButton(); + ServiceLocator.getWaveService().getDisplay().updateMobCount(); + renderer.render(); + // Check if the game has ended if (ServiceLocator.getGameEndService().hasGameEnded()) { ui.getEvents().trigger("lose"); } - ServiceLocator.getWaveService().getDisplay().updateTimerButton(); - ServiceLocator.getWaveService().getDisplay().updateMobCount(); - renderer.render(); + // Check if all waves are completed and the level has been completed + if (ServiceLocator.getWaveService().isLevelCompleted()) { + logger.info("Main game level completed detected, go to win screen"); + ui.getEvents().trigger("lose"); // needs to change to: ui.getEvents().trigger("win"); + // Add something in to unlock the next planet/level? + } } @Override @@ -297,6 +304,7 @@ private void createUI() { .addComponent(ServiceLocator.getWaveService().getDisplay()) .addComponent(new MainGameExitDisplay()) .addComponent(new MainGameLoseDisplay()) + //.addComponent(new MainGameWinDisplay()) <- needs to be uncommented when team 3 have implemented the ui .addComponent(new MainGamePauseDisplay(this.game)) .addComponent(new Terminal()) .addComponent(inputComponent) diff --git a/source/core/src/main/com/csse3200/game/services/WaveService.java b/source/core/src/main/com/csse3200/game/services/WaveService.java index c7ddacdef..476b87a89 100644 --- a/source/core/src/main/com/csse3200/game/services/WaveService.java +++ b/source/core/src/main/com/csse3200/game/services/WaveService.java @@ -64,6 +64,7 @@ public void updateEnemyCount() { */ public void setLevelCompleted() { if (!levelCompleted) { + logger.info("Level set to completed"); levelCompleted = true; } }