Add files via upload
This commit is contained in:
+35
-3
@@ -19,6 +19,7 @@
|
||||
#include "../files/WorldConverter.h"
|
||||
#include "../files/WorldFiles.h"
|
||||
#include "../world/World.h"
|
||||
#include "../world/WorldGenerators.h"
|
||||
#include "../world/Level.h"
|
||||
#include "../window/Events.h"
|
||||
#include "../window/Window.h"
|
||||
@@ -38,6 +39,10 @@ using glm::vec4;
|
||||
namespace fs = std::filesystem;
|
||||
using namespace gui;
|
||||
|
||||
namespace menus {
|
||||
std::string generatorID;
|
||||
}
|
||||
|
||||
inline uint64_t randU64() {
|
||||
srand(time(NULL));
|
||||
return rand() ^ (rand() << 8) ^
|
||||
@@ -82,7 +87,6 @@ static std::shared_ptr<Button> create_button(
|
||||
return btn;
|
||||
}
|
||||
|
||||
|
||||
void menus::create_version_label(Engine* engine) {
|
||||
auto gui = engine->getGUI();
|
||||
auto vlabel = std::make_shared<gui::Label>(
|
||||
@@ -182,6 +186,28 @@ void create_languages_panel(Engine* engine) {
|
||||
panel->add(guiutil::backButton(menu));
|
||||
}
|
||||
|
||||
void create_world_generators_panel(Engine* engine) {
|
||||
auto menu = engine->getGUI()->getMenu();
|
||||
auto panel = create_page(engine, "world_generators", 400, 0.5f, 1);
|
||||
panel->setScrollable(true);
|
||||
|
||||
std::vector<std::string> generatorsIDs = WorldGenerators::getGeneratorsIDs();
|
||||
std::sort(generatorsIDs.begin(), generatorsIDs.end());
|
||||
for (std::string& type : generatorsIDs) {
|
||||
const std::string& fullName = util::wstr2str_utf8(langs::get(util::str2wstr_utf8(type), L"world.generators"));
|
||||
auto button = std::make_shared<Button>(
|
||||
util::str2wstr_utf8(fullName),
|
||||
vec4(10.f),
|
||||
[=](GUI*) {
|
||||
menus::generatorID = type;
|
||||
menu->back();
|
||||
}
|
||||
);
|
||||
panel->add(button);
|
||||
}
|
||||
panel->add(guiutil::backButton(menu));
|
||||
}
|
||||
|
||||
void open_world(std::string name, Engine* engine) {
|
||||
auto paths = engine->getPaths();
|
||||
auto folder = paths->getWorldsFolder()/fs::u8path(name);
|
||||
@@ -428,6 +454,8 @@ void create_new_world_panel(Engine* engine) {
|
||||
auto seedInput = std::make_shared<TextBox>(seedstr, vec4(6.0f));
|
||||
panel->add(seedInput);
|
||||
|
||||
panel->add(guiutil::gotoButton(langs::get(L"World generator", L"world"), "world_generators", engine->getGUI()->getMenu()));
|
||||
|
||||
panel->add(create_button( L"Create World", vec4(10), vec4(1, 20, 1, 1),
|
||||
[=](GUI*) {
|
||||
if (!nameInput->validate())
|
||||
@@ -464,11 +492,12 @@ void create_new_world_panel(Engine* engine) {
|
||||
}
|
||||
|
||||
Level* level = World::create(
|
||||
name, folder, seed,
|
||||
name, menus::generatorID, folder, seed,
|
||||
engine->getSettings(),
|
||||
engine->getContent(),
|
||||
engine->getContentPacks()
|
||||
);
|
||||
menus::generatorID = WorldGenerators::getDefaultWorldGeneratorID();
|
||||
engine->setScreen(std::make_shared<LevelScreen>(engine, level));
|
||||
}));
|
||||
panel->add(guiutil::backButton(engine->getGUI()->getMenu()));
|
||||
@@ -655,15 +684,18 @@ void create_pause_panel(Engine* engine) {
|
||||
}
|
||||
|
||||
void menus::create_menus(Engine* engine) {
|
||||
menus::generatorID = WorldGenerators::getDefaultWorldGeneratorID();
|
||||
create_new_world_panel(engine);
|
||||
create_settings_panel(engine);
|
||||
create_controls_panel(engine);
|
||||
create_pause_panel(engine);
|
||||
create_languages_panel(engine);
|
||||
create_world_generators_panel(engine);
|
||||
create_main_menu_panel(engine);
|
||||
}
|
||||
|
||||
void menus::refresh_menus(Engine* engine) {
|
||||
create_main_menu_panel(engine);
|
||||
create_new_world_panel(engine);
|
||||
}
|
||||
create_world_generators_panel(engine);
|
||||
}
|
||||
Reference in New Issue
Block a user