xml is spreading...
This commit is contained in:
@@ -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()));
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user