diff --git a/data/gfx/balloon1.ani b/data/gfx/balloon1.ani index 154a029..3fbe8c1 100644 --- a/data/gfx/balloon1.ani +++ b/data/gfx/balloon1.ani @@ -33,5 +33,5 @@ frames=36,37,38,39,40,41,42,43,44,45 name=pop speed=5 loop=-1 -frames=60,61,62,63,64,65,66,67,68,69,70,71 +frames=48,49,50,51,52,53,54,55,56,57,58,59 [/animation] \ No newline at end of file diff --git a/data/gfx/balloon1.png b/data/gfx/balloon1.png index d9d769e..8487e7f 100644 Binary files a/data/gfx/balloon1.png and b/data/gfx/balloon1.png differ diff --git a/data/gfx/balloon2.ani b/data/gfx/balloon2.ani index 93862ad..bbc4d86 100644 --- a/data/gfx/balloon2.ani +++ b/data/gfx/balloon2.ani @@ -33,5 +33,5 @@ frames=36,37,38,39,40,41,42,43,44,45 name=pop speed=5 loop=-1 -frames=60,61,62,63,64,65,66,67,68,69,70,71 +frames=48,49,50,51,52,53,54,55,56,57,58,59 [/animation] \ No newline at end of file diff --git a/data/gfx/balloon2.png b/data/gfx/balloon2.png index b4d3e3b..efca82c 100644 Binary files a/data/gfx/balloon2.png and b/data/gfx/balloon2.png differ diff --git a/data/gfx/balloon3.ani b/data/gfx/balloon3.ani index a791602..e1fd440 100644 --- a/data/gfx/balloon3.ani +++ b/data/gfx/balloon3.ani @@ -33,5 +33,5 @@ frames=36,37,38,39,40,41,42,43,44,45 name=pop speed=5 loop=-1 -frames=60,61,62,63,64,65,66,67,68,69,70,71 +frames=48,49,50,51,52,53,54,55,56,57,58,59 [/animation] \ No newline at end of file diff --git a/data/gfx/balloon3.png b/data/gfx/balloon3.png index 4bd9067..82991dd 100644 Binary files a/data/gfx/balloon3.png and b/data/gfx/balloon3.png differ diff --git a/data/gfx/balloon4.ani b/data/gfx/balloon4.ani index abd9c7a..db7e703 100644 --- a/data/gfx/balloon4.ani +++ b/data/gfx/balloon4.ani @@ -33,12 +33,12 @@ frames=36,37,38,39,40,41,42,43,44,45 name=powerball speed=10 loop=0 -frames=48 +frames=10 [/animation] [animation] name=pop speed=5 loop=-1 -frames=60,61,62,63,64,65,66,67,68,69,70,71 +frames=48,49,50,51,52,53,54,55,56,57,58,59 [/animation] \ No newline at end of file diff --git a/data/gfx/balloon4.png b/data/gfx/balloon4.png index 8608d57..45ec694 100644 Binary files a/data/gfx/balloon4.png and b/data/gfx/balloon4.png differ diff --git a/data/gfx/logo.png b/data/gfx/logo.png index cc0506a..0177885 100644 Binary files a/data/gfx/logo.png and b/data/gfx/logo.png differ diff --git a/source/balloon.cpp b/source/balloon.cpp index fafcab2..44a3f91 100644 --- a/source/balloon.cpp +++ b/source/balloon.cpp @@ -326,7 +326,7 @@ void Balloon::render() if (kind == POWER_BALL) { Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer()); - sp->setSpriteClip(370, 148, 37, 37); + sp->setSpriteClip(407, 0, 37, 37); sp->render(); delete sp; } @@ -339,7 +339,7 @@ void Balloon::render() if (kind == POWER_BALL and !popping) { Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer()); - sp->setSpriteClip(370, 148, 37, 37); + sp->setSpriteClip(407, 0, 37, 37); sp->render(); delete sp; } diff --git a/source/director.cpp b/source/director.cpp index 3693cb0..e4c4e08 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -12,6 +12,9 @@ Director::Director(std::string path) section.name = PROG_SECTION_GAME; section.subsection = GAME_SECTION_PLAY_1P; + section.name = PROG_SECTION_LOGO; + section.subsection = 0; + // Crea el objeto que controla los ficheros de recursos asset = new Asset(path.substr(0, path.find_last_of("\\/")) + "/../"); diff --git a/source/game.cpp b/source/game.cpp index 174c903..276f68d 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -27,10 +27,6 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr fade = new Fade(renderer); eventHandler = new SDL_Event(); - // std::vector *> *itemAnimations = new std::vector *>; - // std::vector *> *playerAnimations = new std::vector *>; - // std::vector *> *balloonAnimations = new std::vector *>; - // Carga los recursos loadMedia(); @@ -1603,7 +1599,7 @@ void Game::renderScoreBoard() powerMeterSprite->setSpriteClip(0, 0, 40, 7); powerMeterSprite->render(); const float percent = (stage[currentStage].currentPower * 40.0f) / stage[currentStage].powerToComplete; - powerMeterSprite->setSpriteClip(0, 0, (int)percent, 7); + powerMeterSprite->setSpriteClip(40, 0, (int)percent, 7); powerMeterSprite->render(); // HI-SCORE @@ -1705,7 +1701,6 @@ void Game::updateDeath() // Comprueba si todos los jugadores estan muertos bool allAreDead = true; for (auto player : players) - // for (int i = 0; i < numPlayers; i++) { allAreDead &= (!player->isAlive()); @@ -1764,12 +1759,15 @@ void Game::updateDeath() case 0: JA_PlaySound(bubble1Sound, 0); break; + case 1: JA_PlaySound(bubble2Sound, 0); break; + case 2: JA_PlaySound(bubble3Sound, 0); break; + case 3: JA_PlaySound(bubble4Sound, 0); break; @@ -1882,13 +1880,24 @@ void Game::incBalloonSpeed() if (difficulty == DIFFICULTY_NORMAL) { if (enemySpeed == BALLOON_SPEED_1) + { enemySpeed = BALLOON_SPEED_2; + } + else if (enemySpeed == BALLOON_SPEED_2) + { enemySpeed = BALLOON_SPEED_3; + } + else if (enemySpeed == BALLOON_SPEED_3) + { enemySpeed = BALLOON_SPEED_4; + } + else if (enemySpeed == BALLOON_SPEED_4) + { enemySpeed = BALLOON_SPEED_5; + } setBalloonSpeed(enemySpeed); } @@ -1901,13 +1910,24 @@ void Game::decBalloonSpeed() if (difficulty == DIFFICULTY_NORMAL) { if (enemySpeed == BALLOON_SPEED_5) + { enemySpeed = BALLOON_SPEED_4; + } + else if (enemySpeed == BALLOON_SPEED_4) + { enemySpeed = BALLOON_SPEED_3; + } + else if (enemySpeed == BALLOON_SPEED_3) + { enemySpeed = BALLOON_SPEED_2; + } + else if (enemySpeed == BALLOON_SPEED_2) + { enemySpeed = BALLOON_SPEED_1; + } setBalloonSpeed(enemySpeed); } @@ -2447,8 +2467,7 @@ Uint8 Game::dropItem() // Crea un objeto item void Game::createItem(Uint8 kind, float x, float y) { - const int index = kind - 1; - Item *item = new Item(kind, x, y, itemTextures.at(index), itemAnimations.at(index), renderer); + Item *item = new Item(kind, x, y, itemTextures.at(kind), itemAnimations.at(kind), renderer); items.push_back(item); } @@ -2559,8 +2578,6 @@ void Game::throwPlayer(int x, int y, Player *player) { const int sentit = ((rand() % 2) ? 1 : -1); - // player->deathIndex = getSmartSpriteFreeIndex(); - SmartSprite *ss = new SmartSprite(nullptr, renderer); smartSprites.push_back(ss); diff --git a/source/item.h b/source/item.h index daefd32..4118ee5 100644 --- a/source/item.h +++ b/source/item.h @@ -8,13 +8,12 @@ #define ITEM_H // Tipos de objetos -#define ITEM_POINTS_1_DISK 1 -#define ITEM_POINTS_2_GAVINA 2 -#define ITEM_POINTS_3_PACMAR 3 -#define ITEM_CLOCK 4 -#define ITEM_COFFEE 5 -#define ITEM_POWER_BALL 6 -#define ITEM_COFFEE_MACHINE 7 +#define ITEM_POINTS_1_DISK 0 +#define ITEM_POINTS_2_GAVINA 1 +#define ITEM_POINTS_3_PACMAR 2 +#define ITEM_CLOCK 3 +#define ITEM_COFFEE 4 +#define ITEM_COFFEE_MACHINE 5 // Clase Item class Item diff --git a/source/logo.cpp b/source/logo.cpp index df56260..5a25504 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -14,7 +14,7 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset) // Reserva memoria para los punteros eventHandler = new SDL_Event(); texture = new LTexture(renderer, asset->get("logo.png")); - sprite = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, texture, renderer); + sprite = new Sprite(14, 75, 226, 44, texture, renderer); // Inicializa variables counter = 0; @@ -104,7 +104,7 @@ void Logo::render() screen->start(); // Limpia la pantalla - screen->clean(bgColor); + screen->clean({238, 238, 238}); // Dibuja los objetos sprite->render(); diff --git a/source/player.cpp b/source/player.cpp index 268a8c5..ba2749c 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -35,7 +35,6 @@ void Player::init() // Inicializa variables de estado alive = true; deathCounter = DEATH_COUNTER; - deathIndex = 0; statusWalking = PLAYER_STATUS_WALKING_STOP; statusFiring = PLAYER_STATUS_FIRING_NO; invulnerable = false; @@ -534,7 +533,7 @@ void Player::shiftColliders() // Obtiene el puntero a la textura con los gráficos de la animación de morir LTexture *Player::getDeadTexture() { - //return deathTexture; + return deathSprite->getTexture();; } // Obtiene el valor de la variable diff --git a/source/player.h b/source/player.h index ebccf74..f30de63 100644 --- a/source/player.h +++ b/source/player.h @@ -82,6 +82,7 @@ private: bool extraHit; // Indica si el jugador tiene un toque extra Uint8 coffees; // Indica cuantos cafes lleva acumulados bool powerUp; // Indica si el jugador tiene activo el modo PowerUp + Uint16 powerUpCounter; // Temporizador para el modo PowerUp bool input; // Indica si puede recibir ordenes de entrada circle_t collider; // Circulo de colisión del jugador @@ -98,9 +99,6 @@ private: void updatePowerUpHeadOffset(); public: - Uint8 deathIndex; // Apaño rapidito. Indice de SmartSprite donde esta ubicado el sprite de morirse - Uint16 powerUpCounter; // Temporizador para el modo PowerUp - // Constructor Player(float x, int y, SDL_Renderer *renderer, std::vector texture, std::vector *> animations); diff --git a/source/sprite.cpp b/source/sprite.cpp index 795e65b..24917ee 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -18,7 +18,7 @@ Sprite::Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *rend this->texture = texture; // Establece el rectangulo de donde coger la imagen - spriteClip = {x, y, w, h}; + spriteClip = {0, 0, w, h}; // Inicializa variables enabled = true; @@ -41,7 +41,7 @@ Sprite::Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer) this->texture = texture; // Establece el rectangulo de donde coger la imagen - spriteClip = {x, y, w, h}; + spriteClip = {0, 0, w, h}; // Inicializa variables enabled = true;