diff options
Diffstat (limited to 'src/ch/epfl')
-rw-r--r-- | src/ch/epfl/xblast/client/GameState.java | 10 | ||||
-rw-r--r-- | src/ch/epfl/xblast/client/XBlastComponent.java | 36 |
2 files changed, 24 insertions, 22 deletions
diff --git a/src/ch/epfl/xblast/client/GameState.java b/src/ch/epfl/xblast/client/GameState.java index 480c6a1..9a4d37b 100644 --- a/src/ch/epfl/xblast/client/GameState.java +++ b/src/ch/epfl/xblast/client/GameState.java | |||
@@ -8,10 +8,8 @@ import ch.epfl.xblast.client.painter.ScorePainter; | |||
8 | import ch.epfl.xblast.client.painter.TimeLinePainter; | 8 | import ch.epfl.xblast.client.painter.TimeLinePainter; |
9 | 9 | ||
10 | import java.awt.*; | 10 | import java.awt.*; |
11 | import java.util.Collections; | 11 | import java.util.*; |
12 | import java.util.List; | 12 | import java.util.List; |
13 | import java.util.Map; | ||
14 | import java.util.Objects; | ||
15 | import java.util.stream.Collectors; | 13 | import java.util.stream.Collectors; |
16 | 14 | ||
17 | /** | 15 | /** |
@@ -27,6 +25,12 @@ public final class GameState { | |||
27 | */ | 25 | */ |
28 | public static final class Player { | 26 | public static final class Player { |
29 | 27 | ||
28 | static final Comparator<Player> POSITION_COMPARATOR = (p1, p2) -> p1.position().compareTo(p2.position()); | ||
29 | |||
30 | static Comparator<Player> idPushingComparator(PlayerID firstClassID) { | ||
31 | return (p1, p2) -> p1.id() == firstClassID ? -1 : 0; | ||
32 | } | ||
33 | |||
30 | private final PlayerID id; | 34 | private final PlayerID id; |
31 | private final int lives; | 35 | private final int lives; |
32 | private final SubCell position; | 36 | private final SubCell position; |
diff --git a/src/ch/epfl/xblast/client/XBlastComponent.java b/src/ch/epfl/xblast/client/XBlastComponent.java index fe5bf5a..0ef8c5c 100644 --- a/src/ch/epfl/xblast/client/XBlastComponent.java +++ b/src/ch/epfl/xblast/client/XBlastComponent.java | |||
@@ -107,27 +107,25 @@ public final class XBlastComponent extends JComponent { | |||
107 | drawString(g, e.getKey(), e.getValue().toString()); | 107 | drawString(g, e.getKey(), e.getValue().toString()); |
108 | } | 108 | } |
109 | 109 | ||
110 | } | 110 | /** |
111 | 111 | * Draws the players on the graphic context. | |
112 | private static Comparator<GameState.Player> buildPlayerComparator(PlayerID priorityPlayer) { | 112 | * |
113 | Comparator<GameState.Player> coordinateComparator = | 113 | * @param g the graphic context |
114 | (p1, p2) -> p1.position().compareTo(p2.position()); | 114 | * @param players the list of players to be displayed |
115 | 115 | */ | |
116 | Comparator<GameState.Player> idComparator = | 116 | private static void drawPlayers(Graphics2D g, List<GameState.Player> players) { |
117 | (p1, p2) -> p1.id() == priorityPlayer ? -1 : 0; | 117 | for (GameState.Player p : players) |
118 | drawImage(g, Grid.positionForPlayer(p), p.image()); | ||
119 | } | ||
118 | 120 | ||
119 | return coordinateComparator.thenComparing(idComparator); | ||
120 | } | 121 | } |
121 | 122 | ||
122 | /** | 123 | private static List<GameState.Player> sortPlayers(List<GameState.Player> players, PlayerID currentPlayerID) { |
123 | * Draws the players on the graphic context. | 124 | return Lists.sorted( |
124 | * | 125 | players, |
125 | * @param g the graphic context | 126 | GameState.Player |
126 | * @param players the list of players to be displayed | 127 | .POSITION_COMPARATOR |
127 | */ | 128 | .thenComparing(GameState.Player.idPushingComparator(currentPlayerID))); |
128 | private static void drawPlayers(Graphics2D g, List<GameState.Player> players) { | ||
129 | for (GameState.Player p : players) | ||
130 | Painter.drawImage(g, Grid.positionForPlayer(p), p.image()); | ||
131 | } | 129 | } |
132 | 130 | ||
133 | private GameState gameState; | 131 | private GameState gameState; |
@@ -172,7 +170,7 @@ public final class XBlastComponent extends JComponent { | |||
172 | Painter.drawImageMap(g, Lists.linearMap(Grid.SCORE_BG_POSITIONS, this.gameState.scores())); | 170 | Painter.drawImageMap(g, Lists.linearMap(Grid.SCORE_BG_POSITIONS, this.gameState.scores())); |
173 | Painter.drawImageMap(g, Lists.linearMap(Grid.TIME_LINE_POSITIONS, this.gameState.ticks())); | 171 | Painter.drawImageMap(g, Lists.linearMap(Grid.TIME_LINE_POSITIONS, this.gameState.ticks())); |
174 | Painter.drawStringMap(g, Lists.traverseMaps(Lists.invertMap(Grid.SCORE_TXT_POSITIONS), this.gameState.playerScores())); | 172 | Painter.drawStringMap(g, Lists.traverseMaps(Lists.invertMap(Grid.SCORE_TXT_POSITIONS), this.gameState.playerScores())); |
175 | drawPlayers(g, Lists.sorted(this.gameState.players(), buildPlayerComparator(this.playerID))); | 173 | Painter.drawPlayers(g, sortPlayers(this.gameState.players(), this.playerID)); |
176 | } | 174 | } |
177 | 175 | ||
178 | } | 176 | } |