From 088376cba305934dd090c0dc9047a2a1ac9fa0f6 Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Fri, 2 Feb 2018 22:57:28 +0100 Subject: Refactoring events and Game (not finished yet) --- src/main/java/fr/umlv/java/wallj/context/Game.java | 30 +++++++++++++--------- .../fr/umlv/java/wallj/event/GameOverEvent.java | 10 -------- .../fr/umlv/java/wallj/event/QuitGameOrder.java | 9 +++++++ .../fr/umlv/java/wallj/viewer/InputHandler.java | 4 +-- 4 files changed, 29 insertions(+), 24 deletions(-) delete mode 100644 src/main/java/fr/umlv/java/wallj/event/GameOverEvent.java create mode 100644 src/main/java/fr/umlv/java/wallj/event/QuitGameOrder.java diff --git a/src/main/java/fr/umlv/java/wallj/context/Game.java b/src/main/java/fr/umlv/java/wallj/context/Game.java index 422e9b7..56e380f 100644 --- a/src/main/java/fr/umlv/java/wallj/context/Game.java +++ b/src/main/java/fr/umlv/java/wallj/context/Game.java @@ -1,10 +1,7 @@ package fr.umlv.java.wallj.context; import fr.umlv.java.wallj.board.Board; -import fr.umlv.java.wallj.event.ConfirmOrder; -import fr.umlv.java.wallj.event.Event; -import fr.umlv.java.wallj.event.Events; -import fr.umlv.java.wallj.event.GameOverEvent; +import fr.umlv.java.wallj.event.*; import java.util.*; @@ -76,21 +73,32 @@ public final class Game implements Updateable { currentStage = new Stage(currentStage.getBoard()); } + + private void handleEvents(Context context){ + if (Events.findFirst(context.getEvents(), QuitGameOrder.class).isPresent()){ + context.getGame().setOver(); + return; + } + if (Events.findFirst(context.getEvents(), ConfirmOrder.class).isPresent()){ + + } + } /** * @param context the current context * @return a list of new events */ @Override public List update(Context context) { - boolean isConfirmOrder = Events.findFirst(context.getEvents(),ConfirmOrder.class).isPresent(); - boolean isGameOverEvent = Events.findFirst(context.getEvents(),GameOverEvent.class).isPresent(); + boolean isConfirmOrder = Events.findFirst(context.getEvents(), ConfirmOrder.class).isPresent(); + boolean isQuitGameOrder = Events.findFirst(context.getEvents(), QuitGameOrder.class).isPresent(); + boolean isStageCleared = Events.findFirst(context.getEvents(), StageClearedEvent.class).isPresent(); + Game currentGame = context.getGame(); - LinkedList events = new LinkedList<>(); - if (isGameOverEvent) { + if (isQuitGameOrder) { currentGame.setOver(); } else { if (isConfirmOrder) { - if (false /*currentGame.getCurrentStage().isCleared()*/) { // FIXME: use StageClearedEvent + if (isStageCleared) { if (currentGame.hasNextBoard()) { //continue currentGame.nextStage(); } else { //no more board so game over => exiting @@ -101,9 +109,7 @@ public final class Game implements Updateable { } } } - - // FIXME: update underlying stage and merge generated events - return events; + return currentStage.update(context); } diff --git a/src/main/java/fr/umlv/java/wallj/event/GameOverEvent.java b/src/main/java/fr/umlv/java/wallj/event/GameOverEvent.java deleted file mode 100644 index 4365dc4..0000000 --- a/src/main/java/fr/umlv/java/wallj/event/GameOverEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.umlv.java.wallj.event; - -/** - * Signals that the game is over. - * - * @author Pacien TRAN-GIRARD - */ -public final class GameOverEvent implements GameEvent { - // void -} diff --git a/src/main/java/fr/umlv/java/wallj/event/QuitGameOrder.java b/src/main/java/fr/umlv/java/wallj/event/QuitGameOrder.java new file mode 100644 index 0000000..2cabac1 --- /dev/null +++ b/src/main/java/fr/umlv/java/wallj/event/QuitGameOrder.java @@ -0,0 +1,9 @@ +package fr.umlv.java.wallj.event; + +/** + * Signals that the game is over. + * + * @author Pacien TRAN-GIRARD + */ +public final class QuitGameOrder implements InputEvent { +} diff --git a/src/main/java/fr/umlv/java/wallj/viewer/InputHandler.java b/src/main/java/fr/umlv/java/wallj/viewer/InputHandler.java index a8f53d3..9eea443 100644 --- a/src/main/java/fr/umlv/java/wallj/viewer/InputHandler.java +++ b/src/main/java/fr/umlv/java/wallj/viewer/InputHandler.java @@ -3,7 +3,7 @@ package fr.umlv.java.wallj.viewer; import fr.umlv.java.wallj.board.TileVec2; import fr.umlv.java.wallj.event.BombSetupOrder; import fr.umlv.java.wallj.event.ConfirmOrder; -import fr.umlv.java.wallj.event.GameOverEvent; +import fr.umlv.java.wallj.event.QuitGameOrder; import fr.umlv.java.wallj.event.MoveRobotOrder; import fr.umlv.zen5.ApplicationContext; import fr.umlv.zen5.Event; @@ -58,7 +58,7 @@ public final class InputHandler { events.add(new ConfirmOrder()); break; case Q: - events.add(new GameOverEvent()); + events.add(new QuitGameOrder()); break; } } -- cgit v1.2.3