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 (limited to 'src/main') 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 From 22ca9ec1a0dc852a4e350875b71d9d716ea455dc Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Sat, 3 Feb 2018 00:04:58 +0100 Subject: Refactoring Game --- src/main/java/fr/umlv/java/wallj/context/Game.java | 39 +++++++++------------- 1 file changed, 15 insertions(+), 24 deletions(-) (limited to 'src/main') 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 56e380f..842d484 100644 --- a/src/main/java/fr/umlv/java/wallj/context/Game.java +++ b/src/main/java/fr/umlv/java/wallj/context/Game.java @@ -74,41 +74,32 @@ public final class Game implements Updateable { } - private void handleEvents(Context context){ - if (Events.findFirst(context.getEvents(), QuitGameOrder.class).isPresent()){ + 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()){ - + if (Events.findFirst(context.getEvents(), ConfirmOrder.class).isPresent()) { + if (currentStage.isCleared()) { + if (context.getGame().hasNextBoard()) { //continue + context.getGame().nextStage(); + } else { //no more board so game over => exiting + setOver(); + } + return; + } + retryStage(); } } + + /** * @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 isQuitGameOrder = Events.findFirst(context.getEvents(), QuitGameOrder.class).isPresent(); - boolean isStageCleared = Events.findFirst(context.getEvents(), StageClearedEvent.class).isPresent(); - - Game currentGame = context.getGame(); - if (isQuitGameOrder) { - currentGame.setOver(); - } else { - if (isConfirmOrder) { - if (isStageCleared) { - if (currentGame.hasNextBoard()) { //continue - currentGame.nextStage(); - } else { //no more board so game over => exiting - currentGame.setOver(); - } - } else {//retry - currentGame.retryStage(); - } - } - } + handleEvents(context); return currentStage.update(context); } -- cgit v1.2.3 From 59cae272f6a8c6f943ff6b0b6c69117f94c1625c Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Sat, 3 Feb 2018 01:30:55 +0100 Subject: Refactoring Game --- src/main/java/fr/umlv/java/wallj/context/Game.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/main') 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 842d484..46de147 100644 --- a/src/main/java/fr/umlv/java/wallj/context/Game.java +++ b/src/main/java/fr/umlv/java/wallj/context/Game.java @@ -74,6 +74,14 @@ public final class Game implements Updateable { } + + private void goToNext(){ + if (hasNextBoard()) { //continue + nextStage(); + return; + } + setOver(); + } private void handleEvents(Context context) { if (Events.findFirst(context.getEvents(), QuitGameOrder.class).isPresent()) { context.getGame().setOver(); @@ -81,11 +89,7 @@ public final class Game implements Updateable { } if (Events.findFirst(context.getEvents(), ConfirmOrder.class).isPresent()) { if (currentStage.isCleared()) { - if (context.getGame().hasNextBoard()) { //continue - context.getGame().nextStage(); - } else { //no more board so game over => exiting - setOver(); - } + goToNext(); return; } retryStage(); -- cgit v1.2.3 From 61e123ebdabbc3baae7e8aa6cfd4ce137f29dad5 Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Sat, 3 Feb 2018 01:31:19 +0100 Subject: Removing TODO --- src/main/java/fr/umlv/java/wallj/viewer/Main.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/fr/umlv/java/wallj/viewer/Main.java b/src/main/java/fr/umlv/java/wallj/viewer/Main.java index ac1a088..01c6211 100644 --- a/src/main/java/fr/umlv/java/wallj/viewer/Main.java +++ b/src/main/java/fr/umlv/java/wallj/viewer/Main.java @@ -34,7 +34,6 @@ public class Main { return paths; } - // TODO: use System.getProperty("levels") to get the path to the level directory public static void main(String[] args) { List boards = new LinkedList<>(); try { -- cgit v1.2.3