diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index 984ebc0e..0a45adfa 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -52,20 +52,23 @@ shared_ptr create_main_menu_panel(Engine* engine) { Panel* worldsPanel = new Panel(vec2(390, 200), vec4(5.0f)); worldsPanel->color(vec4(0.1f)); - for (auto const& entry : directory_iterator(enginefs::get_worlds_folder())) { - string name = entry.path().filename().string(); - Button* button = new Button(util::str2wstr_utf8(name), - vec4(10.0f, 8.0f, 10.0f, 8.0f)); - button->color(vec4(0.5f)); - button->listenAction([engine, panel, name](GUI*) { - EngineSettings& settings = engine->getSettings(); + path worldsFolder = enginefs::get_worlds_folder(); + if (std::filesystem::is_directory(worldsFolder)) { + for (auto const& entry : directory_iterator(worldsFolder)) { + string name = entry.path().filename().string(); + Button* button = new Button(util::str2wstr_utf8(name), + vec4(10.0f, 8.0f, 10.0f, 8.0f)); + button->color(vec4(0.5f)); + button->listenAction([engine, panel, name](GUI*) { + EngineSettings& settings = engine->getSettings(); - auto folder = enginefs::get_worlds_folder()/u8path(name); - World* world = new World(name, folder, 42, settings); - auto screen = new LevelScreen(engine, world->load(settings)); - engine->setScreen(shared_ptr(screen)); - }); - worldsPanel->add(button); + auto folder = enginefs::get_worlds_folder()/u8path(name); + World* world = new World(name, folder, 42, settings); + auto screen = new LevelScreen(engine, world->load(settings)); + engine->setScreen(shared_ptr(screen)); + }); + worldsPanel->add(button); + } } panel->add(worldsPanel);