Add hunger
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
use specs::prelude::*;
|
||||
|
||||
use crate::{AreaOfEffect, CombatStats, Confusion, Consumable, Equippable, Equipped, HungerClock, HungerState, InBackpack, InflictsDamage, Map, Name, Position, ProvidesFood, ProvidesHealing, Ranged, SufferDamage, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, WantsToUseItem};
|
||||
use crate::gamelog::GameLog;
|
||||
use crate::particle_system::ParticleBuilder;
|
||||
use crate::{
|
||||
AreaOfEffect, CombatStats, Confusion, Consumable, Equippable, Equipped, InBackpack,
|
||||
InflictsDamage, Map, Name, Position, ProvidesHealing, Ranged, SufferDamage, WantsToDropItem,
|
||||
WantsToPickupItem, WantsToRemoveItem, WantsToUseItem,
|
||||
};
|
||||
|
||||
pub struct ItemCollectionSystem {}
|
||||
|
||||
@@ -72,6 +68,8 @@ impl<'a> System<'a> for ItemUseSystem {
|
||||
WriteStorage<'a, InBackpack>,
|
||||
WriteExpect<'a, ParticleBuilder>,
|
||||
ReadStorage<'a, Position>,
|
||||
ReadStorage<'a, ProvidesFood>,
|
||||
WriteStorage<'a, HungerClock>,
|
||||
);
|
||||
|
||||
fn run(&mut self, data: Self::SystemData) {
|
||||
@@ -95,6 +93,8 @@ impl<'a> System<'a> for ItemUseSystem {
|
||||
mut backpack,
|
||||
mut particle_builder,
|
||||
positions,
|
||||
provides_food,
|
||||
mut hunger_clocks
|
||||
) = data;
|
||||
|
||||
for (entity, use_item) in (&entities, &wants_use).join() {
|
||||
@@ -133,11 +133,21 @@ impl<'a> System<'a> for ItemUseSystem {
|
||||
200.,
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
hc.state = HungerState::WellFed;
|
||||
hc.duration = 20;
|
||||
game_log.entries.push(format!("You eat the {}.", names.get(use_item.item).unwrap().name));
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(item_equippable) = equippable.get(use_item.item) {
|
||||
let target_slot = item_equippable.slot;
|
||||
let target = targets[0];
|
||||
|
Reference in New Issue
Block a user