#include "gui_util.hpp" #include "elements/Label.hpp" #include "elements/Menu.hpp" #include "elements/Button.hpp" #include "elements/TextBox.hpp" #include "gui_xml.hpp" #include "logic/scripting/scripting.hpp" #include "frontend/locale.hpp" #include "util/stringutil.hpp" #include "delegates.hpp" #include "window/Events.hpp" #include "engine/Engine.hpp" #include using namespace gui; std::shared_ptr guiutil::create(const std::string& source, scriptenv env) { if (env == nullptr) { env = scripting::get_root_environment(); } UiXmlReader reader(env); return reader.readXML("[string]", source); } void guiutil::alert( Engine& engine, const std::wstring& text, const runnable& on_hidden ) { auto panel = std::make_shared(glm::vec2(500, 300), glm::vec4(4.0f), 4.0f); panel->setColor(glm::vec4(0.0f, 0.0f, 0.0f, 0.5f)); auto menuPtr = engine.getGUI()->getMenu(); auto& menu = *menuPtr; runnable on_hidden_final = [on_hidden, &menu, &engine]() { menu.removePage(""); if (on_hidden) { on_hidden(); } else { menu.back(); } }; auto label = std::make_shared