diff --git a/data/gfx/player_power.ani b/data/gfx/player_power.ani index cdf07d5..0377089 100644 --- a/data/gfx/player_power.ani +++ b/data/gfx/player_power.ani @@ -1,5 +1,5 @@ -frameWidth=35 -frameHeight=40 +frameWidth=39 +frameHeight=44 [animation] name=default diff --git a/data/gfx/player_power.gif b/data/gfx/player_power.gif new file mode 100644 index 0000000..53f84aa Binary files /dev/null and b/data/gfx/player_power.gif differ diff --git a/data/gfx/player_power_pal.gif b/data/gfx/player_power_pal.gif new file mode 100644 index 0000000..4f501f1 Binary files /dev/null and b/data/gfx/player_power_pal.gif differ diff --git a/source/director.cpp b/source/director.cpp index c22c50f..3902b07 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -389,9 +389,8 @@ bool Director::setFileList() asset->add(prefix + "/data/gfx/player.ani", t_animation); - asset->add(prefix + "/data/gfx/player1_power.gif", t_bitmap); - asset->add(prefix + "/data/gfx/player2_power.gif", t_bitmap); - + asset->add(prefix + "/data/gfx/player_power.gif", t_bitmap); + asset->add(prefix + "/data/gfx/player_power_pal.gif", t_palette); asset->add(prefix + "/data/gfx/player_power.ani", t_animation); // Fuentes de texto diff --git a/source/game.cpp b/source/game.cpp index 2c69b7f..206b761 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -388,7 +388,8 @@ void Game::loadMedia() player1->addPalette(asset->get("player1_pal3.gif")); player1Textures.push_back(player1); - Texture *player1Power = new Texture(renderer, asset->get("player1_power.gif")); + Texture *player1Power = new Texture(renderer, asset->get("player_power.gif")); + player1Power->addPalette(asset->get("player_power_pal.gif")); player1Textures.push_back(player1Power); playerTextures.push_back(player1Textures); @@ -400,7 +401,9 @@ void Game::loadMedia() player2->addPalette(asset->get("player2_pal3.gif")); player2Textures.push_back(player2); - Texture *player2Power = new Texture(renderer, asset->get("player2_power.gif")); + Texture *player2Power = new Texture(renderer, asset->get("player_power.gif")); + player2Power->addPalette(asset->get("player_power_pal.gif")); + player2Power->setPalette(1); player2Textures.push_back(player2Power); playerTextures.push_back(player2Textures); @@ -963,6 +966,11 @@ void Game::renderPlayers() if (player->isEnabled()) { player->render(); +#ifdef DEBUG + //SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + //const circle_t c = player->getCollider(); + //DrawCircle(renderer, c.x, c.y, c.r); +#endif } } } diff --git a/source/player.cpp b/source/player.cpp index 043b2d3..3d175fb 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -13,6 +13,10 @@ Player::Player(float x, int y, std::vector texture, std::vectorgetWidth() - playerSprite->getWidth()) / 2; + powerSprite->setPosY(y - (powerSprite->getHeight() - playerSprite->getHeight())); + // Inicializa variables enabled = false; init(); @@ -129,8 +133,7 @@ void Player::move() playerSprite->setPosX(getPosX()); playerSprite->setPosY(posY); - powerSprite->setPosX(getPosX() - 2); - powerSprite->setPosY(posY - 10); + powerSprite->setPosX(getPosX() - powerUpDespX); } else { @@ -154,13 +157,13 @@ void Player::render() { if (powerUp && alive) { - powerSprite->render(); + if (powerUpCounter > (PLAYER_POWERUP_COUNTER / 4) || powerUpCounter % 20 > 4) + { + powerSprite->render(); + } } playerSprite->render(); - - //SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); - //DrawCircle(renderer, collider.x, collider.y, collider.r); } // Establece el estado del jugador cuando camina @@ -215,7 +218,7 @@ void Player::setAnimation() // Actualiza las animaciones de los sprites playerSprite->animate(); - powerSprite->setFlip(flipWalk); + // powerSprite->setFlip(flipWalk); powerSprite->animate(); } diff --git a/source/player.h b/source/player.h index 93c2230..6a2a6ba 100644 --- a/source/player.h +++ b/source/player.h @@ -57,6 +57,7 @@ private: int coffees; // Indica cuantos cafes lleva acumulados bool powerUp; // Indica si el jugador tiene activo el modo PowerUp int powerUpCounter; // Temporizador para el modo PowerUp + int powerUpDespX; // Desplazamiento del sprite de PowerUp respecto al sprite del jugador bool input; // Indica si puede recibir ordenes de entrada circle_t collider; // Circulo de colisión del jugador bool alive; // Indica si el jugador está vivo @@ -68,7 +69,6 @@ private: // Monitoriza el estado void updateInvulnerable(); - public: // Constructor Player(float x, int y, std::vector texture, std::vector *> animations);