Afegida barra de progres en la càrrega de recursos

This commit is contained in:
2025-02-26 10:05:52 +01:00
parent 64880a427e
commit 2457517f2b
4 changed files with 175 additions and 26 deletions

View File

@@ -1,14 +1,14 @@
#pragma once
#include <memory> // for shared_ptr
#include <string> // for string
#include <vector> // for vector
#include "animated_sprite.h" // for AnimationsFileBuffer
#include "room.h" // for room_t
#include "text.h" // for Text, TextFile
#include "texture.h" // for Texture
struct JA_Music_t; // lines 11-11
struct JA_Sound_t; // lines 12-12
#include <memory> // for shared_ptr
#include <string> // for string
#include <vector> // for vector
#include "animated_sprite.h" // for AnimationsFileBuffer
#include "room.h" // for room_t
#include "text.h" // for Text, TextFile
#include "texture.h" // for Texture
struct JA_Music_t; // lines 11-11
struct JA_Sound_t; // lines 12-12
// Estructura para almacenar ficheros de sonido y su nombre
struct ResourceSound
@@ -98,6 +98,41 @@ struct ResourceRoom
: name(name), room(room) {}
};
// Estructura para llevar la cuenta de los recursos cargados
struct ResourceCount
{
// int sounds; // Número de sonidos cargados
// int musics; // Número de musicas cargadas
// int textures; // Número de texturas cargadas
// int text_files; // Número de ficheros de texto cargados
// int texts; // Número de objetos de texto cargados
// int animations; // Número de animaciones cargadas
// int tile_maps; // Número de mapas de tiles cargados
// int rooms; // Número de habitaciones cargadas
int total; // Número total de recursos
int loaded; // Número de recursos cargados
// Constructor
ResourceCount()
: total(0), loaded(0) {}
// Constructor
ResourceCount(int total, int loaded)
: total(total), loaded(loaded) {}
// Añade una cantidad a los recursos cargados
void add(int amount)
{
loaded += amount;
}
// Obtiene el porcentaje de recursos cargados
float getPercentage()
{
return static_cast<float>(loaded) / static_cast<float>(total);
}
};
class Resource
{
private:
@@ -113,6 +148,8 @@ private:
std::vector<ResourceTileMap> tile_maps_; // Vector con los mapas de tiles
std::vector<ResourceRoom> rooms_; // Vector con las habitaciones
ResourceCount count_; // Contador de recursos
// Carga los sonidos
void loadSounds();
@@ -149,6 +186,18 @@ private:
// Vacía el vector de musicas
void clearMusics();
// Calcula el numero de recursos para cargar
void calculateTotal();
// Muestra el progreso de carga
void renderProgress();
// Comprueba los eventos
void checkEvents();
// Actualiza el progreso de carga
void updateLoadingProgress();
// [SINGLETON] Ahora el constructor y el destructor son privados, para no poder crear objetos resource desde fuera
// Constructor