Loot UI now opens when you can loot something, but it's still buggy and doesn't always show the stuff.

master
Zed A. Shaw 11 months ago
parent 86eabed3db
commit 2458f01ebd
  1. 11
      gui/fsm.cpp
  2. 5
      systems.cpp

@ -568,10 +568,13 @@ namespace gui {
event(Event::INV_SELECT, data);
break;
case eGUI::LOOT: {
dbc::check(world.has<components::Sprite>(entity), "inventory doesn't have a sprite");
auto gui_id = $loot_ui.$gui.entity("item_0");
$loot_ui.contents.insert_or_assign(gui_id, entity);
$loot_ui.update();
if(world.has<components::InventoryItem>(entity)) {
auto gui_id = $loot_ui.$gui.entity("item_0");
$loot_ui.contents.insert_or_assign(gui_id, entity);
$loot_ui.update();
} else {
dbc::log("unhandled loot event.");
}
event(Event::LOOT_OPEN);
} break;
case eGUI::HP_STATUS:

@ -302,8 +302,6 @@ void System::collision(GameLevel &level) {
world.send<Events::GUI>(Events::GUI::COMBAT_START, entity, entity);
}
} else if(world.has<InventoryItem>(entity)) {
// BUG: this should really be part of the inventory API and I just
// call into that to work it, rather than this hard coded crap
auto item = world.get<InventoryItem>(entity);
auto& item_pos = world.get<Position>(entity);
@ -318,9 +316,6 @@ void System::collision(GameLevel &level) {
collider.remove(item_pos.location);
world.remove<Tile>(entity);
fmt::println("LOOT EVENT, picking up {}", int(entity));
world.send<Events::GUI>(Events::GUI::LOOT, entity, item);
} else if(world.has<Device>(entity)) {
System::device(world, player.entity, entity);