use rusting_engine::prelude::*;
#[must_use]
pub fn counter(kind: &str) -> String {
format!("inventory_{kind}")
}
#[must_use]
pub fn count(scene: &GameScene<'_>, kind: &str) -> i32 {
scene.counter_or(&counter(kind), 0)
}
pub fn take(scene: &mut GameScene<'_>, kind: &str) -> bool {
if count(scene, kind) <= 0 {
return false;
}
scene.add_to_counter(&counter(kind), -1);
true
}
pub fn inventory(scene: &mut GameScene<'_>) {
let items = scene.in_class("item");
let locked = scene.in_class("locked");
for name in scene.touching("Player") {
if items.contains(&name) {
let kind = name.split_whitespace().next().unwrap_or("item");
scene.add_to_counter(&counter(&kind.to_lowercase()), 1);
scene.despawn(&name);
} else if locked.contains(&name) && take(scene, "key") {
scene.despawn(&name);
}
}
}