diff options
Diffstat (limited to 'src/main/java/fr/umlv')
-rw-r--r-- | src/main/java/fr/umlv/java/wallj/Main.java | 49 | ||||
-rw-r--r-- | src/main/java/fr/umlv/java/wallj/board/TileVec2.java | 2 | ||||
-rw-r--r-- | src/main/java/fr/umlv/java/wallj/viewer/Viewer.java | 55 |
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 @@ | |||
1 | package fr.umlv.java.wallj; | 1 | package fr.umlv.java.wallj; |
2 | 2 | ||
3 | import fr.umlv.java.wallj.board.Board; | ||
4 | import fr.umlv.java.wallj.board.BoardParser; | ||
5 | import fr.umlv.java.wallj.viewer.Viewer; | ||
3 | import fr.umlv.zen5.Application; | 6 | import fr.umlv.zen5.Application; |
4 | 7 | ||
5 | import java.awt.*; | 8 | import java.awt.*; |
9 | import java.io.IOException; | ||
10 | import java.net.URISyntaxException; | ||
11 | import java.nio.file.Path; | ||
12 | import java.nio.file.Paths; | ||
13 | import java.util.LinkedList; | ||
14 | import java.util.List; | ||
6 | 15 | ||
7 | public class Main { | 16 | public 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 | */ |
15 | public final class TileVec2 { | 15 | public 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 @@ | |||
1 | package fr.umlv.java.wallj.viewer; | 1 | package fr.umlv.java.wallj.viewer; |
2 | 2 | ||
3 | import fr.umlv.java.wallj.board.Board; | ||
4 | import fr.umlv.java.wallj.board.BoardParser; | ||
5 | import fr.umlv.java.wallj.board.BoardValidator; | ||
6 | import fr.umlv.java.wallj.context.Context; | ||
7 | import fr.umlv.java.wallj.context.Game; | ||
8 | import fr.umlv.java.wallj.context.InputHandler; | ||
9 | import fr.umlv.java.wallj.context.ScreenManager; | ||
10 | import fr.umlv.java.wallj.event.Event; | ||
11 | import fr.umlv.zen5.Application; | ||
3 | import fr.umlv.zen5.ApplicationContext; | 12 | import fr.umlv.zen5.ApplicationContext; |
13 | import sun.awt.image.ImageWatched; | ||
4 | 14 | ||
5 | import java.awt.*; | 15 | import java.awt.*; |
16 | import java.io.IOException; | ||
17 | import java.net.URISyntaxException; | ||
18 | import java.nio.file.Path; | ||
19 | import java.nio.file.Paths; | ||
20 | import java.util.LinkedList; | ||
21 | import java.util.List; | ||
22 | import java.util.Objects; | ||
6 | 23 | ||
7 | /** | 24 | /** |
8 | * Link between application and Zen 5 | 25 | * Link between application and Zen 5 |
9 | */ | 26 | */ |
10 | public class Viewer { | 27 | public 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 | |||