summaryrefslogtreecommitdiff
path: root/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state.rs')
-rw-r--r--src/state.rs19
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
+ }
}