diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2020-04-18 23:25:16 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2020-04-18 23:25:16 +0200 |
commit | 91c144969f6dd2daa7d9fb2e5d59059ecd556b79 (patch) | |
tree | cdc07ae81805657bb6ca4b6bd0ec0cafbfa691bd /src/global_json.rs | |
parent | f3a65c87313d2952f83d5f43327260b7a9ab81cc (diff) |
Optimimze to have a shortest path that actually completes
Diffstat (limited to 'src/global_json.rs')
-rw-r--r-- | src/global_json.rs | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/src/global_json.rs b/src/global_json.rs index a27cd00..189a97b 100644 --- a/src/global_json.rs +++ b/src/global_json.rs @@ -1,5 +1,6 @@ use std::fs::File; use std::io::prelude::*; +use std::rc::Rc; use anyhow::Result; use serde::{Deserialize, Serialize}; @@ -99,33 +100,37 @@ impl JsonState { GameState { status: GameStatus::Continue, players: [self.players[0].to_player(), self.players[1].to_player()], - obstacles: self - .blocks - .iter() - .filter(|cell| { - cell.surface_object == JsonSurfaceObject::Mud - || cell.surface_object == JsonSurfaceObject::OilSpill - }) - .map(|cell| cell.position.to_position()) - .collect(), - powerup_oils: self - .blocks - .iter() - .filter(|cell| cell.surface_object == JsonSurfaceObject::OilItem) - .map(|cell| cell.position.to_position()) - .collect(), - powerup_boosts: self - .blocks - .iter() - .filter(|cell| cell.surface_object == JsonSurfaceObject::Boost) - .map(|cell| cell.position.to_position()) - .collect(), - finish_lines: self - .blocks - .iter() - .filter(|cell| cell.surface_object == JsonSurfaceObject::FinishLine) - .map(|cell| cell.position.to_position()) - .collect(), + obstacles: Rc::new( + self.blocks + .iter() + .filter(|cell| { + cell.surface_object == JsonSurfaceObject::Mud + || cell.surface_object == JsonSurfaceObject::OilSpill + }) + .map(|cell| cell.position.to_position()) + .collect(), + ), + powerup_oils: Rc::new( + self.blocks + .iter() + .filter(|cell| cell.surface_object == JsonSurfaceObject::OilItem) + .map(|cell| cell.position.to_position()) + .collect(), + ), + powerup_boosts: Rc::new( + self.blocks + .iter() + .filter(|cell| cell.surface_object == JsonSurfaceObject::Boost) + .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(), + ), } } } |