summaryrefslogtreecommitdiff
path: root/src/resources.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources.rs')
-rw-r--r--src/resources.rs28
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>
+}