Add hunger

This commit is contained in:
2022-01-29 00:31:00 +01:00
parent cb17a9c356
commit 74c05f97af
10 changed files with 280 additions and 74 deletions

View File

@@ -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];