xml is spreading...

This commit is contained in:
MihailRis
2024-04-04 01:35:46 +03:00
parent 0dc3ab50a2
commit a155b80643
2 changed files with 79 additions and 59 deletions
+30 -20
View File
@@ -17,37 +17,32 @@
using namespace gui; using namespace gui;
std::shared_ptr<Panel> menus::create_packs_panel( std::shared_ptr<Container> create_pack_panel(
const std::vector<ContentPack>& packs, const ContentPack& pack,
Engine* engine, Engine* engine,
bool backbutton,
packconsumer callback, packconsumer callback,
packconsumer remover packconsumer remover
) { ) {
auto assets = engine->getAssets(); auto assets = engine->getAssets();
auto panel = std::make_shared<Panel>(glm::vec2(550, 200), glm::vec4(5.0f)); auto packpanel = std::dynamic_pointer_cast<Container>(guiutil::create(
panel->setColor(glm::vec4(1.0f, 1.0f, 1.0f, 0.07f)); "<container size='540,80' color='#0F1E2DB2'>"
panel->setMaxLength(400); "</container>"
panel->setScrollable(true); ));
for (auto& pack : packs) {
auto packpanel = std::make_shared<Container>(glm::vec2(540, 80));
packpanel->setColor(glm::vec4(0.06f, 0.12f, 0.18f, 0.7f));
if (callback) { if (callback) {
packpanel->listenAction([=](GUI*) { packpanel->listenAction([=](GUI*) {
callback(pack); callback(pack);
}); });
} }
auto runtime = engine->getContent() ? engine->getContent()->getPackRuntime(pack.id) : nullptr; auto runtime = engine->getContent() ? engine->getContent()->getPackRuntime(pack.id) : nullptr;
auto idlabel = std::make_shared<Label>( auto idtext = (runtime && runtime->getStats().hasSavingContent())
(runtime && runtime->getStats().hasSavingContent())
? "*["+pack.id+"]" ? "*["+pack.id+"]"
: "["+pack.id+"]" : "["+pack.id+"]";
);
idlabel->setColor(glm::vec4(1, 1, 1, 0.5f)); packpanel->add(guiutil::create(
idlabel->setSize(glm::vec2(300, 25)); "<label pos='215,2' color='#FFFFFF80' size='300,25' align='right'>" +
idlabel->setAlign(Align::right); idtext +
packpanel->add(idlabel, glm::vec2(215, 2)); "</label>"
));
auto titlelabel = std::make_shared<Label>(pack.title); auto titlelabel = std::make_shared<Label>(pack.title);
packpanel->add(titlelabel, glm::vec2(78, 6)); packpanel->add(titlelabel, glm::vec2(78, 6));
@@ -87,8 +82,23 @@ std::shared_ptr<Panel> menus::create_packs_panel(
}); });
packpanel->add(rembtn, glm::vec2(470, 22)); packpanel->add(rembtn, glm::vec2(470, 22));
} }
return packpanel;
}
panel->add(packpanel); std::shared_ptr<Panel> menus::create_packs_panel(
const std::vector<ContentPack>& packs,
Engine* engine,
bool backbutton,
packconsumer callback,
packconsumer remover
){
auto panel = std::make_shared<Panel>(glm::vec2(550, 200), glm::vec4(5.0f));
panel->setColor(glm::vec4(1.0f, 1.0f, 1.0f, 0.07f));
panel->setMaxLength(400);
panel->setScrollable(true);
for (auto& pack : packs) {
panel->add(create_pack_panel(pack, engine, callback, remover));
} }
if (backbutton) { if (backbutton) {
panel->add(guiutil::backButton(engine->getGUI()->getMenu())); panel->add(guiutil::backButton(engine->getGUI()->getMenu()));
+10
View File
@@ -141,6 +141,13 @@ static int menu_back(lua_State* L) {
return 0; return 0;
} }
static int menu_reset(lua_State* L) {
auto node = getDocumentNode(L);
auto menu = dynamic_cast<gui::Menu*>(node.node);
menu->reset();
return 0;
}
static bool getattr(lua_State* L, gui::Menu* menu, const std::string& attr) { static bool getattr(lua_State* L, gui::Menu* menu, const std::string& attr) {
if (menu == nullptr) if (menu == nullptr)
return false; return false;
@@ -150,6 +157,9 @@ static bool getattr(lua_State* L, gui::Menu* menu, const std::string& attr) {
} else if (attr == "back") { } else if (attr == "back") {
lua_pushcfunction(L, menu_back); lua_pushcfunction(L, menu_back);
return true; return true;
} else if (attr == "reset") {
lua_pushcfunction(L, menu_reset);
return true;
} }
return false; return false;
} }