From ab1cfc8a4b672a9413bef048790911c6cf0e9d48 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 6 Mar 2024 00:26:10 +0300 Subject: [PATCH 01/12] reformatted hud.h, hud.cpp --- src/frontend/hud.cpp | 32 ++++++--------- src/frontend/hud.h | 92 ++++++++++++++++++++++---------------------- 2 files changed, 57 insertions(+), 67 deletions(-) diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index 1e14501a..63931fdc 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -322,9 +322,7 @@ void Hud::drawDebug(int fps){ fpsMax = max(fps, fpsMax); } -/** - * Remove all elements marked as removed - */ +/// @brief Remove all elements marked as removed void Hud::cleanup() { auto it = std::remove_if(elements.begin(), elements.end(), [](const HudElement& e) { return e.isRemoved(); @@ -414,9 +412,7 @@ void Hud::update(bool visible) { cleanup(); } -/** - * Show inventory on the screen and turn on inventory mode blocking movement - */ +/// @brief Show inventory on the screen and turn on inventory mode blocking movement void Hud::openInventory() { auto inventory = player->getInventory(); @@ -428,13 +424,11 @@ void Hud::openInventory() { add(HudElement(hud_element_mode::inventory_bound, inventoryDocument, inventoryView, false)); } -/** - * Show player inventory + block UI - * @param block world position of the open block - * @param doc block UI document (root element must be an InventoryView) - * @param blockinv block inventory. - * In case of nullptr a new virtual inventory will be created - */ +/// @brief Show player inventory + block UI +/// @param block world position of the open block +/// @param doc block UI document (root element must be an InventoryView) +/// @param blockinv block inventory. +/// If blockinv is nullptr a new virtual inventory will be created void Hud::openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptr blockinv, bool playerInventory) { if (isInventoryOpen()) { closeInventory(); @@ -458,11 +452,9 @@ void Hud::openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptrchunks->get(block.x, block.y, block.z)->id; add(HudElement(hud_element_mode::inventory_bound, doc, blockUI, false)); } - -/** - * Add element as permanent overlay - * @param doc element layout document - */ + +/// @brief Add element as permanent overlay +/// @param doc element layout document void Hud::openPermanent(UiDocument* doc) { auto root = doc->getRoot(); remove(root); @@ -475,9 +467,7 @@ void Hud::openPermanent(UiDocument* doc) { add(HudElement(hud_element_mode::permanent, doc, doc->getRoot(), false)); } -/** - * Hide inventory and turn off inventory mode - */ +/// @brief Hide inventory and turn off inventory mode void Hud::closeInventory() { auto level = frontend->getLevel(); diff --git a/src/frontend/hud.h b/src/frontend/hud.h index e9171eeb..b2382c19 100644 --- a/src/frontend/hud.h +++ b/src/frontend/hud.h @@ -23,75 +23,75 @@ class UiDocument; class InventoryInteraction; namespace gui { - class GUI; - class UINode; + class GUI; + class UINode; class Panel; - class Container; + class Container; } enum class hud_element_mode { - // element is hidden if menu or inventory open - ingame, - // element is visible if hud is visible - permanent, - // element is visible in inventory mode - inventory_any, - // element will be removed on inventory close - inventory_bound + // element is hidden if menu or inventory open + ingame, + // element is visible if hud is visible + permanent, + // element is visible in inventory mode + inventory_any, + // element will be removed on inventory close + inventory_bound }; class HudElement { - hud_element_mode mode; - UiDocument* document; - std::shared_ptr node; + hud_element_mode mode; + UiDocument* document; + std::shared_ptr node; - bool debug; - bool removed = false; + bool debug; + bool removed = false; public: - HudElement(hud_element_mode mode, UiDocument* document, std::shared_ptr node, bool debug); + HudElement(hud_element_mode mode, UiDocument* document, std::shared_ptr node, bool debug); - void update(bool pause, bool inventoryOpen, bool debug); + void update(bool pause, bool inventoryOpen, bool debug); - UiDocument* getDocument() const; - std::shared_ptr getNode() const; + UiDocument* getDocument() const; + std::shared_ptr getNode() const; void setRemoved() { removed = true; } - bool isRemoved() const { - return removed; - } + bool isRemoved() const { + return removed; + } }; class Hud { Engine* engine; Assets* assets; - std::unique_ptr uicamera; + std::unique_ptr uicamera; - int fps = 60; - int fpsMin = 60; - int fpsMax = 60; - std::wstring fpsString; - bool inventoryOpen = false; - bool pause = false; + int fps = 60; + int fpsMin = 60; + int fpsMax = 60; + std::wstring fpsString; + bool inventoryOpen = false; + bool pause = false; std::shared_ptr contentAccessPanel; std::shared_ptr contentAccess; std::shared_ptr hotbarView; - std::shared_ptr debugPanel; + std::shared_ptr debugPanel; std::shared_ptr darkOverlay; std::unique_ptr interaction; std::shared_ptr grabbedItemView; - gui::GUI* gui; - LevelFrontend* frontend; + gui::GUI* gui; + LevelFrontend* frontend; Player* player; - std::vector elements; + std::vector elements; std::shared_ptr inventoryView = nullptr; - std::shared_ptr blockUI = nullptr; - glm::ivec3 currentblock {}; + std::shared_ptr blockUI = nullptr; + glm::ivec3 currentblock {}; blockid_t currentblockid = 0; std::shared_ptr createDebugPanel(Engine* engine); @@ -100,24 +100,24 @@ class Hud { void cleanup(); public: - Hud(Engine* engine, LevelFrontend* frontend, Player* player); - ~Hud(); + Hud(Engine* engine, LevelFrontend* frontend, Player* player); + ~Hud(); - void update(bool hudVisible); - void draw(const GfxContext& context); - void drawDebug(int fps); + void update(bool hudVisible); + void draw(const GfxContext& context); + void drawDebug(int fps); - bool isInventoryOpen() const; - bool isPause() const; + bool isInventoryOpen() const; + bool isPause() const; void setPause(bool pause); void openInventory(); - void openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptr blockInv, bool playerInventory); + void openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptr blockInv, bool playerInventory); void closeInventory(); void openPermanent(UiDocument* doc); - void add(HudElement element); - void remove(HudElement& element); + void add(HudElement element); + void remove(HudElement& element); void remove(std::shared_ptr node); Player* getPlayer() const; From e16b24f4af9b12bd1c4c0c7392b8cf2f8460e3ae Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 6 Mar 2024 01:24:15 +0300 Subject: [PATCH 02/12] debug panel moved to new translation unit --- src/frontend/debug_panel.cpp | 148 ++++++++++++++++++++++++++++++ src/frontend/hud.cpp | 173 ++++++----------------------------- src/frontend/hud.h | 17 +--- src/frontend/screens.cpp | 3 - 4 files changed, 181 insertions(+), 160 deletions(-) create mode 100644 src/frontend/debug_panel.cpp diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp new file mode 100644 index 00000000..9d3a2d3c --- /dev/null +++ b/src/frontend/debug_panel.cpp @@ -0,0 +1,148 @@ +#include +#include + +#include "gui/controls.h" +#include "../graphics/Mesh.h" +#include "../objects/Player.h" +#include "../physics/Hitbox.h" +#include "../world/Level.h" +#include "../world/World.h" +#include "../voxels/Chunks.h" +#include "../voxels/Block.h" +#include "../util/stringutil.h" +#include "../delegates.h" +#include "../engine.h" + +#include "WorldRenderer.h" + +using namespace gui; + +static std::shared_ptr