diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index cd94dd65..94512afd 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -1,5 +1,7 @@ #include "hud.h" +// TODO: refactor this garbage + #include #include #include @@ -365,11 +367,17 @@ void Hud::update(bool visible) { Events::toggleCursor(); } + if (blockUI) { + voxel* vox = level->chunks->get(currentblock.x, currentblock.y, currentblock.z); + if (vox == nullptr || vox->id != currentblockid) { + closeInventory(); + } + } + glm::vec2 invSize = contentAccessPanel->getSize(); contentAccessPanel->setVisible(inventoryOpen); contentAccessPanel->setSize(glm::vec2(invSize.x, Window::height)); contentAccess->setMinSize(glm::vec2(1, Window::height)); - // hotbarView->setVisible(visible && !inventoryOpen); for (int i = keycode::NUM_1; i <= keycode::NUM_9; i++) { if (Events::jpressed(i)) { @@ -437,6 +445,7 @@ void Hud::openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptrbind(blockinv, frontend, interaction.get()); currentblock = block; + currentblockid = level->chunks->get(block.x, block.y, block.z)->id; add(HudElement(hud_element_mode::inventory_bound, doc, blockUI, false)); } diff --git a/src/frontend/hud.h b/src/frontend/hud.h index aa7b2e9c..7e9e2153 100644 --- a/src/frontend/hud.h +++ b/src/frontend/hud.h @@ -90,6 +90,7 @@ class Hud { std::shared_ptr inventoryView = nullptr; std::shared_ptr blockUI = nullptr; glm::ivec3 currentblock {}; + blockid_t currentblockid = 0; std::shared_ptr createDebugPanel(Engine* engine); std::shared_ptr createContentAccess();