aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/fr/umlv
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/fr/umlv')
-rw-r--r--src/main/java/fr/umlv/java/wallj/Main.java49
-rw-r--r--src/main/java/fr/umlv/java/wallj/board/TileVec2.java2
-rw-r--r--src/main/java/fr/umlv/java/wallj/viewer/Viewer.java55
3 files changed, 83 insertions, 23 deletions
diff --git a/src/main/java/fr/umlv/java/wallj/Main.java b/src/main/java/fr/umlv/java/wallj/Main.java
index 7511980..4f35aab 100644
--- a/src/main/java/fr/umlv/java/wallj/Main.java
+++ b/src/main/java/fr/umlv/java/wallj/Main.java
@@ -1,20 +1,51 @@
1package fr.umlv.java.wallj; 1package fr.umlv.java.wallj;
2 2
3import fr.umlv.java.wallj.board.Board;
4import fr.umlv.java.wallj.board.BoardParser;
5import fr.umlv.java.wallj.viewer.Viewer;
3import fr.umlv.zen5.Application; 6import fr.umlv.zen5.Application;
4 7
5import java.awt.*; 8import java.awt.*;
9import java.io.IOException;
10import java.net.URISyntaxException;
11import java.nio.file.Path;
12import java.nio.file.Paths;
13import java.util.LinkedList;
14import java.util.List;
6 15
7public class Main { 16public class Main {
8 17
9 /** 18 private static Path getResourcePath(String str) throws URISyntaxException {
10 * Dummy entry point. 19 return Paths.get(Main.class.getResource(str).toURI());
11 * 20 }
12 * @param args no need to argue 21
13 */ 22 private static java.util.List<Path> getResourcePaths(String[] args) throws URISyntaxException {
14 public static void main(String[] args) { 23 LinkedList<Path> paths = new LinkedList<>();
15 System.out.println("Hello World!"); 24 if (args.length > 0) {
16 Application.run(Color.BLACK, (ac) -> { 25 for (String string : args) {
17 }); 26 paths.add(Paths.get(string));
27 }
28 } else {
29 paths.add(getResourcePath("/maps/smallvalid.txt"));
30 }
31 return paths;
18 } 32 }
19 33
34 public static void main(String[] args) {
35 java.util.List<Board> boards = new LinkedList<>();
36 try {
37 List<Path> boardPaths = Main.getResourcePaths(args);
38 for (Path path : boardPaths) {
39 boards.add(BoardParser.parse(path));
40 }
41 Viewer viewer = new Viewer(boards);
42 Application.run(Color.BLACK, viewer::eventLoop);
43 } catch (URISyntaxException e) {
44 System.err.println("Error in path syntax.");
45 System.exit(1);
46 } catch (IOException e) {
47 System.err.println("Something occurred while reading the files.");
48 System.exit(1);
49 }
50 }
20} 51}
diff --git a/src/main/java/fr/umlv/java/wallj/board/TileVec2.java b/src/main/java/fr/umlv/java/wallj/board/TileVec2.java
index 82200a7..1d95690 100644
--- a/src/main/java/fr/umlv/java/wallj/board/TileVec2.java
+++ b/src/main/java/fr/umlv/java/wallj/board/TileVec2.java
@@ -14,7 +14,7 @@ import java.util.stream.Collectors;
14 */ 14 */
15public final class TileVec2 { 15public final class TileVec2 {
16 16
17 private static final int TILE_DIM = 20; 17 public static final int TILE_DIM = 20;
18 private static final List<TileVec2> NEIGHBOR_OFFSETS = Arrays.asList( 18 private static final List<TileVec2> NEIGHBOR_OFFSETS = Arrays.asList(
19 of(0, -1), 19 of(0, -1),
20 of(-1, 0), 20 of(-1, 0),
diff --git a/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java b/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java
index 4ff432c..a87f418 100644
--- a/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java
+++ b/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java
@@ -1,34 +1,63 @@
1package fr.umlv.java.wallj.viewer; 1package fr.umlv.java.wallj.viewer;
2 2
3import fr.umlv.java.wallj.board.Board;
4import fr.umlv.java.wallj.board.BoardParser;
5import fr.umlv.java.wallj.board.BoardValidator;
6import fr.umlv.java.wallj.context.Context;
7import fr.umlv.java.wallj.context.Game;
8import fr.umlv.java.wallj.context.InputHandler;
9import fr.umlv.java.wallj.context.ScreenManager;
10import fr.umlv.java.wallj.event.Event;
11import fr.umlv.zen5.Application;
3import fr.umlv.zen5.ApplicationContext; 12import fr.umlv.zen5.ApplicationContext;
13import sun.awt.image.ImageWatched;
4 14
5import java.awt.*; 15import java.awt.*;
16import java.io.IOException;
17import java.net.URISyntaxException;
18import java.nio.file.Path;
19import java.nio.file.Paths;
20import java.util.LinkedList;
21import java.util.List;
22import java.util.Objects;
6 23
7/** 24/**
8 * Link between application and Zen 5 25 * Link between application and Zen 5
9 */ 26 */
10public class Viewer { 27public final class Viewer {
11
12 public static void main(String[] strings) {
13 28
29 private final Game currentGame;
30 /**
31 * @param boards the valid list of boards charged in the application
32 */
33 public Viewer(List<Board> boards) {
34 this.currentGame = new Game(Objects.requireNonNull(boards));
14 } 35 }
15 36
16 /** 37 /**
17 *
18 * @param applicationContext the application context from Zen 5 38 * @param applicationContext the application context from Zen 5
19 */ 39 */
20 public static void eventLoop(ApplicationContext applicationContext) { 40 public void eventLoop(ApplicationContext applicationContext) {
21 //TODO lambda exp for Application.run(Consumer<...>) 41 List<Event> events = new LinkedList<>();
22 //usage : Viewer::eventLoop 42 while (!currentGame.isOver()) {
43 applicationContext.renderFrame(graphics2D -> {
44 events.addAll(renderFrame(graphics2D, applicationContext, events)); //add the new events returned by updates
45 });
46 }
23 } 47 }
24 48
25 /** 49 /**
26 * 50 * @param graphics2D the graphic2D from Zen 5
27 * @param graphics2D the graphic2D from Zen 5
28 * @param applicationContext the application context from Zen 5 51 * @param applicationContext the application context from Zen 5
29 */ 52 */
30 public static void renderFrame(Graphics2D graphics2D,ApplicationContext applicationContext) { 53 public List<Event> renderFrame(Graphics2D graphics2D, ApplicationContext applicationContext, List<Event> events) {
31 //TODO lambda exp for ApplicationContext.renderFrame(Consumer<...>) 54 InputHandler inputHandler = new InputHandler(applicationContext);
32 //usage : graphics->Viewer.renderFrame(graphics2D,applicationContext) 55 ScreenManager screenManager = new ScreenManager(applicationContext, graphics2D);
56 events.addAll(inputHandler.getEvents());
57 Context context = new Context(currentGame, events, screenManager.clearScreen());
58 List<Event> newEvents = currentGame.update(context); //return new events created from update();
59 events.clear();
60 return newEvents;
33 } 61 }
34} \ No newline at end of file 62}
63