World content packs list

This commit is contained in:
MihailRis
2023-12-18 19:45:29 +03:00
parent 7f8935a93c
commit 082599e78c
8 changed files with 82 additions and 26 deletions
+21 -1
View File
@@ -1,9 +1,11 @@
#include "ContentPack.h"
#include <iostream>
#include <stdexcept>
#include "../files/files.h"
#include "../coders/json.h"
#include "../files/files.h"
#include "../files/engine_paths.h"
namespace fs = std::filesystem;
@@ -44,3 +46,21 @@ void ContentPack::scan(fs::path rootfolder,
packs.push_back(read(folder));
}
}
std::vector<std::string> ContentPack::worldPacksList(fs::path folder) {
fs::path listfile = folder / fs::path("packs.list");
if (!fs::is_regular_file(listfile)) {
std::cerr << "warning: packs.list not found (will be created)";
std::cerr << std::endl;
files::write_string(listfile, "# autogenerated, do not modify\nbase\n");
}
return files::read_list(listfile);
}
fs::path ContentPack::findPack(const EnginePaths* paths, std::string name) {
auto folder = paths->getResources() / fs::path("content") / fs::path(name);
if (!fs::is_directory(folder)) {
throw std::runtime_error("could not to find pack '"+name+"'");
}
return folder;
}