diff options
Diffstat (limited to 'src/resources.rs')
| -rw-r--r-- | src/resources.rs | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/resources.rs b/src/resources.rs index 0e40a00..f50d2bb 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -3,16 +3,18 @@ use std::collections::{HashMap, HashSet}; use specs::Entity; use super::pos::Pos; -use super::controls::Action; +use super::controls::Control; use super::worldmessages::WorldMessage; -use super::template::Template; +use crate::componentwrapper::PreEntity; use crate::encyclopedia::Encyclopedia; use crate::PlayerId; +use crate::util::Result; +use crate::template::Template; #[derive(Default)] pub struct Input { - pub actions: Vec<Action> + pub actions: HashMap<PlayerId, Control> } #[derive(Default)] @@ -38,6 +40,24 @@ pub struct Ground { #[derive(Default)] pub struct NewEntities { - pub templates: Vec<(Pos, Template)>, + pub to_build: Vec<(Pos, PreEntity)>, pub encyclopedia: Encyclopedia } +impl NewEntities { + pub fn new(encyclopedia: Encyclopedia) -> Self { + Self{ + to_build: Vec::new(), + encyclopedia + } + } + pub fn create(&mut self, pos: Pos, template: Template) -> Result<()> { + let components = self.encyclopedia.construct(&template)?; + self.to_build.push((pos, components)); + Ok(()) + } +} + +#[derive(Default)] +pub struct Players { + pub entities: HashMap<PlayerId, Entity> +} |
