summaryrefslogtreecommitdiff
path: root/src/systems/moving.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/systems/moving.rs')
-rw-r--r--src/systems/moving.rs25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/systems/moving.rs b/src/systems/moving.rs
index ccd29d6..eb7ccef 100644
--- a/src/systems/moving.rs
+++ b/src/systems/moving.rs
@@ -46,22 +46,19 @@ impl <'a> System<'a> for Move {
moved.clear();
entered.clear();
for (ent, controller, mut position, movable) in (&entities, &controllers, &mut positions, &movables).join(){
- match &controller.control {
- Control::Move(direction) => {
- let newpos = position.pos + direction.to_position();
- let ground_flags = ground.flags_on(newpos, &flags);
- if !ground_flags.contains(&Flag::Blocking) && ground_flags.contains(&Flag::Floor) {
- moved.insert(ent, Moved{from: position.pos}).expect("can't insert Moved");
- ground.remove(&position.pos, ent);
- position.pos = newpos;
- ground.insert(newpos, ent);
- for ent in ground.cells.get(&newpos).unwrap() {
- let _ = entered.insert(*ent, Entered);
- }
- cooldowns.insert(ent, ControlCooldown{amount: movable.cooldown}).unwrap();
+ if let Control::Move(direction) = &controller.control {
+ let newpos = position.pos + direction.to_position();
+ let ground_flags = ground.flags_on(newpos, &flags);
+ if !ground_flags.contains(&Flag::Blocking) && ground_flags.contains(&Flag::Floor) {
+ moved.insert(ent, Moved{from: position.pos}).expect("can't insert Moved");
+ ground.remove(&position.pos, ent);
+ position.pos = newpos;
+ ground.insert(newpos, ent);
+ for ent in ground.cells.get(&newpos).unwrap() {
+ let _ = entered.insert(*ent, Entered);
}
+ cooldowns.insert(ent, ControlCooldown{amount: movable.cooldown}).unwrap();
}
- _ => {}
}
}
}