migrat Assets a la ultima versió (fitxers no hardcoded)

This commit is contained in:
2025-10-31 12:52:22 +01:00
parent 2f20ac422e
commit 70bfced50d
7 changed files with 804 additions and 396 deletions

View File

@@ -43,7 +43,7 @@ Director::Director(std::vector<std::string> const& args) {
Options::init();
// Comprueba los parametros del programa
executable_path_ = checkProgramArguments(args);
executable_path_ = getPath(checkProgramArguments(args));
// Crea el objeto que controla los ficheros de recursos
Asset::init(executable_path_);
@@ -239,235 +239,20 @@ void Director::initInput() {
// Crea el indice de ficheros
auto Director::setFileList() -> bool {
// Determinar el prefijo de ruta según la plataforma
#ifdef MACOS_BUNDLE
const std::string prefix = "/../Resources";
const std::string PREFIX = "/../Resources";
#else
const std::string PREFIX;
#endif
// Texto
Asset::get()->add(PREFIX + "/data/font/smb2.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/font/smb2.txt", AssetType::FONT);
Asset::get()->add(PREFIX + "/data/font/debug.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/font/debug.txt", AssetType::FONT);
Asset::get()->add(PREFIX + "/data/font/gauntlet.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/font/gauntlet.txt", AssetType::FONT);
Asset::get()->add(PREFIX + "/data/font/subatomic.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/font/subatomic.txt", AssetType::FONT);
Asset::get()->add(PREFIX + "/data/font/8bithud.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/font/8bithud.txt", AssetType::FONT);
// Construir ruta al archivo de configuración de assets
std::string config_path = executable_path_ + PREFIX + "/config/assets.txt";
// Paletas
Asset::get()->add(PREFIX + "/data/palette/zx-spectrum.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/zx-spectrum-adjusted.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/zxarne-5-2.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/black-and-white.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/green-phosphor.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/orange-screen.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/ruzx-spectrum.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/ruzx-spectrum-revision-2.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/pico-8.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/sweetie-16.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/island-joy-16.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/lost-century.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/na16.pal", AssetType::PALETTE);
Asset::get()->add(PREFIX + "/data/palette/steam-lords.pal", AssetType::PALETTE);
// Shaders
Asset::get()->add(PREFIX + "/data/shaders/crtpi_vertex.glsl", AssetType::DATA);
Asset::get()->add(PREFIX + "/data/shaders/crtpi_fragment.glsl", AssetType::DATA);
Asset::get()->add(PREFIX + "/data/shaders/crtpi_vertex_es.glsl", AssetType::DATA);
Asset::get()->add(PREFIX + "/data/shaders/crtpi_fragment_es.glsl", AssetType::DATA);
// Datos
Asset::get()->add(PREFIX + "/data/input/gamecontrollerdb.txt", AssetType::DATA);
// Ficheros de sistema
Asset::get()->add(system_folder_ + "/config.txt", AssetType::DATA, false, true);
Asset::get()->add(system_folder_ + "/stats_buffer.csv", AssetType::DATA, false, true);
Asset::get()->add(system_folder_ + "/stats.csv", AssetType::DATA, false, true);
Asset::get()->add(system_folder_ + "/cheevos.bin", AssetType::DATA, false, true);
// Tilemaps y Rooms
for (int i = 1; i <= 60; ++i) {
std::string index = (i < 10 ? "0" : "") + std::to_string(i);
Asset::get()->add(PREFIX + "/data/room/" + index + ".tmx", AssetType::TILEMAP);
Asset::get()->add(PREFIX + "/data/room/" + index + ".room", AssetType::ROOM);
}
// Tilesets
Asset::get()->add(PREFIX + "/data/tilesets/standard.gif", AssetType::BITMAP);
// Enemigos
Asset::get()->add(PREFIX + "/data/enemies/abad_bell.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/abad_bell.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/abad.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/abad.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/amstrad_cs.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/amstrad_cs.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/flying_arounder.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/flying_arounder.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/stopped_arounder.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/stopped_arounder.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/walking_arounder.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/walking_arounder.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/arounders_door.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/arounders_door.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/arounders_machine.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/arounders_machine.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/bat.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/bat.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/batman_bell.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/batman_bell.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/batman_fire.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/batman_fire.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/batman.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/batman.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/bell.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/bell.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/bin.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/bin.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/bird.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/bird.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/breakout.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/breakout.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/bry.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/bry.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/chip.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/chip.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/code.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/code.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/congo.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/congo.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/crosshair.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/crosshair.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/demon.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/demon.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/dimallas.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/dimallas.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/floppy.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/floppy.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/dong.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/dong.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/guitar.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/guitar.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/heavy.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/heavy.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#1.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#1.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#2.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#2.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#3.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jailer_#3.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jailbattle_alien.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jailbattle_alien.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jailbattle_human.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jailbattle_human.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/jeannine.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/jeannine.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/lamp.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/lamp.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/lord_abad.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/lord_abad.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/matatunos.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/matatunos.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/mummy.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/mummy.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/paco.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/paco.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/elsa.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/elsa.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/qvoid.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/qvoid.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/robot.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/robot.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/sam.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/sam.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/shock.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/shock.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/sigmasua.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/sigmasua.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/spark.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/spark.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/special/aerojailer.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/special/aerojailer.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/special/arounder.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/special/arounder.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/special/pepe_rosita_job.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/special/pepe_rosita_job.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/special/shooting_star.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/special/shooting_star.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/spider.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/spider.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/tree_thing.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/tree_thing.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/tuno.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/tuno.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/tv_panel.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/tv_panel.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/tv.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/tv.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/upv_student.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/upv_student.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/wave.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/wave.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/enemies/z80.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/enemies/z80.gif", AssetType::BITMAP);
// Jugador
Asset::get()->add(PREFIX + "/data/player/player.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/player/player.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/player/player2.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/player/player2.ani", AssetType::ANIMATION);
Asset::get()->add(PREFIX + "/data/player/player_game_over.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/player/player_game_over.ani", AssetType::ANIMATION);
// Items
Asset::get()->add(PREFIX + "/data/items/items.gif", AssetType::BITMAP);
// Musicas
Asset::get()->add(PREFIX + "/data/music/title.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/game.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/loading_sound1.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/loading_sound2.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/loading_sound3.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/ending1.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/ending2.ogg", AssetType::MUSIC);
Asset::get()->add(PREFIX + "/data/music/game_over.ogg", AssetType::MUSIC);
// Efectos de sonido
Asset::get()->add(PREFIX + "/data/sound/item.wav", AssetType::SOUND);
Asset::get()->add(PREFIX + "/data/sound/death.wav", AssetType::SOUND);
Asset::get()->add(PREFIX + "/data/sound/notify.wav", AssetType::SOUND);
// Efectos de sonido para el salto
for (int i = 1; i <= 24; ++i) {
std::string jump_index = std::to_string(i);
Asset::get()->add(PREFIX + "/data/sound/jump" + jump_index + ".wav", AssetType::SOUND);
}
// Logo
Asset::get()->add(PREFIX + "/data/logo/jailgames.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/logo/since_1998.gif", AssetType::BITMAP);
// Loading
Asset::get()->add(PREFIX + "/data/loading/loading_screen_bn.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/loading/loading_screen_color.gif", AssetType::BITMAP);
// Title
Asset::get()->add(PREFIX + "/data/title/title_logo.gif", AssetType::BITMAP);
// Ending
Asset::get()->add(PREFIX + "/data/ending/ending1.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/ending/ending2.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/ending/ending3.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/ending/ending4.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/ending/ending5.gif", AssetType::BITMAP);
// Credits
Asset::get()->add(PREFIX + "/data/credits/shine.gif", AssetType::BITMAP);
Asset::get()->add(PREFIX + "/data/credits/shine.ani", AssetType::ANIMATION);
// Cargar todos los assets desde el archivo de configuración
Asset::get()->loadFromFile(config_path, PREFIX, system_folder_);
// Verificar que todos los assets requeridos existen
return Asset::get()->check();
}