Minor refactor

This commit is contained in:
MihailRis
2023-12-20 23:22:48 +03:00
parent e0aee76f41
commit 170e6b86ea
3 changed files with 21 additions and 15 deletions
+9
View File
@@ -78,3 +78,12 @@ fs::path ContentPack::findPack(const EnginePaths* paths, std::string name) {
} }
return folder; return folder;
} }
void ContentPack::readPacks(const EnginePaths* paths,
std::vector<ContentPack>& packs,
const std::vector<std::string>& packnames) {
for (const auto& name : packnames) {
fs::path packfolder = ContentPack::findPack(paths, name);
packs.push_back(ContentPack::read(packfolder));
}
}
+3
View File
@@ -36,6 +36,9 @@ struct ContentPack {
std::vector<ContentPack>& packs); std::vector<ContentPack>& packs);
static std::vector<std::string> worldPacksList(std::filesystem::path folder); static std::vector<std::string> worldPacksList(std::filesystem::path folder);
static std::filesystem::path findPack(const EnginePaths* paths, std::string name); static std::filesystem::path findPack(const EnginePaths* paths, std::string name);
static void readPacks(const EnginePaths* paths,
std::vector<ContentPack>& packs,
const std::vector<std::string>& names);
}; };
#endif // CONTENT_CONTENT_PACK_H_ #endif // CONTENT_CONTENT_PACK_H_
+2 -8
View File
@@ -147,18 +147,13 @@ void create_languages_panel(Engine* engine, PagesControl* menu) {
} }
void open_world(std::string name, Engine* engine) { void open_world(std::string name, Engine* engine) {
// TODO: complete and move somewhere
auto paths = engine->getPaths(); auto paths = engine->getPaths();
auto resdir = paths->getResources();
auto folder = paths->getWorldsFolder()/fs::u8path(name); auto folder = paths->getWorldsFolder()/fs::u8path(name);
auto& packs = engine->getContentPacks(); auto& packs = engine->getContentPacks();
packs.clear(); packs.clear();
auto packnames = ContentPack::worldPacksList(folder);
for (auto name : packnames) {
try { try {
fs::path packfolder = ContentPack::findPack(paths, name); auto packNames = ContentPack::worldPacksList(folder);
packs.push_back(ContentPack::read(packfolder)); ContentPack::readPacks(paths, packs, packNames);
} catch (contentpack_error& error) { } catch (contentpack_error& error) {
// could not to find or read pack // could not to find or read pack
guiutil::alert(engine->getGUI(), guiutil::alert(engine->getGUI(),
@@ -166,7 +161,6 @@ void open_world(std::string name, Engine* engine) {
L": "+util::str2wstr_utf8(error.getPackId())); L": "+util::str2wstr_utf8(error.getPackId()));
return; return;
} }
}
engine->loadContent(); engine->loadContent();
auto* content = engine->getContent(); auto* content = engine->getContent();