Muerte y reaparición del jugador

This commit is contained in:
2022-07-11 18:08:48 +02:00
parent 4f6a99f670
commit 8101c33526
9 changed files with 110 additions and 38 deletions

View File

@@ -3,6 +3,10 @@
// Constructor
Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang, Input *input)
{
// Inicia variables
mCurrentRoom = "01.room";
mSpawnPoint = {2 * 8, 12 * 8, 0, 0, 0, STATUS_STANDING, SDL_FLIP_NONE};
// Copia los punteros
mRenderer = renderer;
mAsset = asset;
@@ -11,8 +15,8 @@ Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang,
// Crea los objetos
mScreen = new Screen(window, renderer);
mRoom = new Room(mAsset->get("01.room"), mRenderer, mAsset);
mPlayer = new Player(mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset);
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
mEventHandler = new SDL_Event();
mTextureText = new LTexture();
mText = new Text(mAsset->get("smb2.txt"), mTextureText, renderer);
@@ -118,6 +122,16 @@ void Game::update()
checkPlayerAndWalls(); // Debe ir detras del player update, por si se ha metido en algun muro
checkPlayerOnBorder();
checkPlayerOnFloor();
if (checkPlayerAndEnemies())
{
// Destruye la habitacion y el jugador
delete mRoom;
delete mPlayer;
// Crea la nueva habitación y el nuevo jugador
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset);
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
}
}
}
@@ -207,9 +221,12 @@ void Game::checkPlayerOnBorder()
{
if (mPlayer->getOnBorder())
{
if (changeRoom(mRoom->getRoom(mPlayer->getBorder())))
const std::string room_name = mRoom->getRoom(mPlayer->getBorder());
if (changeRoom(room_name))
{
mPlayer->switchBorders();
mCurrentRoom = room_name;
mSpawnPoint = mPlayer->getSpawnParams();
}
}
}