summaryrefslogtreecommitdiff
path: root/src/systems/controlinput.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-18 01:11:49 +0100
committertroido <troido@protonmail.com>2020-02-18 01:11:49 +0100
commitc71ecb48fa4368035a852e2d06869a21382a6876 (patch)
tree8d5a598fedf4e42bd6d8d1b0d476301dede2f20c /src/systems/controlinput.rs
parentc921686355c86afb5bf47e4b6c696057ede01b1f (diff)
Players are now saved/loaded too
Diffstat (limited to 'src/systems/controlinput.rs')
-rw-r--r--src/systems/controlinput.rs37
1 files changed, 5 insertions, 32 deletions
diff --git a/src/systems/controlinput.rs b/src/systems/controlinput.rs
index e9b1103..a2de78d 100644
--- a/src/systems/controlinput.rs
+++ b/src/systems/controlinput.rs
@@ -1,22 +1,15 @@
-use std::collections::{HashMap, HashSet};
-
use specs::{
ReadStorage,
WriteStorage,
Read,
- Write,
Entities,
System,
Join
};
-use crate::{PlayerId, hashmap};
-use crate::components::{Controller, Player, Removed};
-use crate::controls::{Control, Action};
-use crate::resources::{Input, NewEntities, Spawn};
-use crate::template::Template;
-use crate::parameter::Parameter;
+use crate::components::{Controller, Player};
+use crate::resources::{Input};
pub struct ControlInput;
@@ -25,12 +18,9 @@ impl <'a> System<'a> for ControlInput {
Entities<'a>,
Read<'a, Input>,
WriteStorage<'a, Controller>,
- ReadStorage<'a, Player>,
- Write<'a, NewEntities>,
- Read<'a, Spawn>,
- WriteStorage<'a, Removed>
+ ReadStorage<'a, Player>
);
- fn run(&mut self, (entities, input, mut controllers, players, mut new, spawn, mut removed): Self::SystemData) {
+ fn run(&mut self, (entities, input, mut controllers, players): Self::SystemData) {
{
let mut ents = Vec::new();
for (ent, _controller) in (&*entities, &controllers).join() {
@@ -41,27 +31,10 @@ impl <'a> System<'a> for ControlInput {
}
}
- let mut playercontrols: HashMap<&PlayerId, Control> = HashMap::new();
- let mut leaving = HashSet::new();
- for action in &input.actions {
- match action {
- Action::Join(player) => {
- new.templates.push((
- spawn.pos,
- Template::new("player", hashmap!("name".to_string() => Parameter::String(player.name.clone()))).unsaved()
- ));
- }
- Action::Leave(player) => {leaving.insert(player);}
- Action::Input(player, control) => {playercontrols.insert(player, control.clone());}
- }
- }
for (player, entity) in (&players, &entities).join() {
- if let Some(control) = playercontrols.get(&player.id){
+ if let Some(control) = input.actions.get(&player.id){
let _ = controllers.insert(entity, Controller(control.clone()));
}
- if leaving.contains(&player.id) {
- let _ = removed.insert(entity, Removed);
- }
}
}
}