aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/fr/umlv
diff options
context:
space:
mode:
authorAdam NAILI2018-01-08 19:21:37 +0100
committerAdam NAILI2018-01-08 19:21:37 +0100
commit7aadcb18bcf78e6d898dcab23ab25afe0fd449d8 (patch)
tree0c8f033fb959d77f04da9e81fdee1bd8d568e4d8 /src/main/java/fr/umlv
parentf0bed38f11b7cc218f2c9b6484885faf5e4ac4d1 (diff)
downloadwallj-7aadcb18bcf78e6d898dcab23ab25afe0fd449d8.tar.gz
Implementing some context classes (Context, GraphicsContext, InputHandler, Game)
Diffstat (limited to 'src/main/java/fr/umlv')
-rw-r--r--src/main/java/fr/umlv/java/wallj/context/Context.java46
-rw-r--r--src/main/java/fr/umlv/java/wallj/context/Game.java62
-rw-r--r--src/main/java/fr/umlv/java/wallj/context/GraphicsContext.java35
-rw-r--r--src/main/java/fr/umlv/java/wallj/context/InputHandler.java55
4 files changed, 194 insertions, 4 deletions
diff --git a/src/main/java/fr/umlv/java/wallj/context/Context.java b/src/main/java/fr/umlv/java/wallj/context/Context.java
index a20da6f..a924c2b 100644
--- a/src/main/java/fr/umlv/java/wallj/context/Context.java
+++ b/src/main/java/fr/umlv/java/wallj/context/Context.java
@@ -1,5 +1,49 @@
1package fr.umlv.java.wallj.context; 1package fr.umlv.java.wallj.context;
2 2
3public class Context { 3import fr.umlv.java.wallj.event.Event;
4import fr.umlv.java.wallj.model.Stage;
5
6import java.util.List;
7import java.util.Objects;
8
9/**
10 * A context used to store the current state of the application at one tick.
11 */
12public final class Context {
4 //TODO Class Context 13 //TODO Class Context
14 private final Stage stage;
15 private final List<Event> events;
16 private final GraphicsContext graphicsContext;
17
18 /**
19 * @param stage the current stage
20 * @param events the list of events of the tick
21 * @param graphicsContext the current graphics context
22 */
23 public Context(Stage stage, List<Event> events, GraphicsContext graphicsContext) {
24 this.stage = Objects.requireNonNull(stage);
25 this.events = Objects.requireNonNull(events);
26 this.graphicsContext = Objects.requireNonNull(graphicsContext);
27 }
28
29 /**
30 * @return the stage
31 */
32 public Stage getStage() {
33 return stage;
34 }
35
36 /**
37 * @return the list of events
38 */
39 public List<Event> getEvents() {
40 return events;
41 }
42
43 /**
44 * @return the graphics context
45 */
46 public GraphicsContext getGraphicsContext() {
47 return graphicsContext;
48 }
5} 49}
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 f32ed65..b3418c4 100644
--- a/src/main/java/fr/umlv/java/wallj/context/Game.java
+++ b/src/main/java/fr/umlv/java/wallj/context/Game.java
@@ -1,5 +1,65 @@
1package fr.umlv.java.wallj.context; 1package fr.umlv.java.wallj.context;
2 2
3public class Game { 3import fr.umlv.java.wallj.board.Board;
4import fr.umlv.java.wallj.controller.GameController;
5
6import java.util.Collections;
7import java.util.List;
8import java.util.NoSuchElementException;
9import java.util.Objects;
10
11/**
12 * A game
13 */
14public final class Game {
4 //TODO 15 //TODO
16 private final GameController gameController;
17 private int indexBoard;
18 private final List<Board> boards;
19
20 /**
21 * @param gameController the controller of the game
22 * @param boards the list of boards charged for the game
23 */
24 public Game(GameController gameController, List<Board> boards) {
25 this.gameController = Objects.requireNonNull(gameController);
26 Objects.requireNonNull(boards);
27 if (boards.isEmpty()) {
28 throw new IllegalArgumentException("The list of boards is empty, not able to create a correct game from this.");
29 }
30 this.boards = Collections.unmodifiableList(boards);
31 this.indexBoard = 0;
32 }
33
34 /**
35 * @return the game controller
36 */
37 public GameController getGameController() {
38 return gameController;
39 }
40
41 /**
42 * @return the current board of the game.
43 */
44 public Board getCurrentBoard() {
45 return boards.get(indexBoard);
46 }
47
48 /**
49 * @return a boolean on the condition of having a next Board in our game.
50 */
51 public boolean hasNextBoard() {
52 return indexBoard + 1 < boards.size();
53 }
54
55 /**
56 * @return the next board
57 */
58 public Board nextBoard() {
59 if (indexBoard >= boards.size()) {
60 throw new NoSuchElementException("No more board for the game.");
61 }
62 indexBoard++;
63 return boards.get(indexBoard);
64 }
5} 65}
diff --git a/src/main/java/fr/umlv/java/wallj/context/GraphicsContext.java b/src/main/java/fr/umlv/java/wallj/context/GraphicsContext.java
index 57e21fe..214eeb0 100644
--- a/src/main/java/fr/umlv/java/wallj/context/GraphicsContext.java
+++ b/src/main/java/fr/umlv/java/wallj/context/GraphicsContext.java
@@ -1,5 +1,38 @@
1package fr.umlv.java.wallj.context; 1package fr.umlv.java.wallj.context;
2 2
3public class GraphicsContext { 3import fr.umlv.zen5.ScreenInfo;
4
5import java.awt.Graphics2D;
6import java.util.Objects;
7
8/**
9 * A context of the current graphic status of the application
10 */
11public final class GraphicsContext {
4 //TODO Class GraphicsContext 12 //TODO Class GraphicsContext
13 private final Graphics2D graphics2D;
14 private final ScreenInfo screenInfo;
15
16 /**
17 * @param graphics2D the current drawable canvas
18 * @param screenInfo the informations about the screen
19 */
20 public GraphicsContext(Graphics2D graphics2D, ScreenInfo screenInfo) {
21 this.graphics2D = Objects.requireNonNull(graphics2D);
22 this.screenInfo = Objects.requireNonNull(screenInfo);
23 }
24
25 /**
26 * @return the drawable canvas
27 */
28 public Graphics2D getGraphics2D() {
29 return graphics2D;
30 }
31
32 /**
33 * @return the screen informations
34 */
35 public ScreenInfo getScreenInfo() {
36 return screenInfo;
37 }
5} 38}
diff --git a/src/main/java/fr/umlv/java/wallj/context/InputHandler.java b/src/main/java/fr/umlv/java/wallj/context/InputHandler.java
index 142a8e8..2881da9 100644
--- a/src/main/java/fr/umlv/java/wallj/context/InputHandler.java
+++ b/src/main/java/fr/umlv/java/wallj/context/InputHandler.java
@@ -1,5 +1,58 @@
1package fr.umlv.java.wallj.context; 1package fr.umlv.java.wallj.context;
2 2
3public class InputHandler { 3import fr.umlv.java.wallj.board.TileVec2;
4import fr.umlv.java.wallj.event.DropBombEvent;
5import fr.umlv.java.wallj.event.MoveRobotEvent;
6import fr.umlv.zen5.ApplicationContext;
7import fr.umlv.zen5.Event;
8import fr.umlv.zen5.KeyboardKey;
9import org.jbox2d.common.Vec2;
10
11import java.awt.geom.Point2D;
12import java.util.LinkedList;
13import java.util.List;
14import java.util.Objects;
15
16import static fr.umlv.java.wallj.board.TileVec2.of;
17
18public final class InputHandler {
4 //TODO Class InputHandler 19 //TODO Class InputHandler
20 private final ApplicationContext applicationContext;
21
22 /**
23 * @param applicationContext
24 */
25 public InputHandler(ApplicationContext applicationContext) {
26 this.applicationContext = Objects.requireNonNull(applicationContext);
27 }
28
29 /**
30 * @return
31 */
32 List<fr.umlv.java.wallj.event.Event> getEvents() {
33 LinkedList<fr.umlv.java.wallj.event.Event> events = new LinkedList<>();
34 fr.umlv.zen5.Event event = applicationContext.pollEvent();
35 if (event != null) {
36 Event.Action action = event.getAction();
37 Point2D.Float location = event.getLocation();
38 if (location != null) { //Mouse Handling
39 if (action == Event.Action.POINTER_DOWN) {
40 Vec2 mouseLocation = new Vec2(location.x, location.y);
41 TileVec2 mouseTileLocation = TileVec2.of(mouseLocation);
42 events.add(new MoveRobotEvent(mouseTileLocation));
43