Now you can heal yourself.

This commit is contained in:
Zed A. Shaw 2025-08-11 16:59:19 -04:00
parent e03a63f9fb
commit f19c1dbb20
6 changed files with 68 additions and 14 deletions

View file

@ -76,15 +76,27 @@ namespace gui {
void StatusUI::update() {
auto player = $level.world->get_the<components::Player>();
auto& inventory = $level.world->get<inventory::Model>(player.entity);
for(auto& [slot, world_entity] : inventory.by_slot) {
auto gui_id = $gui.entity(slot);
auto& sprite = $level.world->get<components::Sprite>(world_entity);
$gui.set_init<guecs::Icon>(gui_id, {sprite.name});
guecs::GrabSource grabber{ world_entity,
[&, gui_id]() { return remove_slot(gui_id); }};
grabber.setSprite($gui, gui_id);
$gui.set<guecs::GrabSource>(gui_id, grabber);
for(const auto& [slot, cell] : $gui.cells()) {
if(inventory.has(slot)) {
auto gui_id = $gui.entity(slot);
auto world_entity = inventory.get(slot);
auto& sprite = $level.world->get<components::Sprite>(world_entity);
$gui.set_init<guecs::Icon>(gui_id, {sprite.name});
guecs::GrabSource grabber{ world_entity,
[&, gui_id]() { return remove_slot(gui_id); }};
grabber.setSprite($gui, gui_id);
$gui.set<guecs::GrabSource>(gui_id, grabber);
} else {
auto gui_id = $gui.entity(slot);
if($gui.has<guecs::GrabSource>(gui_id)) {
$gui.remove<guecs::GrabSource>(gui_id);
$gui.remove<guecs::Icon>(gui_id);
}
}
}
}
@ -123,8 +135,7 @@ namespace gui {
void StatusUI::remove_slot(guecs::Entity slot_id) {
auto& slot_name = $gui.name_for(slot_id);
System::remove_from_container(*$level.world, $level.player, slot_name);
$gui.remove<guecs::GrabSource>(slot_id);
$gui.remove<guecs::Icon>(slot_id);
update();
}
void StatusUI::swap(guecs::Entity gui_a, guecs::Entity gui_b) {