summaryrefslogtreecommitdiff
path: root/src/global_json.rs
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2020-04-18 23:25:16 +0200
committerJustin Wernick <justin@worthe-it.co.za>2020-04-18 23:25:16 +0200
commit91c144969f6dd2daa7d9fb2e5d59059ecd556b79 (patch)
treecdc07ae81805657bb6ca4b6bd0ec0cafbfa691bd /src/global_json.rs
parentf3a65c87313d2952f83d5f43327260b7a9ab81cc (diff)
Optimimze to have a shortest path that actually completes
Diffstat (limited to 'src/global_json.rs')
-rw-r--r--src/global_json.rs59
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(),
+ ),
}
}
}