diff options
Diffstat (limited to 'src/state.rs')
-rw-r--r-- | src/state.rs | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/state.rs b/src/state.rs index 9b90f89..87f73f5 100644 --- a/src/state.rs +++ b/src/state.rs @@ -19,7 +19,6 @@ pub struct GameState { pub obstacles: Rc<BTreeSet<Position>>, pub powerup_oils: Rc<BTreeSet<Position>>, pub powerup_boosts: Rc<BTreeSet<Position>>, - pub finish_lines: Rc<BTreeSet<Position>>, } #[derive(Debug, Clone, Hash, PartialEq, Eq)] @@ -29,7 +28,6 @@ pub struct Player { pub boost_remaining: u8, pub oils: u16, pub boosts: u16, - pub finished: bool, } #[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)] @@ -51,7 +49,7 @@ impl GameState { let next_positions = self.update_player_collisions(next_positions); self.update_player_travel(next_positions); - self.status = if self.players[0].finished && self.players[1].finished { + self.status = if self.players[0].finished() && self.players[1].finished() { if self.players[0].speed > self.players[1].speed { GameStatus::PlayerOneWon } else if self.players[0].speed < self.players[1].speed { @@ -59,9 +57,9 @@ impl GameState { } else { GameStatus::Draw } - } else if self.players[0].finished { + } else if self.players[0].finished() { GameStatus::PlayerOneWon - } else if self.players[1].finished { + } else if self.players[1].finished() { GameStatus::PlayerTwoWon } else { GameStatus::Continue @@ -76,7 +74,6 @@ impl GameState { player.boost_remaining = 0; player.oils = 0; player.boosts = 0; - player.finished = false; } } @@ -165,7 +162,6 @@ impl GameState { &self.obstacles, &self.powerup_oils, &self.powerup_boosts, - &self.finish_lines, ); } } @@ -254,7 +250,6 @@ impl Player { obstacles: &BTreeSet<Position>, powerup_oils: &BTreeSet<Position>, powerup_boosts: &BTreeSet<Position>, - finish_lines: &BTreeSet<Position>, ) { let range = ( Included(Position { @@ -277,10 +272,10 @@ impl Player { .boosts .saturating_add(powerup_boosts.range(range).count() as u16); - if finish_lines.range(range).count() > 0 { - self.finished = true; - } - self.position = next_position; } + + fn finished(&self) -> bool { + self.position.x >= WIDTH + } } |