diff options
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(), + ), } } } |