From abd28514e4c7018ed48cc35232eb09753c2dc672 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 9 Jan 2024 20:19:46 +0300 Subject: [PATCH] Content error messages --- res/texts/ru_RU.txt | 1 + src/frontend/hud.cpp | 3 ++- src/frontend/menu.cpp | 23 ++++++++++++++++++++++- src/logic/PlayerController.cpp | 7 ------- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/res/texts/ru_RU.txt b/res/texts/ru_RU.txt index d20a8095..c3b4868a 100644 --- a/res/texts/ru_RU.txt +++ b/res/texts/ru_RU.txt @@ -14,6 +14,7 @@ menu.Quit=Выход menu.Continue=Продолжить menu.Save and Quit to Menu=Сохранить и Выйти в Меню menu.missing-content=Отсутствует Контент! +menu.Content Error=Ошибка Контента menu.Controls=Управление menu.Back to Main Menu=Вернуться в Меню menu.Settings=Настройки diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index e877bb22..a821c6b5 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -309,7 +309,8 @@ void HudRenderer::draw(const GfxContext& ctx){ batch->texture(atlas->getTexture()); } } - batch->rect(width - 56, uicamera->getFov() - 56, 48, 48, 0, 0, 0, region, false, true, glm::vec4(1.0f)); + batch->rect(width - 56, uicamera->getFov() - 56, 48, 48, 0, 0, 0, + region, false, true, glm::vec4(1.0f)); batch->render(); } } diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index e5600e50..5f88bf27 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -68,6 +68,22 @@ Button* create_button(std::wstring text, return btn; } +void show_content_error_page(Engine* engine, std::string message) { + auto* gui = engine->getGUI(); + auto* menu = gui->getMenu(); + auto panel = create_page(engine, "error", 800, 0.5f, 8); + + panel->add(new Label(langs::get(L"Content Error", L"menu"))); + panel->add(new Label(util::str2wstr_utf8(message))); + + panel->add((new Button(langs::get(L"Back to Main Menu", L"menu"), + vec4(8.0f))) + ->listenAction([=](GUI*){ + menu->back(); + })); + menu->set("error"); +} + void show_content_missing(Engine* engine, const Content* content, ContentLUT* lut) { auto* gui = engine->getGUI(); auto* menu = gui->getMenu(); @@ -163,7 +179,12 @@ void open_world(std::string name, Engine* engine) { L": "+util::str2wstr_utf8(error.getPackId())); return; } - engine->loadContent(); + try { + engine->loadContent(); + } catch (const std::runtime_error& error) { + show_content_error_page(engine, error.what()); + return; + } auto* content = engine->getContent(); auto& settings = engine->getSettings(); diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index 50f5ea9d..52541cbb 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -171,13 +171,6 @@ void PlayerController::updateKeyboard() { input.cameraMode = Events::jactive(BIND_CAM_MODE); input.noclip = Events::jactive(BIND_PLAYER_NOCLIP); input.flight = Events::jactive(BIND_PLAYER_FLIGHT); - - // block choice - for (int i = 1; i < 10; i++){ - if (Events::jpressed(keycode::NUM_0+i)){ - player->chosenItem = i; - } - } } void PlayerController::updateCamera(float delta, bool movement) {