aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ch/epfl/xblast/server/Bomb.java12
-rw-r--r--src/ch/epfl/xblast/server/GameState.java49
-rw-r--r--src/ch/epfl/xblast/server/Player.java62
3 files changed, 93 insertions, 30 deletions
diff --git a/src/ch/epfl/xblast/server/Bomb.java b/src/ch/epfl/xblast/server/Bomb.java
index f32960f..2eacf6c 100644
--- a/src/ch/epfl/xblast/server/Bomb.java
+++ b/src/ch/epfl/xblast/server/Bomb.java
@@ -69,6 +69,8 @@ public final class Bomb {
69 } 69 }
70 70
71 /** 71 /**
72 * Returns the Bomb's owner ID.
73 *
72 * @return the ID of the owner of the bomb 74 * @return the ID of the owner of the bomb
73 */ 75 */
74 public PlayerID ownerId() { 76 public PlayerID ownerId() {
@@ -76,6 +78,8 @@ public final class Bomb {
76 } 78 }
77 79
78 /** 80 /**
81 * Returns the Bomb's position Cell.
82 *
79 * @return the position of the bomb 83 * @return the position of the bomb
80 */ 84 */
81 public Cell position() { 85 public Cell position() {
@@ -83,6 +87,8 @@ public final class Bomb {
83 } 87 }
84 88
85 /** 89 /**
90 * Returns the Bomb's fuse length sequence.
91 *
86 * @return the length of the fuse 92 * @return the length of the fuse
87 */ 93 */
88 public Sq<Integer> fuseLengths() { 94 public Sq<Integer> fuseLengths() {
@@ -90,6 +96,8 @@ public final class Bomb {
90 } 96 }
91 97
92 /** 98 /**
99 * Returns the Bomb's fuse length.
100 *
93 * @return the remaining time before the explosion 101 * @return the remaining time before the explosion
94 */ 102 */
95 public int fuseLength() { 103 public int fuseLength() {
@@ -97,6 +105,8 @@ public final class Bomb {
97 } 105 }
98 106
99 /** 107 /**
108 * Returns the Bomb's range.
109 *
100 * @return the range of the Bomb 110 * @return the range of the Bomb
101 */ 111 */
102 public int range() { 112 public int range() {
@@ -104,6 +114,8 @@ public final class Bomb {
104 } 114 }
105 115
106 /** 116 /**
117 * Builds and returns a new explosion sequence.
118 *
107 * @return the explosion 119 * @return the explosion
108 */ 120 */
109 public List<Sq<Sq<Cell>>> explosion() { 121 public List<Sq<Sq<Cell>>> explosion() {
diff --git a/src/ch/epfl/xblast/server/GameState.java b/src/ch/epfl/xblast/server/GameState.java
index fefaf02..2797e41 100644
--- a/src/ch/epfl/xblast/server/GameState.java
+++ b/src/ch/epfl/xblast/server/GameState.java
@@ -206,9 +206,9 @@ public final class GameState {
206 /** 206 /**
207 * Generate the new Sequence of Directed Positions. 207 * Generate the new Sequence of Directed Positions.
208 * 208 *
209 * @param player0 209 * @param player0 the Player
210 * @param requestedDirection 210 * @param requestedDirection the requested Direction
211 * @return 211 * @return the path
212 */ 212 */
213 private static Sq<Player.DirectedPosition> nextPath(Player player0, Direction requestedDirection) { 213 private static Sq<Player.DirectedPosition> nextPath(Player player0, Direction requestedDirection) {
214 if (!player0.lifeState().canMove()) 214 if (!player0.lifeState().canMove())
@@ -232,13 +232,13 @@ public final class GameState {
232 } 232 }
233 233
234 /** 234 /**
235 * Check possible collisions and update the Sequence if necessary (kinda ugly right now) 235 * Checks for possible collisions and update the path if necessary.
236 * 236 *
237 * @param player0 237 * @param player0 the Player
238 * @param projectedPath 238 * @param projectedPath the current path projection
239 * @param board1 239 * @param board1 the updated Board
240 * @param bombedCells1 240 * @param bombedCells1 the Set of bombed Cell-s
241 * @return 241 * @return the corrected path
242 */ 242 */
243 private static Sq<Player.DirectedPosition> handleCollisions(Player player0, 243 private static Sq<Player.DirectedPosition> handleCollisions(Player player0,
244 Sq<Player.DirectedPosition> projectedPath, 244 Sq<Player.DirectedPosition> projectedPath,
@@ -253,11 +253,12 @@ public final class GameState {
253 } 253 }
254 254
255 /** 255 /**
256 * @param player0 256 * Computes a projection of the next DirectedPosition.
257 * @param projectedPath 257 *
258 * @return 258 * @param player0 the Player
259 * @param projectedPath the projected path
260 * @return the projected next DirectedPosition
259 */ 261 */
260
261 private static Player.DirectedPosition projectedDirectedPosition(Player player0, Sq<Player.DirectedPosition> projectedPath) { 262 private static Player.DirectedPosition projectedDirectedPosition(Player player0, Sq<Player.DirectedPosition> projectedPath) {
262 if (!player0.lifeState().canMove()) 263 if (!player0.lifeState().canMove())
263 return new Player.DirectedPosition(player0.position(), player0.direction()); 264 return new Player.DirectedPosition(player0.position(), player0.direction());
@@ -267,11 +268,13 @@ public final class GameState {
267 } 268 }
268 269
269 /** 270 /**
270 * @param player0 271 * Returns T(the player is colliding with an object).
271 * @param projectedCell 272 *
272 * @param board1 273 * @param player0 the Player
273 * @param bombedCells1 274 * @param projectedCell the projected next Cell
274 * @return 275 * @param board1 the updated Board
276 * @param bombedCells1 the Set of bombed Cell-s
277 * @return T(the player is colliding with an object)
275 */ 278 */
276 private static boolean isColliding(Player player0, Cell projectedCell, Board board1, Set<Cell> bombedCells1) { 279 private static boolean isColliding(Player player0, Cell projectedCell, Board board1, Set<Cell> bombedCells1) {
277 if (!board1.blockAt(projectedCell).canHostPlayer()) 280 if (!board1.blockAt(projectedCell).canHostPlayer())
@@ -285,12 +288,12 @@ public final class GameState {
285 } 288 }
286 289
287 /** 290 /**
288 * Apply damages and generate a new LifeState Sequence 291 * Applies damages and generate a new LifeState sequence.
289 * 292 *
290 * @param player0 293 * @param player0 the Player
291 * @param directedPositions1 294 * @param directedPositions1 the DirectedPosition sequence
292 * @param blastedCells1 295 * @param blastedCells1 the Set of blasted Cell-s
293 * @return 296 * @return the next LifeState sequence
294 */ 297 */
295 private static Sq<Player.LifeState> nextLifeState(Player player0, Sq<Player.DirectedPosition> directedPositions1, 298 private static Sq<Player.LifeState> nextLifeState(Player player0, Sq<Player.DirectedPosition> directedPositions1,
296 Set<Cell> blastedCells1) { 299 Set<Cell> blastedCells1) {
diff --git a/src/ch/epfl/xblast/server/Player.java b/src/ch/epfl/xblast/server/Player.java
index fdc4715..f6f6c99 100644
--- a/src/ch/epfl/xblast/server/Player.java
+++ b/src/ch/epfl/xblast/server/Player.java
@@ -44,6 +44,8 @@ public final class Player {
44 } 44 }
45 45
46 /** 46 /**
47 * Returns the number of lives.
48 *
47 * @return the number of lives 49 * @return the number of lives
48 */ 50 */
49 public int lives() { 51 public int lives() {
@@ -51,6 +53,8 @@ public final class Player {
51 } 53 }
52 54
53 /** 55 /**
56 * Returns the State.
57 *
54 * @return the state 58 * @return the state
55 */ 59 */
56 public State state() { 60 public State state() {
@@ -58,7 +62,9 @@ public final class Player {
58 } 62 }
59 63
60 /** 64 /**
61 * @return true if the actual state allow to move 65 * Returns T(this State allows the player to move).
66 *
67 * @return T(this State allows the player to move)
62 */ 68 */
63 public boolean canMove() { 69 public boolean canMove() {
64 return this.state() == State.INVULNERABLE || this.state() == State.VULNERABLE; 70 return this.state() == State.INVULNERABLE || this.state() == State.VULNERABLE;
@@ -75,21 +81,25 @@ public final class Player {
75 private final Direction direction; 81 private final Direction direction;
76 82
77 /** 83 /**
78 * @return an infinite sequence of directed positions corresponding to a stopped player. 84 * Builds and returns an infinite sequence of directed positions corresponding to a stopped player.
85 *
86 * @return the sequence
79 */ 87 */
80 public static Sq<DirectedPosition> stopped(DirectedPosition p) { 88 public static Sq<DirectedPosition> stopped(DirectedPosition p) {
81 return Sq.constant(p); 89 return Sq.constant(p);
82 } 90 }
83 91
84 /** 92 /**
85 * @return an infinite sequence of directed position corresponding to a moving player. 93 * Builds and returns an infinite sequence of directed position corresponding to a moving player.
94 *
95 * @return the sequence
86 */ 96 */
87 public static Sq<DirectedPosition> moving(DirectedPosition p) { 97 public static Sq<DirectedPosition> moving(DirectedPosition p) {
88 return Sq.iterate(p, x -> x.withPosition(x.position().neighbor(x.direction()))); 98 return Sq.iterate(p, x -> x.withPosition(x.position().neighbor(x.direction())));
89 } 99 }
90 100