diff options
| author | troido <troido@protonmail.com> | 2020-09-22 14:34:53 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-09-22 14:34:53 +0200 |
| commit | 33c1054d528efd896415baf08d4a52e1cdd7b801 (patch) | |
| tree | 9d564a101129ca800f91fa37c4c002747e06c8da /src | |
| parent | 410de5640c76b1501240e39e725350fc58a7e094 (diff) | |
turned some math into if let to decrease indentation
Diffstat (limited to 'src')
| -rw-r--r-- | src/systems/interact.rs | 13 | ||||
| -rw-r--r-- | src/systems/moving.rs | 25 | ||||
| -rw-r--r-- | src/systems/useitem.rs | 49 |
3 files changed, 39 insertions, 48 deletions
diff --git a/src/systems/interact.rs b/src/systems/interact.rs index 1eb4589..0629dc1 100644 --- a/src/systems/interact.rs +++ b/src/systems/interact.rs @@ -59,16 +59,13 @@ impl <'a> System<'a> for Interact { for (actor, controller, position) in (&entities, &controllers, &positions).join(){ let mut target = None; let ear = ears.get_mut(actor); - match &controller.control { - Control::Interact(directions, arg) => { - for (ent, interactable) in ground.components_near(position.pos, directions, &interactables) { - if interactable.accepts_arg(arg){ - target = Some((ent, interactable, arg.clone())); - break; - } + if let Control::Interact(directions, arg) = &controller.control { + for (ent, interactable) in ground.components_near(position.pos, directions, &interactables) { + if interactable.accepts_arg(arg){ + target = Some((ent, interactable, arg.clone())); + break; } } - _ => {} } if let Some((ent, interactable, arg)) = target { let mut cooldown = 2; 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(); } - _ => {} } } } diff --git a/src/systems/useitem.rs b/src/systems/useitem.rs index a560c18..8b58d75 100644 --- a/src/systems/useitem.rs +++ b/src/systems/useitem.rs @@ -42,41 +42,38 @@ impl <'a> System<'a> for Use { fn run(&mut self, (entities, controllers, positions, mut inventories, mut new, mut attacked, ground, flags, roompermissions): Self::SystemData) { for (ent, controller, position, inventory) in (&entities, &controllers, &positions, &mut inventories).join(){ - match &controller.control { - Control::Use(rank) => { - if let Some(entry) = inventory.items.get_mut(*rank) { - match &entry.item.action { - Build(template, required_flags, blocking_flags) => { - let ground_flags = ground.flags_on(position.pos, &flags); - if roompermissions.build && required_flags.is_subset(&ground_flags) && blocking_flags.is_disjoint(&ground_flags){ - new.create(position.pos, &template).unwrap(); - inventory.items.remove(*rank); - } - } - Eat(health_diff) => { - AttackInbox::add_message(&mut attacked, ent, AttackMessage{typ: AttackType::Heal(*health_diff), attacker: Option::None}); + if let Control::Use(rank) = &controller.control { + if let Some(entry) = inventory.items.get_mut(*rank) { + match &entry.item.action { + Build(template, required_flags, blocking_flags) => { + let ground_flags = ground.flags_on(position.pos, &flags); + if roompermissions.build && required_flags.is_subset(&ground_flags) && blocking_flags.is_disjoint(&ground_flags){ + new.create(position.pos, &template).unwrap(); inventory.items.remove(*rank); } - Equip(equippable) => { - if entry.is_equipped { - inventory.items[*rank].is_equipped = false; - } else { - let slot = equippable.slot; - for otherentry in inventory.items.iter_mut() { - if let Equip(other) = &otherentry.item.action { - if other.slot == slot { - otherentry.is_equipped = false; - } + } + Eat(health_diff) => { + AttackInbox::add_message(&mut attacked, ent, AttackMessage{typ: AttackType::Heal(*health_diff), attacker: Option::None}); + inventory.items.remove(*rank); + } + Equip(equippable) => { + if entry.is_equipped { + inventory.items[*rank].is_equipped = false; + } else { + let slot = equippable.slot; + for otherentry in inventory.items.iter_mut() { + if let Equip(other) = &otherentry.item.action { + if other.slot == slot { + otherentry.is_equipped = false; } } - inventory.items[*rank].is_equipped = true; } + inventory.items[*rank].is_equipped = true; } - None => {} } + None => {} } } - _ => {} } } } |
