update generators scanning

This commit is contained in:
MihailRis
2024-09-27 23:55:14 +03:00
parent 39030efd74
commit c46090f881
14 changed files with 46 additions and 9 deletions
+10 -1
View File
@@ -51,13 +51,22 @@ static void detect_defs(
}
if (fs::is_regular_file(file) && files::is_data_file(file)) {
detected.push_back(prefix.empty() ? name : prefix + ":" + name);
} else if (fs::is_directory(file)) {
} else if (fs::is_directory(file) &&
file.extension() != fs::u8path(".files")) {
detect_defs(file, name, detected);
}
}
}
}
std::vector<std::string> ContentLoader::scanContent(
const ContentPack& pack, ContentType type
) {
std::vector<std::string> detected;
detect_defs(pack.folder / ContentPack::getFolderFor(type), pack.id, detected);
return detected;
}
bool ContentLoader::fixPackIndices(
const fs::path& folder,
dv::value& indicesRoot,
+5
View File
@@ -63,6 +63,11 @@ public:
dv::value& indicesRoot,
const std::string& contentSection
);
static std::vector<std::string> scanContent(
const ContentPack& pack, ContentType type
);
void fixPackIndices();
void load();
};
+12
View File
@@ -6,6 +6,7 @@
#include <vector>
#include "typedefs.hpp"
#include "content_fwd.hpp"
class EnginePaths;
@@ -51,6 +52,7 @@ struct ContentPack {
static inline const fs::path BLOCKS_FOLDER = "blocks";
static inline const fs::path ITEMS_FOLDER = "items";
static inline const fs::path ENTITIES_FOLDER = "entities";
static inline const fs::path GENERATORS_FOLDER = "generators";
static const std::vector<std::string> RESERVED_NAMES;
static bool is_pack(const fs::path& folder);
@@ -69,6 +71,16 @@ struct ContentPack {
);
static ContentPack createCore(const EnginePaths*);
static inline fs::path getFolderFor(ContentType type) {
switch (type) {
case ContentType::BLOCK: return ContentPack::BLOCKS_FOLDER;
case ContentType::ITEM: return ContentPack::ITEMS_FOLDER;
case ContentType::ENTITY: return ContentPack::ENTITIES_FOLDER;
case ContentType::GENERATOR: return ContentPack::GENERATORS_FOLDER;
case ContentType::NONE: return fs::u8path("");
}
}
};
struct ContentPackStats {
+1 -1
View File
@@ -74,7 +74,7 @@ void ContentLoader::loadGenerator(
map.at("biome_parameters").get(def.biomeParameters);
map.at("sea_level").get(def.seaLevel);
auto folder = generatorsDir / fs::u8path(name);
auto folder = generatorsDir / fs::u8path(name + ".files");
auto scriptFile = folder / fs::u8path("script.lua");
auto structuresFile = folder / STRUCTURES_FILE;