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();
enemyEngine->update();
player->update();
if (enemyEngine->checkEnemyCollision(player->getCollider()))
{
debug->add("COLLISION");
}
checkPlayerEnemyCollisions();
checkIfPlayerIsAlive();
checkScreenBorders();
updateDebugInfo();
@@ -197,6 +195,8 @@ void Game::checkEventHandler()
map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
delete player;
player = new Player(renderer, asset, input, map, debug, &board.diamonds);
delete enemyEngine;
enemyEngine = new EnemyEngine(renderer, asset, player, map, asset->get(map->getEnemyFile()));
break;
case SDL_SCANCODE_F:
@@ -311,3 +311,50 @@ void Game::reLoadTextures()
player->reLoadTextures();
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
SDL_Texture *spriteLayer; // Textura para dibujar los sprites
section_t section; // Seccion actual dentro 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 ticks; // Contador de ticks para ajustar la velocidad del programa
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
bool musicEnabled; // Indica si la musica puede sonar o no
// Actualiza el juego, las variables, comprueba la entrada, etc.
@@ -68,6 +68,15 @@ private:
// Recarga las texturas
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:
// Constructor
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
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
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