Arreglada la animacion de morir. Ya no se usan smartsprites
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -209,7 +209,6 @@ bool Director::setFileList()
|
||||
asset->add("data/gfx/intro.png", t_bitmap);
|
||||
asset->add("data/gfx/logo.png", t_bitmap);
|
||||
|
||||
asset->add("data/gfx/items.png", t_bitmap);
|
||||
asset->add("data/gfx/item_points1_disk.png", t_bitmap);
|
||||
asset->add("data/gfx/item_points1_disk.ani", t_data);
|
||||
asset->add("data/gfx/item_points2_gavina.png", t_bitmap);
|
||||
|
||||
107
source/game.cpp
107
source/game.cpp
@@ -84,9 +84,6 @@ Game::~Game()
|
||||
gameTextTexture->unload();
|
||||
delete gameTextTexture;
|
||||
|
||||
itemTexture->unload();
|
||||
delete itemTexture;
|
||||
|
||||
// Animaciones
|
||||
for (auto animation : playerAnimations)
|
||||
{
|
||||
@@ -372,7 +369,6 @@ void Game::loadMedia()
|
||||
gamePowerMeterTexture = new LTexture(renderer, asset->get("game_power_meter.png"));
|
||||
gameSkyColorsTexture = new LTexture(renderer, asset->get("game_sky_colors.png"));
|
||||
gameTextTexture = new LTexture(renderer, asset->get("game_text.png"));
|
||||
itemTexture = new LTexture(renderer, asset->get("items.png"));
|
||||
|
||||
// Texturas - Globos
|
||||
LTexture *balloon1Texture = new LTexture(renderer, asset->get("balloon1.png"));
|
||||
@@ -1703,82 +1699,24 @@ void Game::updateStage()
|
||||
void Game::updateDeath()
|
||||
{
|
||||
// Comprueba si todos los jugadores estan muertos
|
||||
bool allAreDead = true;
|
||||
bool allPlayersAreDead = true;
|
||||
for (auto player : players)
|
||||
{
|
||||
allAreDead &= (!player->isAlive());
|
||||
|
||||
/*if (!player->isAlive())
|
||||
{
|
||||
// Animación
|
||||
if ((player->getDeathCounter() / 5) % 4 == 0)
|
||||
{
|
||||
smartSprites[player->deathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||
}
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 1)
|
||||
{
|
||||
smartSprites[player->deathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||
}
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 2)
|
||||
{
|
||||
smartSprites[player->deathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||
}
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 3)
|
||||
{
|
||||
smartSprites[player->deathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||
allPlayersAreDead &= (!player->isAlive());
|
||||
}
|
||||
|
||||
// Rebote en los laterales
|
||||
if (smartSprites[player->deathIndex]->getVelX() > 0)
|
||||
{
|
||||
if (smartSprites[player->deathIndex]->getPosX() > (GAME_WIDTH - smartSprites[player->deathIndex]->getWidth()))
|
||||
{
|
||||
smartSprites[player->deathIndex]->setPosX(GAME_WIDTH - smartSprites[player->deathIndex]->getWidth());
|
||||
smartSprites[player->deathIndex]->setVelX(smartSprites[player->deathIndex]->getVelX() * (-1));
|
||||
smartSprites[player->deathIndex]->setDestX(smartSprites[player->deathIndex]->getDestX() * (-1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (smartSprites[player->deathIndex]->getPosX() < 0)
|
||||
{
|
||||
smartSprites[player->deathIndex]->setPosX(0);
|
||||
smartSprites[player->deathIndex]->setVelX(smartSprites[player->deathIndex]->getVelX() * (-1));
|
||||
smartSprites[player->deathIndex]->setDestX(smartSprites[player->deathIndex]->getDestX() * (-1));
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if (allAreDead)
|
||||
if (allPlayersAreDead)
|
||||
{
|
||||
if (deathCounter > 0)
|
||||
{
|
||||
deathCounter--;
|
||||
|
||||
if ((deathCounter == 250) || (deathCounter == 200) || (deathCounter == 180) || (deathCounter == 120) || (deathCounter == 60))
|
||||
{
|
||||
const Uint8 sound = rand() % 4;
|
||||
switch (sound)
|
||||
{
|
||||
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;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// Hace sonar aleatoriamente uno de los 4 sonidos de burbujas
|
||||
const Uint8 index = rand() % 4;
|
||||
const JA_Sound sound[4] = {bubble1Sound, bubble2Sound, bubble3Sound, bubble4Sound};
|
||||
JA_PlaySound(sound[index], 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2556,7 +2494,7 @@ void Game::updateShakeEffect()
|
||||
// Crea un SmartSprite para arrojar el item café al recibir un impacto
|
||||
void Game::throwCoffee(int x, int y)
|
||||
{
|
||||
SmartSprite *ss = new SmartSprite(itemTexture, renderer);
|
||||
SmartSprite *ss = new SmartSprite(itemTextures.at(4), renderer);
|
||||
smartSprites.push_back(ss);
|
||||
|
||||
ss->setPosX(x - 8);
|
||||
@@ -2571,36 +2509,12 @@ void Game::throwCoffee(int x, int y)
|
||||
ss->setDestY(GAME_HEIGHT + 1);
|
||||
ss->setEnabled(true);
|
||||
ss->setEnabledCounter(1);
|
||||
ss->setSpriteClip(80, 16, 16, 16);
|
||||
ss->setSpriteClip(0, 0, 16, 16);
|
||||
ss->setRotate(true);
|
||||
ss->setRotateSpeed(10);
|
||||
ss->setRotateAmount(90.0);
|
||||
}
|
||||
|
||||
// Crea un SmartSprite para arrojar al jugador al morir
|
||||
void Game::throwPlayer(int x, int y, Player *player)
|
||||
{
|
||||
const int sentit = ((rand() % 2) ? 1 : -1);
|
||||
|
||||
SmartSprite *ss = new SmartSprite(nullptr, renderer);
|
||||
smartSprites.push_back(ss);
|
||||
|
||||
ss->setTexture(player->getDeadTexture());
|
||||
ss->setPosX(x);
|
||||
ss->setPosY(y);
|
||||
ss->setWidth(24);
|
||||
ss->setHeight(24);
|
||||
ss->setVelX(2.0f * sentit);
|
||||
ss->setVelY(-5.0f);
|
||||
ss->setAccelX(0.0f);
|
||||
ss->setAccelY(0.2f);
|
||||
ss->setDestX(GAME_WIDTH * sentit);
|
||||
ss->setDestY(GAME_HEIGHT + 1);
|
||||
ss->setEnabled(true);
|
||||
ss->setEnabledCounter(1);
|
||||
ss->setSpriteClip(0, 0, 24, 24);
|
||||
}
|
||||
|
||||
// Actualiza los SmartSprites
|
||||
void Game::updateSmartSprites()
|
||||
{
|
||||
@@ -2638,7 +2552,6 @@ void Game::killPlayer(Player *player)
|
||||
shakeScreen();
|
||||
SDL_Delay(500);
|
||||
JA_PlaySound(coffeeOutSound);
|
||||
throwPlayer(player->getPosX(), player->getPosY(), player);
|
||||
player->setAlive(false);
|
||||
if (allPlayersAreDead())
|
||||
{
|
||||
|
||||
@@ -138,8 +138,6 @@ private:
|
||||
LTexture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego
|
||||
LTexture *gameTextTexture; // Textura para los sprites con textos
|
||||
|
||||
LTexture *itemTexture; // Textura para los items
|
||||
|
||||
std::vector<std::vector<std::string> *> itemAnimations; // Vector con las animaciones de los items
|
||||
std::vector<std::vector<std::string> *> playerAnimations; // Vector con las animaciones del jugador
|
||||
std::vector<std::vector<std::string> *> balloonAnimations; // Vector con las animaciones de los globos
|
||||
@@ -201,7 +199,6 @@ private:
|
||||
float stageBitmapPath[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto
|
||||
float getReadyBitmapPath[STAGE_COUNTER]; // Vector con los puntos X por donde se desplaza el texto
|
||||
Uint16 deathCounter; // Contador para la animación de muerte del jugador
|
||||
Uint8 deathIndex; // Indice del vector de smartsprites que contiene el sprite del jugador
|
||||
Uint8 menaceCurrent; // Nivel de amenaza actual
|
||||
Uint8 menaceThreshold; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el numero de globos
|
||||
bool timeStopped; // Indica si el tiempo está detenido
|
||||
@@ -399,9 +396,6 @@ private:
|
||||
// Crea un SmartSprite para arrojar el item café al recibir un impacto
|
||||
void throwCoffee(int x, int y);
|
||||
|
||||
// Crea un SmartSprite para arrojar al jugador al morir
|
||||
void throwPlayer(int x, int y, Player *player);
|
||||
|
||||
// Actualiza los SmartSprites
|
||||
void updateSmartSprites();
|
||||
|
||||
|
||||
@@ -131,7 +131,9 @@ void Player::move()
|
||||
|
||||
// Si el jugador abandona el area de juego por los laterales
|
||||
if ((posX < PLAY_AREA_LEFT - 5) || (posX + width > PLAY_AREA_RIGHT + 5))
|
||||
posX -= velX; // Restaura su posición
|
||||
{ // Restaura su posición
|
||||
posX -= velX;
|
||||
}
|
||||
|
||||
// Actualiza la posición del sprite
|
||||
legsSprite->setPosX(getPosX());
|
||||
@@ -143,6 +145,20 @@ void Player::move()
|
||||
headSprite->setPosX(getPosX());
|
||||
headSprite->setPosY(posY);
|
||||
}
|
||||
else
|
||||
{
|
||||
deathSprite->update();
|
||||
|
||||
// Si el cadaver abandona el area de juego por los laterales
|
||||
if ((deathSprite->getPosX() < PLAY_AREA_LEFT) || (deathSprite->getPosX() + width > PLAY_AREA_RIGHT))
|
||||
{ // Restaura su posición
|
||||
const float vx = deathSprite->getVelX();
|
||||
deathSprite->setPosX(deathSprite->getPosX() - vx);
|
||||
|
||||
// Rebota
|
||||
deathSprite->setVelX(-vx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Pinta el jugador en pantalla
|
||||
@@ -166,6 +182,10 @@ void Player::render()
|
||||
headSprite->render();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
deathSprite->render();
|
||||
}
|
||||
}
|
||||
|
||||
// Establece el estado del jugador cuando camina
|
||||
@@ -186,8 +206,6 @@ void Player::setFiringStatus(Uint8 status)
|
||||
if (statusFiring != status)
|
||||
{
|
||||
statusFiring = status;
|
||||
// bodySprite->setCurrentFrame(0);
|
||||
// headSprite->setCurrentFrame(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,6 +354,18 @@ bool Player::isAlive()
|
||||
void Player::setAlive(bool value)
|
||||
{
|
||||
alive = value;
|
||||
|
||||
if (!value)
|
||||
{
|
||||
deathSprite->setPos(headSprite->getRect());
|
||||
deathSprite->setAccelY(0.2f);
|
||||
deathSprite->setVelY(-6.6f);
|
||||
deathSprite->setVelX(3.3f);
|
||||
if (rand() % 2 == 0)
|
||||
{
|
||||
deathSprite->setVelX(-3.3f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
@@ -533,7 +563,8 @@ void Player::shiftColliders()
|
||||
// Obtiene el puntero a la textura con los gráficos de la animación de morir
|
||||
LTexture *Player::getDeadTexture()
|
||||
{
|
||||
return deathSprite->getTexture();;
|
||||
return deathSprite->getTexture();
|
||||
;
|
||||
}
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
|
||||
Reference in New Issue
Block a user