Chapter 20

This commit is contained in:
2022-01-29 14:14:34 +01:00
parent fdeabefd75
commit 62240a42c1
13 changed files with 75 additions and 27 deletions

View File

@@ -1,12 +1,8 @@
use specs::prelude::*;
use crate::{AreaOfEffect, CombatStats, Confusion, Consumable, Equippable, Equipped, HungerClock, HungerState, InBackpack, InflictsDamage, MagicMapper, Map, Name, Position, ProvidesFood, ProvidesHealing, Ranged, RunState, SufferDamage, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, WantsToUseItem};
use crate::gamelog::GameLog;
use crate::particle_system::ParticleBuilder;
use crate::{
AreaOfEffect, CombatStats, Confusion, Consumable, Equippable, Equipped, HungerClock,
HungerState, InBackpack, InflictsDamage, Map, Name, Position, ProvidesFood, ProvidesHealing,
Ranged, SufferDamage, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, WantsToUseItem,
};
pub struct ItemCollectionSystem {}
@@ -63,7 +59,7 @@ impl<'a> System<'a> for ItemUseSystem {
ReadStorage<'a, ProvidesHealing>,
ReadStorage<'a, InflictsDamage>,
ReadStorage<'a, Ranged>,
ReadExpect<'a, Map>,
WriteExpect<'a, Map>,
WriteStorage<'a, SufferDamage>,
ReadStorage<'a, AreaOfEffect>,
WriteStorage<'a, Confusion>,
@@ -74,6 +70,8 @@ impl<'a> System<'a> for ItemUseSystem {
ReadStorage<'a, Position>,
ReadStorage<'a, ProvidesFood>,
WriteStorage<'a, HungerClock>,
ReadStorage<'a, MagicMapper>,
WriteExpect<'a, RunState>
);
fn run(&mut self, data: Self::SystemData) {
@@ -87,8 +85,8 @@ impl<'a> System<'a> for ItemUseSystem {
mut combat_stats,
healing,
inflicts_damage,
ranged,
map,
_ranged,
mut map,
mut suffer_damage,
aoe,
mut confused,
@@ -99,6 +97,8 @@ impl<'a> System<'a> for ItemUseSystem {
positions,
provides_food,
mut hunger_clocks,
magic_mapper,
mut run_state
) = data;
for (entity, use_item) in (&entities, &wants_use).join() {
@@ -142,7 +142,13 @@ impl<'a> System<'a> for ItemUseSystem {
}
}
if let Some(item_edible) = provides_food.get(use_item.item) {
if let Some(_mapper) = magic_mapper.get(use_item.item) {
used_item = true;
game_log.entries.push("The map is revealed to you!".to_string());
*run_state = RunState::MagicMapReveal {row: 0};
}
if let Some(_item_edible) = provides_food.get(use_item.item) {
used_item = true;
let target = targets[0];
if let Some(hc) = hunger_clocks.get_mut(target) {