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 1 day 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);

Loading…
Cancel
Save