From 9b8fdf289f655d8ec6b34f727dc103d619577d02 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 21 Oct 2025 20:42:17 +0200 Subject: [PATCH] animacions noves per al jugador2, cada jugador te el seu fitxer d'animacions per separat --- config/assets.txt | 3 +- data/gfx/player/{player.ani => player1.ani} | 0 data/gfx/player/player2.ani | 135 ++++++++++++++++++++ data/gfx/player/player2.gif | Bin 16472 -> 16430 bytes source/sections/credits.cpp | 13 +- source/sections/game.cpp | 13 +- source/sections/game.hpp | 3 +- source/sections/title.cpp | 13 +- 8 files changed, 163 insertions(+), 17 deletions(-) rename data/gfx/player/{player.ani => player1.ani} (100%) create mode 100644 data/gfx/player/player2.ani diff --git a/config/assets.txt b/config/assets.txt index 804d95a..0f030e2 100644 --- a/config/assets.txt +++ b/config/assets.txt @@ -178,7 +178,8 @@ PALETTE|${PREFIX}/data/gfx/player/player2_invencible.pal # Animaciones del jugador ANIMATION|${PREFIX}/data/gfx/player/player_power.ani -ANIMATION|${PREFIX}/data/gfx/player/player.ani +ANIMATION|${PREFIX}/data/gfx/player/player1.ani +ANIMATION|${PREFIX}/data/gfx/player/player2.ani # Fuentes de texto BITMAP|${PREFIX}/data/font/04b_25_2x.png diff --git a/data/gfx/player/player.ani b/data/gfx/player/player1.ani similarity index 100% rename from data/gfx/player/player.ani rename to data/gfx/player/player1.ani diff --git a/data/gfx/player/player2.ani b/data/gfx/player/player2.ani new file mode 100644 index 0000000..c6aa522 --- /dev/null +++ b/data/gfx/player/player2.ani @@ -0,0 +1,135 @@ +frame_width=32 +frame_height=32 + +[animation] +name=walk +speed=0.0833 +loop=0 +frames=0,1,2,3 +[/animation] + +[animation] +name=stand +speed=0.167 +loop=0 +frames=4,5,6,7 +[/animation] + +[animation] +name=walk-fire-side +speed=0.0833 +loop=0 +frames=8,9,10,11 +[/animation] + +[animation] +name=walk-recoil-side +speed=0.0833 +loop=0 +frames=12,13,14,15 +[/animation] + +[animation] +name=walk-cool-side +speed=0.0833 +loop=0 +frames=16,17,18,19 +[/animation] + +[animation] +name=stand-fire-side +speed=0.0833 +loop=0 +frames=20 +[/animation] + +[animation] +name=stand-recoil-side +speed=0.0833 +loop=0 +frames=21 +[/animation] + +[animation] +name=stand-cool-side +speed=0.0833 +loop=0 +frames=22 +[/animation] + +[animation] +name=walk-fire-center +speed=0.0833 +loop=0 +frames=23,24,25,26 +[/animation] + +[animation] +name=walk-recoil-center +speed=0.0833 +loop=0 +frames=27,28,29,30 +[/animation] + +[animation] +name=walk-cool-center +speed=0.0833 +loop=0 +frames=31,32,33,34 +[/animation] + +[animation] +name=stand-fire-center +speed=0.0833 +loop=0 +frames=35 +[/animation] + +[animation] +name=stand-recoil-center +speed=0.0833 +loop=0 +frames=36 +[/animation] + +[animation] +name=stand-cool-center +speed=0.0833 +loop=0 +frames=37 +[/animation] + +[animation] +name=rolling +speed=0.167 +loop=0 +frames=38,39,40,41 +[/animation] + +[animation] +name=celebration +speed=0.167 +loop=0 +frames=47,47,47,47,47,47,48,49,50,51,51,51,51,51,51,50,50,50,51,51,51,50,50,50,49,48,47,47,47,42,42,42,43,44,45,46,45,46,45,46,45,46,45,46,45,46,45,44,43,42 +[/animation] + +[animation] +name=dizzy +speed=0.0833 +loop=0 +frames=52,53,54,55,56,57,58 +[/animation] + +[animation] +name=recover +speed=0.05 +loop=-1 +frames=59,59,59,59,60,61,62,63,63,63,64,65,66,63,64,65,66,63,64,65,66,67,67,67,67 +[/animation] + +[animation] +name=hello +speed=0.05 +loop=-1 +frames=68,69,70,71,72,73,74,75,76,77,78,78,78,78,78,78,78,78,78,78,78,78,78,79,80,81,82,83,84,85,86,87,87,86,85,84,84,85,86,87,87,86,85,84,84,85,86,87,87,86,85,84,84,85,86,87,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68 +[/animation] diff --git a/data/gfx/player/player2.gif b/data/gfx/player/player2.gif index ec9e556debd4da445ec38e6e47a5ef655ac1c448..beb5f0ea986ed3db5fa3f2730c68ec25469449ce 100644 GIT binary patch delta 7787 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 delta 7830 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 o`x=xF>> player_textures; // Vector con todas las texturas de los jugadores; - std::vector> player_animations; // Vector con las animaciones del jugador + std::vector> player1_animations; // Vector con las animaciones del jugador 1 + std::vector> player2_animations; // Vector con las animaciones del jugador 2 // Texturas - Player1 std::vector> player1_textures; @@ -375,8 +376,10 @@ void Credits::initPlayers() { player_textures.push_back(player2_textures); // Animaciones -- Jugador - player_animations.emplace_back(Resource::get()->getAnimation("player.ani")); - player_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player1_animations.emplace_back(Resource::get()->getAnimation("player1.ani")); + player1_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player2_animations.emplace_back(Resource::get()->getAnimation("player2.ani")); + player2_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); // Crea los dos jugadores const int Y = play_area_.y + play_area_.h - Player::WIDTH; @@ -390,7 +393,7 @@ void Credits::initPlayers() { config_player1.demo = DEMO; config_player1.play_area = &play_area_; config_player1.texture = player_textures.at(0); - config_player1.animations = player_animations; + config_player1.animations = player1_animations; config_player1.hi_score_table = &Options::settings.hi_score_table; config_player1.glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER1) - 1); players_.emplace_back(std::make_unique(config_player1)); @@ -404,7 +407,7 @@ void Credits::initPlayers() { config_player2.demo = DEMO; config_player2.play_area = &play_area_; config_player2.texture = player_textures.at(1); - config_player2.animations = player_animations; + config_player2.animations = player2_animations; config_player2.hi_score_table = &Options::settings.hi_score_table; config_player2.glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER2) - 1); players_.emplace_back(std::make_unique(config_player2)); diff --git a/source/sections/game.cpp b/source/sections/game.cpp index a50799e..8c7c8f9 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -204,9 +204,12 @@ void Game::setResources() { player_textures_.push_back(player2_textures); // Animaciones -- Jugador - player_animations_.clear(); - player_animations_.emplace_back(Resource::get()->getAnimation("player.ani")); - player_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player1_animations_.clear(); + player1_animations_.emplace_back(Resource::get()->getAnimation("player1.ani")); + player1_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player2_animations_.clear(); + player2_animations_.emplace_back(Resource::get()->getAnimation("player2.ani")); + player2_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani")); // Animaciones -- Items item_animations_.clear(); @@ -1613,7 +1616,7 @@ void Game::initPlayers(Player::Id player_id) { .demo = demo_.enabled, .play_area = ¶m.game.play_area.rect, .texture = player_textures_.at(0), - .animations = player_animations_, + .animations = player1_animations_, .hi_score_table = &Options::settings.hi_score_table, .glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER1) - 1), .stage_info = stage_manager_.get()}; @@ -1640,7 +1643,7 @@ void Game::initPlayers(Player::Id player_id) { .demo = demo_.enabled, .play_area = ¶m.game.play_area.rect, .texture = player_textures_.at(1), - .animations = player_animations_, + .animations = player2_animations_, .hi_score_table = &Options::settings.hi_score_table, .glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER2) - 1), .stage_info = stage_manager_.get()}; diff --git a/source/sections/game.hpp b/source/sections/game.hpp index 7a82485..d759727 100644 --- a/source/sections/game.hpp +++ b/source/sections/game.hpp @@ -134,7 +134,8 @@ class Game { std::vector> game_text_textures_; // Vector con las texturas para los sprites con textos std::vector> item_animations_; // Vector con las animaciones de los items - std::vector> player_animations_; // Vector con las animaciones del jugador + std::vector> player1_animations_; // Vector con las animaciones del jugador 1 + std::vector> player2_animations_; // Vector con las animaciones del jugador 2 std::unique_ptr pause_manager_; // Objeto para gestionar la pausa std::unique_ptr stage_manager_; // Objeto para gestionar las fases diff --git a/source/sections/title.cpp b/source/sections/title.cpp index 407c208..f102dfb 100644 --- a/source/sections/title.cpp +++ b/source/sections/title.cpp @@ -506,7 +506,8 @@ void Title::setState(State state) { // Inicializa los jugadores void Title::initPlayers() { std::vector>> player_textures; // Vector con todas las texturas de los jugadores; - std::vector> player_animations; // Vector con las animaciones del jugador + std::vector> player1_animations; // Vector con las animaciones del jugador 1 + std::vector> player2_animations; // Vector con las animaciones del jugador 2 // Texturas - Player1 std::vector> player1_textures; @@ -527,8 +528,10 @@ void Title::initPlayers() { player_textures.push_back(player2_textures); // Animaciones -- Jugador - player_animations.emplace_back(Resource::get()->getAnimation("player.ani")); - player_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player1_animations.emplace_back(Resource::get()->getAnimation("player1.ani")); + player1_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); + player2_animations.emplace_back(Resource::get()->getAnimation("player2.ani")); + player2_animations.emplace_back(Resource::get()->getAnimation("player_power.ani")); // Crea los dos jugadores const int Y = param.title.press_start_position - (Player::HEIGHT / 2); @@ -541,7 +544,7 @@ void Title::initPlayers() { config_player1.demo = DEMO; config_player1.play_area = ¶m.game.play_area.rect; config_player1.texture = player_textures.at(0); - config_player1.animations = player_animations; + config_player1.animations = player1_animations; config_player1.hi_score_table = &Options::settings.hi_score_table; config_player1.glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER1) - 1); players_.emplace_back(std::make_unique(config_player1)); @@ -554,7 +557,7 @@ void Title::initPlayers() { config_player2.demo = DEMO; config_player2.play_area = ¶m.game.play_area.rect; config_player2.texture = player_textures.at(1); - config_player2.animations = player_animations; + config_player2.animations = player2_animations; config_player2.hi_score_table = &Options::settings.hi_score_table; config_player2.glowing_entry = &Options::settings.glowing_entries.at(static_cast(Player::Id::PLAYER2) - 1); players_.emplace_back(std::make_unique(config_player2));