Trabajando en la muerte del jugador

This commit is contained in:
2022-09-23 21:06:21 +02:00
parent 4cf09d1535
commit e18db352e0
4 changed files with 94 additions and 6 deletions

View File

@@ -95,11 +95,9 @@ void Game::update()
map->update(); map->update();
enemyEngine->update(); enemyEngine->update();
player->update(); player->update();
if (enemyEngine->checkEnemyCollision(player->getCollider()))
{
debug->add("COLLISION");
}
checkPlayerEnemyCollisions();
checkIfPlayerIsAlive();
checkScreenBorders(); checkScreenBorders();
updateDebugInfo(); updateDebugInfo();
@@ -197,6 +195,8 @@ void Game::checkEventHandler()
map = new Map(asset->get("01.map"), renderer, asset, itemTracker); map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
delete player; delete player;
player = new Player(renderer, asset, input, map, debug, &board.diamonds); player = new Player(renderer, asset, input, map, debug, &board.diamonds);
delete enemyEngine;
enemyEngine = new EnemyEngine(renderer, asset, player, map, asset->get(map->getEnemyFile()));
break; break;
case SDL_SCANCODE_F: case SDL_SCANCODE_F:
@@ -310,4 +310,51 @@ void Game::reLoadTextures()
map->reLoadTextures(); map->reLoadTextures();
player->reLoadTextures(); player->reLoadTextures();
scoreboard->reLoadTexture(); scoreboard->reLoadTexture();
}
// Comprueba las colisiones del jugador con los enemigos
bool Game::checkPlayerEnemyCollisions()
{
if (enemyEngine->checkEnemyCollision(player->getCollider()))
{
debug->add("COLLISION");
player->setLivingState(l_dead);
return true;
}
return false;
}
// Comprueba si el jugador esta vivo
void Game::checkIfPlayerIsAlive()
{
if (player->getLivingState() == l_dead)
{
killPlayer();
}
}
// Mata al jugador
void Game::killPlayer()
{
// if (player->getInvincible())
//{
// return;
// }
board.lives--;
// Destruye el mapa, el jugador y los enemigos
//delete map;
delete player;
//delete enemyEngine;
// Sonido
// JA_PlaySound(deathSound);
// setBlackScreen();
// Crea el nuevo mapa, el nuevo jugador y nuevos enemigos
//map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
player = new Player(renderer, asset, input, map, debug, &board.diamonds);
//enemyEngine = new EnemyEngine(renderer, asset, player, map, asset->get(map->getEnemyFile()));
} }

View File

@@ -34,8 +34,8 @@ private:
Debug *debug; // Objeto para gestionar la información de debug Debug *debug; // Objeto para gestionar la información de debug
SDL_Texture *spriteLayer; // Textura para dibujar los sprites SDL_Texture *spriteLayer; // Textura para dibujar los sprites
section_t section; // Seccion actual dentro del programa section_t section; // Seccion actual dentro del programa
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
bool musicEnabled; // Indica si la musica puede sonar o no bool musicEnabled; // Indica si la musica puede sonar o no
// Actualiza el juego, las variables, comprueba la entrada, etc. // Actualiza el juego, las variables, comprueba la entrada, etc.
@@ -68,6 +68,15 @@ private:
// Recarga las texturas // Recarga las texturas
void reLoadTextures(); void reLoadTextures();
// Comprueba las colisiones del jugador con los enemigos
bool checkPlayerEnemyCollisions();
// Comprueba si el jugador esta vivo
void checkIfPlayerIsAlive();
// Mata al jugador
void killPlayer();
public: public:
// Constructor // Constructor
Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Debug *debug); Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Debug *debug);

View File

@@ -525,4 +525,30 @@ SDL_Rect &Player::getCollider()
// Comprueba los estados de vida // Comprueba los estados de vida
void Player::checkLivingState() void Player::checkLivingState()
{ {
switch (living)
{
case l_alive:
break;
case l_dying:
break;
case l_dead:
break;
default:
break;
}
}
// Establece el estado de vida del jugador
void Player::setLivingState(e_living value)
{
living = value;
}
// Obtiene el estado de vida del jugador
e_living Player::getLivingState()
{
return living;
} }

View File

@@ -142,6 +142,12 @@ public:
// Obtiene el rectangulo de colision del jugador // Obtiene el rectangulo de colision del jugador
SDL_Rect &getCollider(); SDL_Rect &getCollider();
// Establece el estado de vida del jugador
void setLivingState(e_living value);
// Obtiene el estado de vida del jugador
e_living getLivingState();
}; };
#endif #endif