From 793fd82b903503da24333316348087f97cb2f834 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 13 Mar 2024 13:18:40 +0300 Subject: [PATCH 1/4] wip --- src/frontend/menu/menu.cpp | 10 +++++++++- src/frontend/menu/menu.h | 18 ++++++++++++++++++ src/frontend/menu/menu_pause.cpp | 10 ++++------ 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/frontend/menu/menu.cpp b/src/frontend/menu/menu.cpp index 757abbaa..e6ee019c 100644 --- a/src/frontend/menu/menu.cpp +++ b/src/frontend/menu/menu.cpp @@ -362,9 +362,17 @@ void create_new_world_panel(Engine* engine) { auto seedstr = std::to_wstring(randU64()); auto seedInput = std::make_shared(seedstr, glm::vec4(6.0f)); panel->add(seedInput); - + panel->add(guiutil::gotoButton(langs::get(L"World generator", L"world"), "world_generators", engine->getGUI()->getMenu())); + panel->add(menus::create_button(L"Content", glm::vec4(10), glm::vec4(1), [=](GUI* gui) { + engine->loadAllPacks(); + auto panel = menus::create_packs_panel(engine->getContentPacks(), engine, false, nullptr, nullptr); + auto menu = gui->getMenu(); + menu->addPage("content-packs", panel); + menu->setPage("content-packs"); + })); + panel->add(menus::create_button(L"Create World", glm::vec4(10), glm::vec4(1, 20, 1, 1), [=](GUI*) { if (!nameInput->validate()) diff --git a/src/frontend/menu/menu.h b/src/frontend/menu/menu.h index 2014c961..774f868f 100644 --- a/src/frontend/menu/menu.h +++ b/src/frontend/menu/menu.h @@ -2,16 +2,34 @@ #define FRONTEND_MENU_MENU_H_ #include +#include +#include +#include +#include "../../content/ContentPack.h" + + +namespace gui { + class Panel; +} class Engine; class LevelController; +using packconsumer = std::function; + namespace menus { // implemented in menu_settings.cpp extern void create_settings_panel(Engine* engine); // implemented in menu_pause.cpp extern void create_pause_panel(Engine* engine, LevelController* controller); + extern std::shared_ptr create_packs_panel( + const std::vector& packs, + Engine* engine, + bool backbutton, + packconsumer callback, + packconsumer remover + ); /// @brief Load world, convert if required and set to LevelScreen. /// @param name world name diff --git a/src/frontend/menu/menu_pause.cpp b/src/frontend/menu/menu_pause.cpp index c44d899a..73eb593a 100644 --- a/src/frontend/menu/menu_pause.cpp +++ b/src/frontend/menu/menu_pause.cpp @@ -16,9 +16,7 @@ using namespace gui; -using packconsumer = std::function; - -std::shared_ptr create_packs_panel( +std::shared_ptr menus::create_packs_panel( const std::vector& packs, Engine* engine, bool backbutton, @@ -39,7 +37,7 @@ std::shared_ptr create_packs_panel( callback(pack); }); } - auto runtime = engine->getContent()->getPackRuntime(pack.id); + auto runtime = engine->getContent() ? engine->getContent()->getPackRuntime(pack.id) : nullptr; auto idlabel = std::make_shared