fix: resta tidy (60 troballes — empty-catch, widening, branch-clone, etc.)
This commit is contained in:
@@ -87,148 +87,88 @@ namespace Resource {
|
||||
return stage_ == LoadStage::DONE;
|
||||
}
|
||||
|
||||
// Helper per a una etapa que itera una llista de recursos.
|
||||
// Imprimeix la capçalera i neteja el vector al primer cop; després carrega
|
||||
// un element per crida fins exhaurir la llista, moment en què passa a `next`.
|
||||
void Cache::stepEachInList(List::Type type, const char* header, const std::function<void()>& clear_fn, LoadStage next, const std::function<void(size_t)>& load_fn) {
|
||||
auto list = List::get()->getListByType(type);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> " << header << '\n';
|
||||
clear_fn();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = next;
|
||||
stage_index_ = 0;
|
||||
return;
|
||||
}
|
||||
load_fn(stage_index_++);
|
||||
}
|
||||
|
||||
// Carga assets hasta agotar el presupuesto de tiempo o completar todas las etapas.
|
||||
// Devuelve true cuando ya no queda nada por cargar.
|
||||
auto Cache::loadStep(int budget_ms) -> bool {
|
||||
if (stage_ == LoadStage::DONE) { return true; }
|
||||
|
||||
const Uint64 start_ns = SDL_GetTicksNS();
|
||||
const Uint64 budget_ns = static_cast<Uint64>(budget_ms) * 1'000'000ULL;
|
||||
|
||||
auto listOf = [](List::Type t) { return List::get()->getListByType(t); };
|
||||
const Uint64 START_NS = SDL_GetTicksNS();
|
||||
const Uint64 BUDGET_NS = static_cast<Uint64>(budget_ms) * 1'000'000ULL;
|
||||
|
||||
while (stage_ != LoadStage::DONE) {
|
||||
switch (stage_) {
|
||||
case LoadStage::SOUNDS: {
|
||||
auto list = listOf(List::Type::SOUND);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> SOUND FILES" << '\n';
|
||||
sounds_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::MUSICS;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneSound(stage_index_++);
|
||||
case LoadStage::SOUNDS:
|
||||
stepEachInList(List::Type::SOUND, "SOUND FILES", [this] { sounds_.clear(); }, LoadStage::MUSICS, [this](size_t i) { loadOneSound(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::MUSICS: {
|
||||
auto list = listOf(List::Type::MUSIC);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> MUSIC FILES" << '\n';
|
||||
musics_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::SURFACES;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneMusic(stage_index_++);
|
||||
case LoadStage::MUSICS:
|
||||
stepEachInList(List::Type::MUSIC, "MUSIC FILES", [this] { musics_.clear(); }, LoadStage::SURFACES, [this](size_t i) { loadOneMusic(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::SURFACES: {
|
||||
auto list = listOf(List::Type::BITMAP);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> SURFACES" << '\n';
|
||||
surfaces_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::SURFACES_POST;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneSurface(stage_index_++);
|
||||
case LoadStage::SURFACES:
|
||||
stepEachInList(List::Type::BITMAP, "SURFACES", [this] { surfaces_.clear(); }, LoadStage::SURFACES_POST, [this](size_t i) { loadOneSurface(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::SURFACES_POST: {
|
||||
case LoadStage::SURFACES_POST:
|
||||
finalizeSurfaces();
|
||||
stage_ = LoadStage::PALETTES;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
case LoadStage::PALETTES: {
|
||||
auto list = listOf(List::Type::PALETTE);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> PALETTES" << '\n';
|
||||
palettes_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::TEXT_FILES;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOnePalette(stage_index_++);
|
||||
case LoadStage::PALETTES:
|
||||
stepEachInList(List::Type::PALETTE, "PALETTES", [this] { palettes_.clear(); }, LoadStage::TEXT_FILES, [this](size_t i) { loadOnePalette(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::TEXT_FILES: {
|
||||
auto list = listOf(List::Type::FONT);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> TEXT FILES" << '\n';
|
||||
text_files_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::ANIMATIONS;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneTextFile(stage_index_++);
|
||||
case LoadStage::TEXT_FILES:
|
||||
stepEachInList(List::Type::FONT, "TEXT FILES", [this] { text_files_.clear(); }, LoadStage::ANIMATIONS, [this](size_t i) { loadOneTextFile(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::ANIMATIONS: {
|
||||
auto list = listOf(List::Type::ANIMATION);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> ANIMATIONS" << '\n';
|
||||
animations_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::ROOMS;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneAnimation(stage_index_++);
|
||||
case LoadStage::ANIMATIONS:
|
||||
stepEachInList(List::Type::ANIMATION, "ANIMATIONS", [this] { animations_.clear(); }, LoadStage::ROOMS, [this](size_t i) { loadOneAnimation(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::ROOMS: {
|
||||
auto list = listOf(List::Type::ROOM);
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> ROOMS" << '\n';
|
||||
rooms_.clear();
|
||||
}
|
||||
if (stage_index_ >= list.size()) {
|
||||
stage_ = LoadStage::TEXTS;
|
||||
stage_index_ = 0;
|
||||
break;
|
||||
}
|
||||
loadOneRoom(stage_index_++);
|
||||
case LoadStage::ROOMS:
|
||||
stepEachInList(List::Type::ROOM, "ROOMS", [this] { rooms_.clear(); }, LoadStage::TEXTS, [this](size_t i) { loadOneRoom(i); });
|
||||
break;
|
||||
}
|
||||
case LoadStage::TEXTS: {
|
||||
// createText itera sobre una lista fija de 5 fuentes
|
||||
constexpr size_t TEXT_COUNT = 5;
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> CREATING TEXT_OBJECTS" << '\n';
|
||||
texts_.clear();
|
||||
}
|
||||
if (stage_index_ >= TEXT_COUNT) {
|
||||
stage_ = LoadStage::DONE;
|
||||
stage_index_ = 0;
|
||||
std::cout << "\n** RESOURCES LOADED" << '\n';
|
||||
break;
|
||||
}
|
||||
createOneText(stage_index_++);
|
||||
case LoadStage::TEXTS:
|
||||
stepTexts();
|
||||
break;
|
||||
}
|
||||
case LoadStage::DONE:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((SDL_GetTicksNS() - start_ns) >= budget_ns) { break; }
|
||||
if ((SDL_GetTicksNS() - START_NS) >= BUDGET_NS) { break; }
|
||||
}
|
||||
|
||||
return stage_ == LoadStage::DONE;
|
||||
}
|
||||
|
||||
void Cache::stepTexts() {
|
||||
// createText itera sobre una lista fija de 5 fuentes
|
||||
constexpr size_t TEXT_COUNT = 5;
|
||||
if (stage_index_ == 0) {
|
||||
std::cout << "\n>> CREATING TEXT_OBJECTS" << '\n';
|
||||
texts_.clear();
|
||||
}
|
||||
if (stage_index_ >= TEXT_COUNT) {
|
||||
stage_ = LoadStage::DONE;
|
||||
stage_index_ = 0;
|
||||
std::cout << "\n** RESOURCES LOADED" << '\n';
|
||||
return;
|
||||
}
|
||||
createOneText(stage_index_++);
|
||||
}
|
||||
|
||||
// Recarga todos los recursos (síncrono, solo para hot-reload de debug)
|
||||
void Cache::reload() {
|
||||
clear();
|
||||
@@ -382,13 +322,13 @@ namespace Resource {
|
||||
};
|
||||
|
||||
auto getTextObjectInfos() -> const std::vector<TextObjectInfo>& {
|
||||
static const std::vector<TextObjectInfo> info = {
|
||||
static const std::vector<TextObjectInfo> INFO = {
|
||||
{.key = "aseprite", .texture_file = "aseprite.gif", .text_file = "aseprite.fnt"},
|
||||
{.key = "gauntlet", .texture_file = "gauntlet.gif", .text_file = "gauntlet.fnt"},
|
||||
{.key = "smb2", .texture_file = "smb2.gif", .text_file = "smb2.fnt"},
|
||||
{.key = "subatomic", .texture_file = "subatomic.gif", .text_file = "subatomic.fnt"},
|
||||
{.key = "8bithud", .texture_file = "8bithud.gif", .text_file = "8bithud.fnt"}};
|
||||
return info;
|
||||
return INFO;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint> // Para uint8_t
|
||||
#include <memory> // Para shared_ptr
|
||||
#include <string> // Para string
|
||||
#include <cstdint> // Para uint8_t
|
||||
#include <functional> // Para std::function
|
||||
#include <memory> // Para shared_ptr
|
||||
#include <string> // Para string
|
||||
#include <utility>
|
||||
#include <vector> // Para vector
|
||||
|
||||
#include "core/resources/resource_list.hpp" // Para List::Type
|
||||
#include "core/resources/resource_types.hpp" // Para structs de recursos
|
||||
|
||||
namespace Resource {
|
||||
@@ -103,6 +105,11 @@ namespace Resource {
|
||||
// Helper para mensajes de error de carga
|
||||
static void logLoadError(const std::string& asset_type, const std::string& file_path, const std::exception& e);
|
||||
|
||||
// Helper d'iteració per a una etapa que recorre una llista de recursos.
|
||||
// Crida `load_fn(i)` per a cada element i, en exhaurir-se, transiciona a `next`.
|
||||
void stepEachInList(List::Type type, const char* header, const std::function<void()>& clear_fn, LoadStage next, const std::function<void(size_t)>& load_fn);
|
||||
void stepTexts(); // Etapa especial: no usa List, itera sobre TEXT_COUNT fonts fixes.
|
||||
|
||||
// Constructor y destructor
|
||||
Cache();
|
||||
~Cache() = default;
|
||||
|
||||
Reference in New Issue
Block a user