From 4bb710c6c6df8a24a2efa8033ad3c17663345dbd Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 3 Feb 2020 15:50:36 +0100 Subject: output is a system now too --- src/room.rs | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) (limited to 'src/room.rs') diff --git a/src/room.rs b/src/room.rs index fdb7006..9e24c83 100644 --- a/src/room.rs +++ b/src/room.rs @@ -1,4 +1,5 @@ +use std::collections::HashMap; use specs::{ World, @@ -12,9 +13,10 @@ use specs::{ use super::controls::Action; use super::components::Position; use super::assemblages::Assemblage; +use super::worldmessages::WorldMessage; use super::resources::{ Size, - TopView, + Output, Input, NewEntities }; @@ -23,7 +25,8 @@ use super::systems::{ Move, ClearControllers, MakeFloor, - ControlInput + ControlInput, + View }; @@ -40,6 +43,7 @@ impl <'a, 'b>Room<'a, 'b> { let mut world = World::new(); world.insert(Size{width, height}); world.insert(Input{actions: Vec::new()}); + world.insert(Output{output: HashMap::new()}); let mut dispatcher = DispatcherBuilder::new() .with(ControlInput, "controlinput", &[]) @@ -47,6 +51,7 @@ impl <'a, 'b>Room<'a, 'b> { .with(Move, "move", &["makefloor", "controlinput"]) .with(Draw, "draw", &["move"]) .with(ClearControllers, "clearcontrollers", &["move"]) + .with(View, "view", &["draw"]) .build(); dispatcher.setup(&mut world); @@ -57,32 +62,8 @@ impl <'a, 'b>Room<'a, 'b> { } } - pub fn view(&self) -> (Vec, Vec>) { - let tv = &*self.world.fetch::(); - let (width, height) = self.get_size(); - let size = width * height; - let mut values :Vec = Vec::with_capacity(size as usize); - let mut mapping: Vec> = Vec::new(); - for y in 0..height { - for x in 0..width { - let sprites: Vec = match tv.cells.get(&Position{x: x, y: y}) { - Some(sprites) => {sprites.iter().map(|v| v.sprite.clone()).collect()} - None => {vec![]} - }; - values.push( - match mapping.iter().position(|x| x == &sprites) { - Some(index) => { - index - } - None => { - mapping.push(sprites); - mapping.len() - 1 - } - } - ) - } - } - (values, mapping) + pub fn view(&self) -> HashMap { + self.world.fetch::().output.clone() } pub fn update(&mut self) { -- cgit