pantalla de carrega no bloquejant
streaming de audio per evitar precárrega i descompresió a memoria
This commit is contained in:
@@ -25,7 +25,13 @@ namespace Resource {
|
||||
auto getRoom(const std::string& name) -> std::shared_ptr<Room::Data>;
|
||||
auto getRooms() -> std::vector<RoomResource>&;
|
||||
|
||||
void reload(); // Recarga todos los recursos
|
||||
// --- Incremental loading (Director drives this from iterate()) ---
|
||||
void beginLoad(); // Prepara el estado del loader incremental
|
||||
auto loadStep(int budget_ms) -> bool; // Carga assets durante budget_ms; devuelve true si ha terminado
|
||||
void renderProgress(); // Dibuja la barra de progreso (usada por BootLoader)
|
||||
[[nodiscard]] auto isLoadDone() const -> bool;
|
||||
|
||||
void reload(); // Recarga todos los recursos (síncrono, usado en hot-reload de debug)
|
||||
#ifdef _DEBUG
|
||||
void reloadRoom(const std::string& name); // Recarga una habitación desde disco
|
||||
#endif
|
||||
@@ -47,7 +53,21 @@ namespace Resource {
|
||||
}
|
||||
};
|
||||
|
||||
// Métodos de carga de recursos
|
||||
// Etapas del loader incremental
|
||||
enum class LoadStage {
|
||||
SOUNDS,
|
||||
MUSICS,
|
||||
SURFACES,
|
||||
SURFACES_POST, // Ajuste de transparent colors tras cargar todas las surfaces
|
||||
PALETTES,
|
||||
TEXT_FILES,
|
||||
ANIMATIONS,
|
||||
ROOMS,
|
||||
TEXTS,
|
||||
DONE
|
||||
};
|
||||
|
||||
// Métodos de carga de recursos (bucle completo, usados por reload() síncrono)
|
||||
void loadSounds();
|
||||
void loadMusics();
|
||||
void loadSurfaces();
|
||||
@@ -57,18 +77,27 @@ namespace Resource {
|
||||
void loadRooms();
|
||||
void createText();
|
||||
|
||||
// Helpers incrementales: cargan un único asset de la categoría correspondiente
|
||||
void loadOneSound(size_t index);
|
||||
void loadOneMusic(size_t index);
|
||||
void loadOneSurface(size_t index);
|
||||
void finalizeSurfaces(); // Ajuste de transparent colors tras cargar surfaces
|
||||
void loadOnePalette(size_t index);
|
||||
void loadOneTextFile(size_t index);
|
||||
void loadOneAnimation(size_t index);
|
||||
void loadOneRoom(size_t index);
|
||||
void createOneText(size_t index);
|
||||
|
||||
// Métodos de limpieza
|
||||
void clear();
|
||||
void clearSounds();
|
||||
void clearMusics();
|
||||
|
||||
// Métodos de gestión de carga
|
||||
void load();
|
||||
void load(); // Carga completa síncrona (usado solo por reload())
|
||||
void calculateTotal();
|
||||
void renderProgress();
|
||||
static void checkEvents();
|
||||
void updateLoadingProgress(int steps = 5);
|
||||
void setCurrentLoading(const std::string& name); // Desa el nom del recurs en curs i repinta (wasm/debug)
|
||||
void updateLoadingProgress();
|
||||
void setCurrentLoading(const std::string& name); // Desa el nom del recurs en curs
|
||||
|
||||
// Helper para mensajes de error de carga
|
||||
[[noreturn]] static void throwLoadError(const std::string& asset_type, const std::string& file_path, const std::exception& e);
|
||||
@@ -92,7 +121,11 @@ namespace Resource {
|
||||
|
||||
ResourceCount count_{}; // Contador de recursos
|
||||
std::shared_ptr<Text> loading_text_; // Texto para la pantalla de carga
|
||||
std::string current_loading_name_; // Nom del recurs que s'està a punt de carregar (debug/wasm)
|
||||
std::string current_loading_name_; // Nom del recurs que s'està a punt de carregar
|
||||
|
||||
// Estado del loader incremental
|
||||
LoadStage stage_{LoadStage::DONE}; // Arranca en DONE hasta que beginLoad() lo cambie
|
||||
size_t stage_index_{0}; // Cursor dentro de la categoría actual
|
||||
};
|
||||
|
||||
} // namespace Resource
|
||||
|
||||
Reference in New Issue
Block a user