sdl_callbacks
This commit is contained in:
@@ -467,10 +467,10 @@ void Resource::reload() {
|
||||
|
||||
// Carga los sonidos del juego
|
||||
void Resource::loadSounds() {
|
||||
Logger::info("SOUND FILES");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::SOUND);
|
||||
sounds_.clear();
|
||||
|
||||
int failed = 0;
|
||||
for (const auto& l : list) {
|
||||
auto name = getFileName(l);
|
||||
updateLoadingProgress(name);
|
||||
@@ -479,21 +479,23 @@ void Resource::loadSounds() {
|
||||
if (!audio_data.data.empty()) {
|
||||
sound = JA_LoadSound(audio_data.data.data(), audio_data.data.size());
|
||||
} else {
|
||||
// Fallback a cargar desde disco si no está en pack
|
||||
sound = JA_LoadSound(l.c_str());
|
||||
}
|
||||
if (sound == nullptr) {
|
||||
Logger::error(" Sound load failed: " + name);
|
||||
++failed;
|
||||
}
|
||||
sounds_.emplace_back(name, sound);
|
||||
Logger::dots("Sound : ", name, "[ LOADED ]");
|
||||
}
|
||||
Logger::info("Sounds loaded: " + std::to_string(list.size() - failed) + "/" + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Carga las músicas del juego
|
||||
void Resource::loadMusics() {
|
||||
Logger::cr();
|
||||
Logger::info("MUSIC FILES");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::MUSIC);
|
||||
musics_.clear();
|
||||
|
||||
int failed = 0;
|
||||
for (const auto& l : list) {
|
||||
auto name = getFileName(l);
|
||||
updateLoadingProgress(name);
|
||||
@@ -502,18 +504,19 @@ void Resource::loadMusics() {
|
||||
if (!audio_data.data.empty()) {
|
||||
music = JA_LoadMusic(audio_data.data.data(), audio_data.data.size());
|
||||
} else {
|
||||
// Fallback a cargar desde disco si no está en pack
|
||||
music = JA_LoadMusic(l.c_str());
|
||||
}
|
||||
if (music == nullptr) {
|
||||
Logger::error(" Music load failed: " + name);
|
||||
++failed;
|
||||
}
|
||||
musics_.emplace_back(name, music);
|
||||
Logger::dots("Music : ", name, "[ LOADED ]");
|
||||
}
|
||||
Logger::info("Musics loaded: " + std::to_string(list.size() - failed) + "/" + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Carga las texturas del juego
|
||||
void Resource::loadTextures() {
|
||||
Logger::cr();
|
||||
Logger::info("TEXTURES");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::BITMAP);
|
||||
textures_.clear();
|
||||
|
||||
@@ -522,12 +525,11 @@ void Resource::loadTextures() {
|
||||
updateLoadingProgress(name);
|
||||
textures_.emplace_back(name, std::make_shared<Texture>(Screen::get()->getRenderer(), l));
|
||||
}
|
||||
Logger::info("Textures loaded: " + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Carga los ficheros de texto del juego
|
||||
void Resource::loadTextFiles() {
|
||||
Logger::cr();
|
||||
Logger::info("TEXT FILES");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::FONT);
|
||||
text_files_.clear();
|
||||
|
||||
@@ -536,12 +538,11 @@ void Resource::loadTextFiles() {
|
||||
updateLoadingProgress(name);
|
||||
text_files_.emplace_back(name, Text::loadFile(l));
|
||||
}
|
||||
Logger::info("Text files loaded: " + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Carga las animaciones del juego
|
||||
void Resource::loadAnimations() {
|
||||
Logger::cr();
|
||||
Logger::info("ANIMATIONS");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::ANIMATION);
|
||||
animations_.clear();
|
||||
|
||||
@@ -550,12 +551,11 @@ void Resource::loadAnimations() {
|
||||
updateLoadingProgress(name);
|
||||
animations_.emplace_back(name, loadAnimationsFromFile(l));
|
||||
}
|
||||
Logger::info("Animations loaded: " + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Carga los datos para el modo demostración
|
||||
void Resource::loadDemoData() {
|
||||
Logger::cr();
|
||||
Logger::info("DEMO FILES");
|
||||
auto list = Asset::get()->getListByType(Asset::Type::DEMODATA);
|
||||
demos_.clear();
|
||||
|
||||
@@ -564,13 +564,11 @@ void Resource::loadDemoData() {
|
||||
updateLoadingProgress(name);
|
||||
demos_.emplace_back(loadDemoDataFromFile(l));
|
||||
}
|
||||
Logger::info("Demo files loaded: " + std::to_string(list.size()));
|
||||
}
|
||||
|
||||
// Crea las texturas de jugadores con todas sus variantes de paleta
|
||||
void Resource::createPlayerTextures() {
|
||||
Logger::cr();
|
||||
Logger::info("CREATING PLAYER TEXTURES");
|
||||
|
||||
// Configuración de jugadores y sus paletas
|
||||
struct PlayerConfig {
|
||||
std::string base_texture;
|
||||
@@ -641,9 +639,9 @@ void Resource::createPlayerTextures() {
|
||||
// Guardar con nombre específico
|
||||
std::string texture_name = player.name_prefix + "_pal" + std::to_string(palette_idx);
|
||||
textures_.emplace_back(texture_name, texture);
|
||||
Logger::dots("Player Texture : ", texture_name, "[ DONE ]");
|
||||
}
|
||||
}
|
||||
Logger::info("Player textures created: " + std::to_string(players.size() * 4));
|
||||
}
|
||||
|
||||
// Crea texturas a partir de textos para mostrar puntuaciones y mensajes
|
||||
@@ -657,9 +655,6 @@ void Resource::createTextTextures() {
|
||||
text(std::move(text_init)) {}
|
||||
};
|
||||
|
||||
Logger::cr();
|
||||
Logger::info("CREATING TEXTURES");
|
||||
|
||||
// Texturas de tamaño normal con outline
|
||||
std::vector<NameAndText> strings1 = {
|
||||
{"game_text_1000_points", "1.000"},
|
||||
@@ -673,7 +668,6 @@ void Resource::createTextTextures() {
|
||||
auto text1 = getText("04b_25_enhanced");
|
||||
for (const auto& s : strings1) {
|
||||
textures_.emplace_back(s.name, text1->writeDXToTexture(Text::STROKE, s.text, -2, Colors::NO_COLOR_MOD, 1, param.game.item_text_outline_color));
|
||||
Logger::dots("Texture : ", s.name, "[ DONE ]");
|
||||
}
|
||||
|
||||
// Texturas de tamaño doble
|
||||
@@ -688,8 +682,9 @@ void Resource::createTextTextures() {
|
||||
auto text2 = getText("04b_25_2x_enhanced");
|
||||
for (const auto& s : strings2) {
|
||||
textures_.emplace_back(s.name, text2->writeDXToTexture(Text::STROKE, s.text, -4, Colors::NO_COLOR_MOD, 1, param.game.item_text_outline_color));
|
||||
Logger::dots("Texture : ", s.name, "[ DONE ]");
|
||||
}
|
||||
|
||||
Logger::info("Text textures created: " + std::to_string(strings1.size() + strings2.size()));
|
||||
}
|
||||
|
||||
// Crea los objetos de texto a partir de los archivos de textura y texto
|
||||
@@ -707,9 +702,6 @@ void Resource::createText() {
|
||||
white_texture_file(std::move(w_file)) {}
|
||||
};
|
||||
|
||||
Logger::cr();
|
||||
Logger::info("CREATING TEXT OBJECTS");
|
||||
|
||||
std::vector<ResourceInfo> resources = {
|
||||
{"04b_25", "04b_25.png", "04b_25.txt"},
|
||||
{"04b_25_enhanced", "04b_25.png", "04b_25.txt", "04b_25_white.png"}, // Nueva fuente con textura blanca
|
||||
@@ -735,8 +727,8 @@ void Resource::createText() {
|
||||
// Crear texto normal
|
||||
texts_.emplace_back(resource.key, std::make_shared<Text>(getTexture(resource.texture_file), getTextFile(resource.text_file)));
|
||||
}
|
||||
Logger::dots("Text : ", resource.key, "[ DONE ]");
|
||||
}
|
||||
Logger::info("Text objects created: " + std::to_string(resources.size()));
|
||||
}
|
||||
|
||||
// Vacía el vector de sonidos y libera la memoria asociada
|
||||
@@ -853,23 +845,6 @@ void Resource::renderProgress() {
|
||||
screen->coreRender();
|
||||
}
|
||||
|
||||
// Comprueba los eventos durante la carga (permite salir con ESC o cerrar ventana)
|
||||
void Resource::checkEvents() {
|
||||
SDL_Event event;
|
||||
while (SDL_PollEvent(&event)) {
|
||||
switch (event.type) {
|
||||
case SDL_EVENT_QUIT:
|
||||
exit(0);
|
||||
break;
|
||||
case SDL_EVENT_KEY_DOWN:
|
||||
if (event.key.key == SDLK_ESCAPE) {
|
||||
exit(0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga los datos para el modo demostración (sin mostrar progreso)
|
||||
void Resource::loadDemoDataQuiet() {
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "\n>> DEMO FILES (quiet load)");
|
||||
@@ -892,13 +867,12 @@ void Resource::initProgressBar() {
|
||||
loading_full_rect_ = {.x = X_PADDING, .y = BAR_Y_POSITION, .w = FULL_BAR_WIDTH, .h = BAR_HEIGHT};
|
||||
}
|
||||
|
||||
// Actualiza el progreso de carga, muestra la barra y procesa eventos
|
||||
// Actualiza el progreso de carga y muestra la barra
|
||||
void Resource::updateLoadingProgress(std::string name) {
|
||||
loading_resource_name_ = std::move(name);
|
||||
loading_count_.increase();
|
||||
updateProgressBar();
|
||||
renderProgress();
|
||||
checkEvents();
|
||||
}
|
||||
|
||||
// Actualiza la barra de estado
|
||||
|
||||
Reference in New Issue
Block a user