From 91c144969f6dd2daa7d9fb2e5d59059ecd556b79 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Sat, 18 Apr 2020 23:25:16 +0200 Subject: Optimimze to have a shortest path that actually completes --- src/json.rs | 67 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 31 deletions(-) (limited to 'src/json.rs') diff --git a/src/json.rs b/src/json.rs index 1726f9f..fa90e06 100644 --- a/src/json.rs +++ b/src/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}; @@ -102,37 +103,41 @@ impl JsonState { GameState { status: GameStatus::Continue, players: [self.player.to_player(), self.opponent.to_player()], - obstacles: self - .world_map - .iter() - .flatten() - .filter(|cell| { - cell.surface_object == JsonSurfaceObject::Mud - || cell.surface_object == JsonSurfaceObject::OilSpill - }) - .map(|cell| cell.position.to_position()) - .collect(), - powerup_oils: self - .world_map - .iter() - .flatten() - .filter(|cell| cell.surface_object == JsonSurfaceObject::OilItem) - .map(|cell| cell.position.to_position()) - .collect(), - powerup_boosts: self - .world_map - .iter() - .flatten() - .filter(|cell| cell.surface_object == JsonSurfaceObject::Boost) - .map(|cell| cell.position.to_position()) - .collect(), - finish_lines: self - .world_map - .iter() - .flatten() - .filter(|cell| cell.surface_object == JsonSurfaceObject::FinishLine) - .map(|cell| cell.position.to_position()) - .collect(), + obstacles: Rc::new( + self.world_map + .iter() + .flatten() + .filter(|cell| { + cell.surface_object == JsonSurfaceObject::Mud + || cell.surface_object == JsonSurfaceObject::OilSpill + }) + .map(|cell| cell.position.to_position()) + .collect(), + ), + powerup_oils: Rc::new( + self.world_map + .iter() + .flatten() + .filter(|cell| cell.surface_object == JsonSurfaceObject::OilItem) + .map(|cell| cell.position.to_position()) + .collect(), + ), + powerup_boosts: Rc::new( + self.world_map + .iter() + .flatten() + .filter(|cell| cell.surface_object == JsonSurfaceObject::Boost) + .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(), + ), } } } -- cgit v1.2.3