update assets errors handling & add 'atlases' to preload
This commit is contained in:
+14
-24
@@ -56,7 +56,7 @@ aloader_func AssetsLoader::getLoader(AssetType tag) {
|
||||
return found->second;
|
||||
}
|
||||
|
||||
bool AssetsLoader::loadNext() {
|
||||
void AssetsLoader::loadNext() {
|
||||
const aloader_entry& entry = entries.front();
|
||||
logger.info() << "loading " << entry.filename << " as " << entry.alias;
|
||||
try {
|
||||
@@ -64,11 +64,13 @@ bool AssetsLoader::loadNext() {
|
||||
auto postfunc = loader(this, paths, entry.filename, entry.alias, entry.config);
|
||||
postfunc(assets);
|
||||
entries.pop();
|
||||
return true;
|
||||
} catch (std::runtime_error& err) {
|
||||
logger.error() << err.what();
|
||||
auto type = entry.tag;
|
||||
std::string filename = entry.filename;
|
||||
std::string reason = err.what();
|
||||
entries.pop();
|
||||
return false;
|
||||
throw assetload::error(type, std::move(filename), std::move(reason));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,6 +156,7 @@ void AssetsLoader::processPreloadList(AssetType tag, dynamic::List* list) {
|
||||
|
||||
void AssetsLoader::processPreloadConfig(const fs::path& file) {
|
||||
auto root = files::read_json(file);
|
||||
processPreloadList(AssetType::ATLAS, root->list("atlases").get());
|
||||
processPreloadList(AssetType::FONT, root->list("fonts").get());
|
||||
processPreloadList(AssetType::SHADER, root->list("shaders").get());
|
||||
processPreloadList(AssetType::TEXTURE, root->list("textures").get());
|
||||
@@ -163,6 +166,13 @@ void AssetsLoader::processPreloadConfig(const fs::path& file) {
|
||||
}
|
||||
|
||||
void AssetsLoader::processPreloadConfigs(const Content* content) {
|
||||
auto preloadFile = paths->getMainRoot()/fs::path("preload.json");
|
||||
if (fs::exists(preloadFile)) {
|
||||
processPreloadConfig(preloadFile);
|
||||
}
|
||||
if (content == nullptr) {
|
||||
return;
|
||||
}
|
||||
for (auto& entry : content->getPacks()) {
|
||||
const auto& pack = entry.second;
|
||||
auto preloadFile = pack->getInfo().folder / fs::path("preload.json");
|
||||
@@ -170,29 +180,11 @@ void AssetsLoader::processPreloadConfigs(const Content* content) {
|
||||
processPreloadConfig(preloadFile);
|
||||
}
|
||||
}
|
||||
auto preloadFile = paths->getMainRoot()/fs::path("preload.json");
|
||||
if (fs::exists(preloadFile)) {
|
||||
processPreloadConfig(preloadFile);
|
||||
}
|
||||
}
|
||||
|
||||
void AssetsLoader::addDefaults(AssetsLoader& loader, const Content* content) {
|
||||
loader.add(AssetType::FONT, FONTS_FOLDER+"/font", "normal");
|
||||
loader.add(AssetType::SHADER, SHADERS_FOLDER+"/ui", "ui");
|
||||
loader.add(AssetType::SHADER, SHADERS_FOLDER+"/main", "main");
|
||||
loader.add(AssetType::SHADER, SHADERS_FOLDER+"/entity", "entity");
|
||||
loader.add(AssetType::SHADER, SHADERS_FOLDER+"/lines", "lines");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/menubg", "gui/menubg");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/delete_icon", "gui/delete_icon");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/no_icon", "gui/no_icon");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/no_world_icon", "gui/no_world_icon");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/warning", "gui/warning");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/error", "gui/error");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/cross", "gui/cross");
|
||||
loader.add(AssetType::TEXTURE, TEXTURES_FOLDER+"/gui/refresh", "gui/refresh");
|
||||
loader.processPreloadConfigs(content);
|
||||
if (content) {
|
||||
loader.processPreloadConfigs(content);
|
||||
|
||||
for (auto& entry : content->getBlockMaterials()) {
|
||||
auto& material = *entry.second;
|
||||
loader.tryAddSound(material.stepsSound);
|
||||
@@ -218,8 +210,6 @@ void AssetsLoader::addDefaults(AssetsLoader& loader, const Content* content) {
|
||||
}
|
||||
}
|
||||
}
|
||||
loader.add(AssetType::ATLAS, TEXTURES_FOLDER+"/blocks", "blocks");
|
||||
loader.add(AssetType::ATLAS, TEXTURES_FOLDER+"/items", "items");
|
||||
}
|
||||
|
||||
bool AssetsLoader::loadExternalTexture(
|
||||
|
||||
Reference in New Issue
Block a user