Menu-related panels creation moved to frontend/menu module

This commit is contained in:
MihailRis
2023-11-20 11:28:28 +03:00
parent c712c2239f
commit 926fcb1f79
7 changed files with 51 additions and 297 deletions
+10 -35
View File
@@ -46,14 +46,12 @@ inline Label* create_label(gui::wstringsupplier supplier) {
}
HudRenderer::HudRenderer(Engine* engine, Level* level) : level(level), assets(engine->getAssets()), gui(engine->getGUI()) {
auto menu = gui->getMenu();
batch = new Batch2D(1024);
uicamera = new Camera(vec3(), 1);
uicamera->perspective = false;
uicamera->flipped = true;
auto pagesptr = gui->get("pages");
PagesControl* pages = (PagesControl*)(pagesptr.get());
Panel* panel = new Panel(vec2(250, 200), vec4(5.0f), 1.0f);
debugPanel = shared_ptr<UINode>(panel);
panel->listenInterval(1.0f, [this]() {
@@ -117,37 +115,13 @@ HudRenderer::HudRenderer(Engine* engine, Level* level) : level(level), assets(en
panel->add(shared_ptr<UINode>(sub));
}
panel->refresh();
panel = new Panel(vec2(350, 200));
auto pauseMenu = shared_ptr<UINode>(panel);
panel->color(vec4(0.0f));
{
Button* button = new Button(L"Continue", vec4(10.0f));
button->listenAction([=](GUI*){
pages->reset();
pause = false;
});
panel->add(shared_ptr<UINode>(button));
}
panel->add((new Button(L"Settings", vec4(10.f)))->listenAction([=](GUI* gui) {
pages->set("settings");
}));
{
Button* button = new Button(L"Save and Quit to Menu", vec4(10.f));
button->listenAction([this, engine](GUI*){
engine->setScreen(shared_ptr<Screen>(new MenuScreen(engine)));
});
panel->add(shared_ptr<UINode>(button));
}
pages->reset();
pages->add("pause", pauseMenu);
menu->reset();
gui->add(this->debugPanel);
}
HudRenderer::~HudRenderer() {
gui->remove(debugPanel);
//gui->remove(gui->get("pages"));
delete batch;
delete uicamera;
}
@@ -224,7 +198,7 @@ void HudRenderer::drawInventory(const GfxContext& ctx, Player* player) {
tint.r *= 1.2f;
tint.g *= 1.2f;
tint.b *= 1.2f;
if (Events::jclicked(GLFW_MOUSE_BUTTON_LEFT)) {
if (Events::jclicked(mousecode::BUTTON_1)) {
player->choosenBlock = i+1;
}
} else {
@@ -240,16 +214,19 @@ void HudRenderer::drawInventory(const GfxContext& ctx, Player* player) {
}
void HudRenderer::update() {
PagesControl* pages = (PagesControl*)(gui->get("pages").get());
auto menu = gui->getMenu();
if (pause && menu->current().panel == nullptr) {
pause = false;
}
if (Events::jpressed(keycode::ESCAPE) && !gui->isFocusCaught()) {
if (pause) {
pause = false;
pages->reset();
menu->reset();
} else if (inventoryOpen) {
inventoryOpen = false;
} else {
pause = true;
pages->set("pause");
menu->set("pause");
}
}
if (Events::jactive(BIND_HUD_INVENTORY)) {
@@ -265,10 +242,8 @@ void HudRenderer::draw(const GfxContext& ctx){
const Viewport& viewport = ctx.getViewport();
const uint width = viewport.getWidth();
const uint height = viewport.getHeight();
auto pages = gui->get("pages");
debugPanel->visible(level->player->debug);
pages->setCoord((viewport.size() - pages->size()) / 2.0f);
uicamera->fov = height;