From 7f2d82e15459fc3d365674e3772aed6c3d443ca2 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Mon, 20 Apr 2020 19:37:57 +0200 Subject: No more tracking the finish line in the state as a collidable thing --- src/global_json.rs | 8 -------- src/json.rs | 10 ---------- 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>, pub powerup_oils: Rc>, pub powerup_boosts: Rc>, - pub finish_lines: Rc>, } #[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, powerup_oils: &BTreeSet, powerup_boosts: &BTreeSet, - finish_lines: &BTreeSet, ) { 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 + } } -- cgit v1.2.3