diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2020-04-20 19:37:57 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2020-04-20 19:37:57 +0200 |
commit | 7f2d82e15459fc3d365674e3772aed6c3d443ca2 (patch) | |
tree | 7e14acc3dfb11f00fd47c6d5d7bc9782e8a4f9f8 | |
parent | ad2190963e8c6ccece6259212d2143981448535d (diff) |
No more tracking the finish line in the state as a collidable thing
-rw-r--r-- | src/global_json.rs | 8 | ||||
-rw-r--r-- | src/json.rs | 10 | ||||
-rw-r--r-- | src/state.rs | 19 |
3 files changed, 7 insertions, 30 deletions
diff --git a/src/global_json.rs b/src/global_json.rs index ce440ea..af69157 100644 --- a/src/global_json.rs +++ b/src/global_json.rs @@ -125,13 +125,6 @@ impl JsonState { .map(|cell| cell.position.to_position()) .collect(), ), - finish_lines: Rc::new( - self.blocks - .iter() - .filter(|cell| cell.surface_object == JsonSurfaceObject::FinishLine) - .map(|cell| cell.position.to_position()) - .collect(), - ), }) } } @@ -154,7 +147,6 @@ impl JsonPlayer { .filter(|powerup| **powerup == JsonPowerup::Boost) .count() .try_into()?, - finished: false, }) } } diff --git a/src/json.rs b/src/json.rs index d610c0f..a7d7759 100644 --- a/src/json.rs +++ b/src/json.rs @@ -131,14 +131,6 @@ impl JsonState { .map(|cell| cell.position.to_position()) .collect(), ), - finish_lines: Rc::new( - self.world_map - .iter() - .flatten() - .filter(|cell| cell.surface_object == JsonSurfaceObject::FinishLine) - .map(|cell| cell.position.to_position()) - .collect(), - ), }) } } @@ -161,7 +153,6 @@ impl JsonPlayer { .filter(|powerup| **powerup == JsonPowerup::Boost) .count() .try_into()?, - finished: false, }) } } @@ -175,7 +166,6 @@ impl JsonOpponent { boost_remaining: 0, oils: 0, boosts: 0, - finished: false, } } } 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 + } } |