afegit "z-order" per als jugadors
This commit is contained in:
@@ -212,7 +212,7 @@ void Game::updatePlayers()
|
||||
// Comprueba la colisión entre el jugador y los globos
|
||||
if (checkPlayerBalloonCollision(player))
|
||||
{
|
||||
killPlayer(player);
|
||||
handlePlayerCollision(player);
|
||||
|
||||
if (demo_.enabled && allPlayersAreNotPlaying())
|
||||
{
|
||||
@@ -225,6 +225,9 @@ void Game::updatePlayers()
|
||||
checkPlayerItemCollision(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Organiza la lista de jugadores
|
||||
movePlayersToFront();
|
||||
}
|
||||
|
||||
// Dibuja a los jugadores
|
||||
@@ -899,8 +902,8 @@ void Game::renderPathSprites()
|
||||
}
|
||||
}
|
||||
|
||||
// Acciones a realizar cuando el jugador muere
|
||||
void Game::killPlayer(std::shared_ptr<Player> &player)
|
||||
// Acciones a realizar cuando el jugador colisiona con un globo
|
||||
void Game::handlePlayerCollision(std::shared_ptr<Player> &player)
|
||||
{
|
||||
if (!player->isPlaying() || player->isInvulnerable())
|
||||
{
|
||||
@@ -925,6 +928,7 @@ void Game::killPlayer(std::shared_ptr<Player> &player)
|
||||
screen_->shake();
|
||||
playSound("voice_no.wav");
|
||||
player->setPlayingState(PlayerState::DYING);
|
||||
players_to_reorder.push_back(player);
|
||||
if (allPlayersAreNotPlaying())
|
||||
{
|
||||
// No se puede subir poder de fase si no hay nadie jugando
|
||||
@@ -2026,6 +2030,26 @@ void Game::playSound(const std::string &name)
|
||||
audio->playSound(name);
|
||||
}
|
||||
|
||||
// Organiza los jugadores para que los vivos se pinten sobre los muertos
|
||||
void Game::movePlayersToFront()
|
||||
{
|
||||
if (players_to_reorder.empty())
|
||||
return;
|
||||
|
||||
for (auto& player : players_to_reorder)
|
||||
{
|
||||
auto it = std::find(players_.begin(), players_.end(), player);
|
||||
if (it != players_.end() && it != players_.begin())
|
||||
{
|
||||
std::shared_ptr<Player> dyingPlayer = *it;
|
||||
players_.erase(it);
|
||||
players_.insert(players_.begin(), dyingPlayer);
|
||||
}
|
||||
}
|
||||
players_to_reorder.clear();
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
// Comprueba los eventos en el modo DEBUG
|
||||
void Game::checkDebugEvents(const SDL_Event &event)
|
||||
|
||||
Reference in New Issue
Block a user