From d4999901c21262efff36a54aaf02bd51b94ed797 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 26 Jan 2024 05:19:57 +0300 Subject: [PATCH] grabbed item fix --- src/frontend/hud.cpp | 16 +++++++++++++--- src/frontend/hud.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index e0b186ad..9564c892 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -317,7 +317,7 @@ void HudRenderer::update(bool visible) { menu->visible(pause); if (!visible && inventoryOpen) { - inventoryOpen = false; + closeInventory(); } if (pause && menu->current().panel == nullptr) { pause = false; @@ -327,7 +327,7 @@ void HudRenderer::update(bool visible) { pause = false; menu->reset(); } else if (inventoryOpen) { - inventoryOpen = false; + closeInventory(); } else { pause = true; menu->set("pause"); @@ -335,7 +335,11 @@ void HudRenderer::update(bool visible) { } if (visible && Events::jactive(BIND_HUD_INVENTORY)) { if (!pause) { - inventoryOpen = !inventoryOpen; + if (inventoryOpen) { + closeInventory(); + } else { + inventoryOpen = true; + } } } if ((pause || inventoryOpen) == Events::_cursor_locked) { @@ -366,6 +370,12 @@ void HudRenderer::update(bool visible) { } } +void HudRenderer::closeInventory() { + inventoryOpen = false; + ItemStack& grabbed = interaction->getGrabbedItem(); + grabbed.clear(); +} + void HudRenderer::drawOverlay(const GfxContext& ctx) { if (pause) { Shader* uishader = assets->getShader("ui"); diff --git a/src/frontend/hud.h b/src/frontend/hud.h index 05515e0c..307cbaf8 100644 --- a/src/frontend/hud.h +++ b/src/frontend/hud.h @@ -63,6 +63,8 @@ public: bool isInventoryOpen() const; bool isPause() const; + + void closeInventory(); }; #endif /* SRC_HUD_H_ */