diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ch/epfl/xblast/server/Player.java | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/src/ch/epfl/xblast/server/Player.java b/src/ch/epfl/xblast/server/Player.java index 668b948..8ab4cc6 100644 --- a/src/ch/epfl/xblast/server/Player.java +++ b/src/ch/epfl/xblast/server/Player.java | |||
@@ -12,6 +12,7 @@ import java.util.Objects; | |||
12 | /** | 12 | /** |
13 | * Player. | 13 | * Player. |
14 | * | 14 | * |
15 | * @author Pacien TRAN-GIRARD (261948) | ||
15 | * @author Timothée FLOURE (257420) | 16 | * @author Timothée FLOURE (257420) |
16 | */ | 17 | */ |
17 | public final class Player { | 18 | public final class Player { |
@@ -128,12 +129,36 @@ public final class Player { | |||
128 | } | 129 | } |
129 | } | 130 | } |
130 | 131 | ||
132 | private static final Direction DEFAULT_DIRECTION = Direction.S; | ||
133 | |||
131 | private final PlayerID id; | 134 | private final PlayerID id; |
132 | private final Sq<LifeState> lifeStates; | 135 | private final Sq<LifeState> lifeStates; |
133 | private final Sq<DirectedPosition> directedPos; | 136 | private final Sq<DirectedPosition> directedPos; |
134 | private final int maxBombs; | 137 | private final int maxBombs; |
135 | private final int bombRange; | 138 | private final int bombRange; |
136 | 139 | ||
140 | private static Sq<LifeState> buildDefaultLifeStateSequence(int lives) { | ||
141 | LifeState invulnerability = new LifeState( | ||
142 | ArgumentChecker.requireNonNegative(lives), | ||
143 | LifeState.State.INVULNERABLE | ||
144 | ); | ||
145 | LifeState vulnerability = new LifeState( | ||
146 | ArgumentChecker.requireNonNegative(lives), | ||
147 | LifeState.State.VULNERABLE | ||
148 | ); | ||
149 | |||
150 | return Sq.repeat(Ticks.PLAYER_INVULNERABLE_TICKS,invulnerability).concat(Sq.constant(vulnerability)); | ||
151 | } | ||
152 | |||
153 | private static Sq<DirectedPosition> buildDefaultDirectedPositionSequence(Cell pos) { | ||
154 | DirectedPosition dp = new DirectedPosition( | ||
155 | SubCell.centralSubCellOf(Objects.requireNonNull(pos)), | ||
156 | Player.DEFAULT_DIRECTION | ||
157 | ); | ||
158 | |||
159 | return DirectedPosition.stopped(dp); | ||
160 | } | ||
161 | |||
137 | /** | 162 | /** |
138 | * Instanciates a new Player. | 163 | * Instanciates a new Player. |
139 | * | 164 | * |
@@ -165,12 +190,13 @@ public final class Player { | |||
165 | * @throws NullPointerExeption | 190 | * @throws NullPointerExeption |
166 | */ | 191 | */ |
167 | public Player(PlayerID id, int lives, Cell position, int maxBombs, int bombRange) { | 192 | public Player(PlayerID id, int lives, Cell position, int maxBombs, int bombRange) { |
168 | DirectedPosition newDirectedPosition = new DirectedPosition(SubCell.centralSubCellOf(Objects.requireNonNull(position)), Direction.S); | 193 | this( |
169 | DirectedPosition directedPositionSequence = DirectedPosition.stopped(newDirectedPos); | 194 | id, |
170 | LifeState invulnerability = new LifeState(ArgumentChecker.requireNonNegative(lives), LifeState.State.INVULNERABLE); | 195 | Player.buildDefaultLifeStateSequence(lives), |
171 | LifeState vulnerability = new LifeState(ArgumentChecker.requireNonNegative(lives), LifeState.State.VULNERABLE); | 196 | Player.buildDefaultDirectedPositionSequence(position), |
172 | Sq<LifeState> lifeStateSequence = Sq.repeat(Ticks.PLAYER_INVULNERABLE_TICKS,invulnerability).concat(Sq.constant(vulnerability)); | 197 | maxBombs, |
173 | this.Player(id, lifeStateSequence,directedPositionSequence, maxBombs, bombRange); | 198 | bombRange |
199 | ); | ||
174 | } | 200 | } |
175 | 201 | ||
176 | /** | 202 | /** |