diff --git a/.gitignore b/.gitignore index ed7be47..3cfbfbc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,7 @@ cppcheck-result* desktop.ini ccae_release/ resources.pack -tools/pack_resources.cpp -pack_resources.cpp + +# Herramienta pack_resources (todas las plataformas) +tools/pack_resources +tools/pack_resources.exe diff --git a/Makefile b/Makefile index 85433b9..7facf3c 100644 --- a/Makefile +++ b/Makefile @@ -180,7 +180,9 @@ windows_debug: @echo Compilando version debug para Windows: "$(APP_NAME)_debug.exe" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(WIN_TARGET_FILE)_debug.exe" -windows_release: resources.pack +windows_release: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo off @echo Creando release para Windows - Version: $(VERSION) @@ -218,7 +220,9 @@ macos_debug: @echo "Compilando version debug para macOS: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -macos_release: resources.pack +macos_release: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo "Creando release para macOS - Version: $(VERSION)" # Elimina datos de compilaciones anteriores $(RMDIR) "$(RELEASE_FOLDER)" @@ -285,7 +289,9 @@ linux_debug: @echo "Compilando version debug para Linux: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -linux_release: resources.pack +linux_release: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo "Creando release para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -311,7 +317,9 @@ linux_release: resources.pack # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -linux_release_desktop: resources.pack +linux_release_desktop: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo "Creando release con integracion desktop para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -416,7 +424,9 @@ raspi_debug: @echo "Compilando version debug para Raspberry Pi: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE -DDEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -raspi_release: resources.pack +raspi_release: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo "Creando release para Raspberry Pi - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -442,7 +452,9 @@ raspi_release: resources.pack # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -anbernic: resources.pack +anbernic: + @$(MAKE) pack_tool + @$(MAKE) resources.pack @echo "Compilando para Anbernic: $(TARGET_NAME)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)"_anbernic diff --git a/config/assets.txt b/config/assets.txt index 0f030e2..af7197e 100644 --- a/config/assets.txt +++ b/config/assets.txt @@ -18,191 +18,191 @@ DATA|${PREFIX}/config/pools.txt DATA|${PREFIX}/config/stages.txt # Archivos con los datos de la demo -DEMODATA|${PREFIX}/data/demo/demo1.bin -DEMODATA|${PREFIX}/data/demo/demo2.bin -DEMODATA|${PREFIX}/data/demo/demo3.bin +DEMODATA|/data/demo/demo1.bin +DEMODATA|/data/demo/demo2.bin +DEMODATA|/data/demo/demo3.bin # Música -MUSIC|${PREFIX}/data/music/congratulations.ogg -MUSIC|${PREFIX}/data/music/credits.ogg -MUSIC|${PREFIX}/data/music/intro.ogg -MUSIC|${PREFIX}/data/music/playing.ogg -MUSIC|${PREFIX}/data/music/title.ogg +MUSIC|/data/music/congratulations.ogg +MUSIC|/data/music/credits.ogg +MUSIC|/data/music/intro.ogg +MUSIC|/data/music/playing.ogg +MUSIC|/data/music/title.ogg # Sonidos -SOUND|${PREFIX}/data/sound/balloon_bounce0.wav -SOUND|${PREFIX}/data/sound/balloon_bounce1.wav -SOUND|${PREFIX}/data/sound/balloon_bounce2.wav -SOUND|${PREFIX}/data/sound/balloon_bounce3.wav -SOUND|${PREFIX}/data/sound/balloon_pop0.wav -SOUND|${PREFIX}/data/sound/balloon_pop1.wav -SOUND|${PREFIX}/data/sound/balloon_pop2.wav -SOUND|${PREFIX}/data/sound/balloon_pop3.wav -SOUND|${PREFIX}/data/sound/bullet1p.wav -SOUND|${PREFIX}/data/sound/bullet2p.wav -SOUND|${PREFIX}/data/sound/clock.wav -SOUND|${PREFIX}/data/sound/coffee_out.wav -SOUND|${PREFIX}/data/sound/continue_clock.wav -SOUND|${PREFIX}/data/sound/credit.wav -SOUND|${PREFIX}/data/sound/debian_drop.wav -SOUND|${PREFIX}/data/sound/debian_pickup.wav -SOUND|${PREFIX}/data/sound/hi_score_achieved.wav -SOUND|${PREFIX}/data/sound/item_drop.wav -SOUND|${PREFIX}/data/sound/item_pickup.wav -SOUND|${PREFIX}/data/sound/jump.wav -SOUND|${PREFIX}/data/sound/logo.wav -SOUND|${PREFIX}/data/sound/name_input_accept.wav -SOUND|${PREFIX}/data/sound/notify.wav -SOUND|${PREFIX}/data/sound/player_collision.wav -SOUND|${PREFIX}/data/sound/power_ball_explosion.wav -SOUND|${PREFIX}/data/sound/service_menu_adjust.wav -SOUND|${PREFIX}/data/sound/service_menu_back.wav -SOUND|${PREFIX}/data/sound/service_menu_move.wav -SOUND|${PREFIX}/data/sound/service_menu_select.wav -SOUND|${PREFIX}/data/sound/stage_change.wav -SOUND|${PREFIX}/data/sound/tabe_hit.wav -SOUND|${PREFIX}/data/sound/tabe.wav -SOUND|${PREFIX}/data/sound/title.wav -SOUND|${PREFIX}/data/sound/voice_aw_aw_aw.wav -SOUND|${PREFIX}/data/sound/voice_coffee.wav -SOUND|${PREFIX}/data/sound/voice_credit_thankyou.wav -SOUND|${PREFIX}/data/sound/voice_game_over.wav -SOUND|${PREFIX}/data/sound/voice_get_ready.wav -SOUND|${PREFIX}/data/sound/voice_no.wav -SOUND|${PREFIX}/data/sound/voice_power_up.wav -SOUND|${PREFIX}/data/sound/voice_recover.wav -SOUND|${PREFIX}/data/sound/voice_thankyou.wav -SOUND|${PREFIX}/data/sound/walk.wav +SOUND|/data/sound/balloon_bounce0.wav +SOUND|/data/sound/balloon_bounce1.wav +SOUND|/data/sound/balloon_bounce2.wav +SOUND|/data/sound/balloon_bounce3.wav +SOUND|/data/sound/balloon_pop0.wav +SOUND|/data/sound/balloon_pop1.wav +SOUND|/data/sound/balloon_pop2.wav +SOUND|/data/sound/balloon_pop3.wav +SOUND|/data/sound/bullet1p.wav +SOUND|/data/sound/bullet2p.wav +SOUND|/data/sound/clock.wav +SOUND|/data/sound/coffee_out.wav +SOUND|/data/sound/continue_clock.wav +SOUND|/data/sound/credit.wav +SOUND|/data/sound/debian_drop.wav +SOUND|/data/sound/debian_pickup.wav +SOUND|/data/sound/hi_score_achieved.wav +SOUND|/data/sound/item_drop.wav +SOUND|/data/sound/item_pickup.wav +SOUND|/data/sound/jump.wav +SOUND|/data/sound/logo.wav +SOUND|/data/sound/name_input_accept.wav +SOUND|/data/sound/notify.wav +SOUND|/data/sound/player_collision.wav +SOUND|/data/sound/power_ball_explosion.wav +SOUND|/data/sound/service_menu_adjust.wav +SOUND|/data/sound/service_menu_back.wav +SOUND|/data/sound/service_menu_move.wav +SOUND|/data/sound/service_menu_select.wav +SOUND|/data/sound/stage_change.wav +SOUND|/data/sound/tabe_hit.wav +SOUND|/data/sound/tabe.wav +SOUND|/data/sound/title.wav +SOUND|/data/sound/voice_aw_aw_aw.wav +SOUND|/data/sound/voice_coffee.wav +SOUND|/data/sound/voice_credit_thankyou.wav +SOUND|/data/sound/voice_game_over.wav +SOUND|/data/sound/voice_get_ready.wav +SOUND|/data/sound/voice_no.wav +SOUND|/data/sound/voice_power_up.wav +SOUND|/data/sound/voice_recover.wav +SOUND|/data/sound/voice_thankyou.wav +SOUND|/data/sound/walk.wav # Shaders OpenGL Desktop 3.3 (Windows/Linux) -DATA|${PREFIX}/data/shaders/crtpi_vertex.glsl -DATA|${PREFIX}/data/shaders/crtpi_fragment.glsl +DATA|/data/shaders/crtpi_vertex.glsl +DATA|/data/shaders/crtpi_fragment.glsl # Shaders OpenGL ES 3.0 (Raspberry Pi) - opcionales -DATA|${PREFIX}/data/shaders/crtpi_vertex_es.glsl|optional -DATA|${PREFIX}/data/shaders/crtpi_fragment_es.glsl|optional +DATA|/data/shaders/crtpi_vertex_es.glsl|optional +DATA|/data/shaders/crtpi_fragment_es.glsl|optional # Texturas - Balloons -ANIMATION|${PREFIX}/data/gfx/balloon/balloon0.ani -ANIMATION|${PREFIX}/data/gfx/balloon/balloon1.ani -ANIMATION|${PREFIX}/data/gfx/balloon/balloon2.ani -ANIMATION|${PREFIX}/data/gfx/balloon/balloon3.ani -BITMAP|${PREFIX}/data/gfx/balloon/balloon0.png -BITMAP|${PREFIX}/data/gfx/balloon/balloon1.png -BITMAP|${PREFIX}/data/gfx/balloon/balloon2.png -BITMAP|${PREFIX}/data/gfx/balloon/balloon3.png +ANIMATION|/data/gfx/balloon/balloon0.ani +ANIMATION|/data/gfx/balloon/balloon1.ani +ANIMATION|/data/gfx/balloon/balloon2.ani +ANIMATION|/data/gfx/balloon/balloon3.ani +BITMAP|/data/gfx/balloon/balloon0.png +BITMAP|/data/gfx/balloon/balloon1.png +BITMAP|/data/gfx/balloon/balloon2.png +BITMAP|/data/gfx/balloon/balloon3.png # Texturas - Explosiones -ANIMATION|${PREFIX}/data/gfx/balloon/explosion0.ani -ANIMATION|${PREFIX}/data/gfx/balloon/explosion1.ani -ANIMATION|${PREFIX}/data/gfx/balloon/explosion2.ani -ANIMATION|${PREFIX}/data/gfx/balloon/explosion3.ani -BITMAP|${PREFIX}/data/gfx/balloon/explosion0.png -BITMAP|${PREFIX}/data/gfx/balloon/explosion1.png -BITMAP|${PREFIX}/data/gfx/balloon/explosion2.png -BITMAP|${PREFIX}/data/gfx/balloon/explosion3.png +ANIMATION|/data/gfx/balloon/explosion0.ani +ANIMATION|/data/gfx/balloon/explosion1.ani +ANIMATION|/data/gfx/balloon/explosion2.ani +ANIMATION|/data/gfx/balloon/explosion3.ani +BITMAP|/data/gfx/balloon/explosion0.png +BITMAP|/data/gfx/balloon/explosion1.png +BITMAP|/data/gfx/balloon/explosion2.png +BITMAP|/data/gfx/balloon/explosion3.png # Texturas - Power Ball -ANIMATION|${PREFIX}/data/gfx/balloon/powerball.ani -BITMAP|${PREFIX}/data/gfx/balloon/powerball.png +ANIMATION|/data/gfx/balloon/powerball.ani +BITMAP|/data/gfx/balloon/powerball.png # Texturas - Bala -ANIMATION|${PREFIX}/data/gfx/bullet/bullet.ani -BITMAP|${PREFIX}/data/gfx/bullet/bullet.png +ANIMATION|/data/gfx/bullet/bullet.ani +BITMAP|/data/gfx/bullet/bullet.png # Texturas - Tabe -ANIMATION|${PREFIX}/data/gfx/tabe/tabe.ani -BITMAP|${PREFIX}/data/gfx/tabe/tabe.png +ANIMATION|/data/gfx/tabe/tabe.ani +BITMAP|/data/gfx/tabe/tabe.png # Texturas - Juego -BITMAP|${PREFIX}/data/gfx/game/game_buildings.png -BITMAP|${PREFIX}/data/gfx/game/game_clouds1.png -BITMAP|${PREFIX}/data/gfx/game/game_clouds2.png -ANIMATION|${PREFIX}/data/gfx/game/game_grass.ani -BITMAP|${PREFIX}/data/gfx/game/game_grass.png -BITMAP|${PREFIX}/data/gfx/game/game_moon.png -BITMAP|${PREFIX}/data/gfx/game/game_power_meter.png -BITMAP|${PREFIX}/data/gfx/game/game_sky_colors.png -BITMAP|${PREFIX}/data/gfx/game/game_sun.png +BITMAP|/data/gfx/game/game_buildings.png +BITMAP|/data/gfx/game/game_clouds1.png +BITMAP|/data/gfx/game/game_clouds2.png +ANIMATION|/data/gfx/game/game_grass.ani +BITMAP|/data/gfx/game/game_grass.png +BITMAP|/data/gfx/game/game_moon.png +BITMAP|/data/gfx/game/game_power_meter.png +BITMAP|/data/gfx/game/game_sky_colors.png +BITMAP|/data/gfx/game/game_sun.png # Texturas - Intro -BITMAP|${PREFIX}/data/gfx/intro/intro1.png -BITMAP|${PREFIX}/data/gfx/intro/intro2.png -BITMAP|${PREFIX}/data/gfx/intro/intro3.png -BITMAP|${PREFIX}/data/gfx/intro/intro4.png -BITMAP|${PREFIX}/data/gfx/intro/intro5.png -BITMAP|${PREFIX}/data/gfx/intro/intro6.png +BITMAP|/data/gfx/intro/intro1.png +BITMAP|/data/gfx/intro/intro2.png +BITMAP|/data/gfx/intro/intro3.png +BITMAP|/data/gfx/intro/intro4.png +BITMAP|/data/gfx/intro/intro5.png +BITMAP|/data/gfx/intro/intro6.png # Texturas - Logo -BITMAP|${PREFIX}/data/gfx/logo/logo_jailgames_mini.png -BITMAP|${PREFIX}/data/gfx/logo/logo_jailgames.png -BITMAP|${PREFIX}/data/gfx/logo/logo_since_1998.png +BITMAP|/data/gfx/logo/logo_jailgames_mini.png +BITMAP|/data/gfx/logo/logo_jailgames.png +BITMAP|/data/gfx/logo/logo_since_1998.png # Texturas - Items -ANIMATION|${PREFIX}/data/gfx/item/item_clock.ani -ANIMATION|${PREFIX}/data/gfx/item/item_coffee_machine.ani -ANIMATION|${PREFIX}/data/gfx/item/item_coffee.ani -ANIMATION|${PREFIX}/data/gfx/item/item_debian.ani -ANIMATION|${PREFIX}/data/gfx/item/item_points1_disk.ani -ANIMATION|${PREFIX}/data/gfx/item/item_points2_gavina.ani -ANIMATION|${PREFIX}/data/gfx/item/item_points3_pacmar.ani -BITMAP|${PREFIX}/data/gfx/item/item_clock.png -BITMAP|${PREFIX}/data/gfx/item/item_coffee_machine.png -BITMAP|${PREFIX}/data/gfx/item/item_coffee.png -BITMAP|${PREFIX}/data/gfx/item/item_debian.png -BITMAP|${PREFIX}/data/gfx/item/item_points1_disk.png -BITMAP|${PREFIX}/data/gfx/item/item_points2_gavina.png -BITMAP|${PREFIX}/data/gfx/item/item_points3_pacmar.png +ANIMATION|/data/gfx/item/item_clock.ani +ANIMATION|/data/gfx/item/item_coffee_machine.ani +ANIMATION|/data/gfx/item/item_coffee.ani +ANIMATION|/data/gfx/item/item_debian.ani +ANIMATION|/data/gfx/item/item_points1_disk.ani +ANIMATION|/data/gfx/item/item_points2_gavina.ani +ANIMATION|/data/gfx/item/item_points3_pacmar.ani +BITMAP|/data/gfx/item/item_clock.png +BITMAP|/data/gfx/item/item_coffee_machine.png +BITMAP|/data/gfx/item/item_coffee.png +BITMAP|/data/gfx/item/item_debian.png +BITMAP|/data/gfx/item/item_points1_disk.png +BITMAP|/data/gfx/item/item_points2_gavina.png +BITMAP|/data/gfx/item/item_points3_pacmar.png # Texturas - Titulo -ANIMATION|${PREFIX}/data/gfx/title/title_dust.ani -BITMAP|${PREFIX}/data/gfx/title/title_arcade_edition.png -BITMAP|${PREFIX}/data/gfx/title/title_bg_tile.png -BITMAP|${PREFIX}/data/gfx/title/title_coffee.png -BITMAP|${PREFIX}/data/gfx/title/title_crisis.png -BITMAP|${PREFIX}/data/gfx/title/title_dust.png +ANIMATION|/data/gfx/title/title_dust.ani +BITMAP|/data/gfx/title/title_arcade_edition.png +BITMAP|/data/gfx/title/title_bg_tile.png +BITMAP|/data/gfx/title/title_coffee.png +BITMAP|/data/gfx/title/title_crisis.png +BITMAP|/data/gfx/title/title_dust.png # Texturas - Jugador 1 -BITMAP|${PREFIX}/data/gfx/player/player1_power.png -BITMAP|${PREFIX}/data/gfx/player/player1.gif -PALETTE|${PREFIX}/data/gfx/player/player1_coffee1.pal -PALETTE|${PREFIX}/data/gfx/player/player1_coffee2.pal -PALETTE|${PREFIX}/data/gfx/player/player1_invencible.pal +BITMAP|/data/gfx/player/player1_power.png +BITMAP|/data/gfx/player/player1.gif +PALETTE|/data/gfx/player/player1_coffee1.pal +PALETTE|/data/gfx/player/player1_coffee2.pal +PALETTE|/data/gfx/player/player1_invencible.pal # Texturas - Jugador 2 -BITMAP|${PREFIX}/data/gfx/player/player2_power.png -BITMAP|${PREFIX}/data/gfx/player/player2.gif -PALETTE|${PREFIX}/data/gfx/player/player2_coffee1.pal -PALETTE|${PREFIX}/data/gfx/player/player2_coffee2.pal -PALETTE|${PREFIX}/data/gfx/player/player2_invencible.pal +BITMAP|/data/gfx/player/player2_power.png +BITMAP|/data/gfx/player/player2.gif +PALETTE|/data/gfx/player/player2_coffee1.pal +PALETTE|/data/gfx/player/player2_coffee2.pal +PALETTE|/data/gfx/player/player2_invencible.pal # Animaciones del jugador -ANIMATION|${PREFIX}/data/gfx/player/player_power.ani -ANIMATION|${PREFIX}/data/gfx/player/player1.ani -ANIMATION|${PREFIX}/data/gfx/player/player2.ani +ANIMATION|/data/gfx/player/player_power.ani +ANIMATION|/data/gfx/player/player1.ani +ANIMATION|/data/gfx/player/player2.ani # Fuentes de texto -BITMAP|${PREFIX}/data/font/04b_25_2x.png -BITMAP|${PREFIX}/data/font/04b_25_2x_white.png -BITMAP|${PREFIX}/data/font/04b_25_flat_2x.png -BITMAP|${PREFIX}/data/font/04b_25_flat.png -BITMAP|${PREFIX}/data/font/04b_25_grey.png -BITMAP|${PREFIX}/data/font/04b_25_metal.png -BITMAP|${PREFIX}/data/font/04b_25_reversed_2x.png -BITMAP|${PREFIX}/data/font/04b_25_reversed.png -BITMAP|${PREFIX}/data/font/04b_25_white.png -BITMAP|${PREFIX}/data/font/04b_25.png -BITMAP|${PREFIX}/data/font/8bithud.png -BITMAP|${PREFIX}/data/font/aseprite.png -BITMAP|${PREFIX}/data/font/smb2_grad.png -BITMAP|${PREFIX}/data/font/smb2.png -FONT|${PREFIX}/data/font/04b_25_2x.txt -FONT|${PREFIX}/data/font/04b_25.txt -FONT|${PREFIX}/data/font/8bithud.txt -FONT|${PREFIX}/data/font/aseprite.txt -FONT|${PREFIX}/data/font/smb2.txt +BITMAP|/data/font/04b_25_2x.png +BITMAP|/data/font/04b_25_2x_white.png +BITMAP|/data/font/04b_25_flat_2x.png +BITMAP|/data/font/04b_25_flat.png +BITMAP|/data/font/04b_25_grey.png +BITMAP|/data/font/04b_25_metal.png +BITMAP|/data/font/04b_25_reversed_2x.png +BITMAP|/data/font/04b_25_reversed.png +BITMAP|/data/font/04b_25_white.png +BITMAP|/data/font/04b_25.png +BITMAP|/data/font/8bithud.png +BITMAP|/data/font/aseprite.png +BITMAP|/data/font/smb2_grad.png +BITMAP|/data/font/smb2.png +FONT|/data/font/04b_25_2x.txt +FONT|/data/font/04b_25.txt +FONT|/data/font/8bithud.txt +FONT|/data/font/aseprite.txt +FONT|/data/font/smb2.txt # Idiomas -LANG|${PREFIX}/data/lang/ba_BA.json -LANG|${PREFIX}/data/lang/en_UK.json -LANG|${PREFIX}/data/lang/es_ES.json \ No newline at end of file +LANG|/data/lang/ba_BA.json +LANG|/data/lang/en_UK.json +LANG|/data/lang/es_ES.json \ No newline at end of file diff --git a/source/asset.cpp b/source/asset.cpp index 228d88b..81b4dd4 100644 --- a/source/asset.cpp +++ b/source/asset.cpp @@ -197,8 +197,12 @@ auto Asset::check() const -> bool { // Comprueba que existe un fichero auto Asset::checkFile(const std::string& path) const -> bool { - // Construir ruta del pack usando executable_path_ + // Construir ruta del pack usando executable_path_ (misma lógica que Director::init) +#ifdef MACOS_BUNDLE + std::string pack_path = executable_path_ + "../Resources/resources.pack"; +#else std::string pack_path = executable_path_ + "resources.pack"; +#endif bool pack_exists = std::filesystem::exists(pack_path); if (pack_exists) { diff --git a/tools/pack_resources b/tools/pack_resources deleted file mode 100755 index 46e9685..0000000 Binary files a/tools/pack_resources and /dev/null differ