El jugador ya cambia de pantalla

This commit is contained in:
2022-07-05 20:44:35 +02:00
parent a8896841a3
commit 4243f89dc0
11 changed files with 221 additions and 44 deletions

View File

@@ -9,8 +9,10 @@ Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang,
mLang = lang;
mInput = input;
// 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);
mEventHandler = new SDL_Event();
mTextureText = new LTexture();
mText = new Text(mAsset->get("smb2.txt"), mTextureText, renderer);
@@ -19,11 +21,13 @@ Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang,
Game::~Game()
{
// Borra las referencias a los punteros
mRenderer = nullptr;
mAsset = nullptr;
mLang = nullptr;
mInput = nullptr;
// Libera la memoria de los objetos
delete mEventHandler;
mEventHandler = nullptr;
@@ -37,6 +41,9 @@ Game::~Game()
delete mRoom;
mRoom = nullptr;
delete mRoom;
mRoom = nullptr;
delete mText;
mText = nullptr;
@@ -108,6 +115,8 @@ void Game::update()
checkInput();
mRoom->update();
mPlayer->update();
checkPlayerOnBorder();
}
}
@@ -122,6 +131,7 @@ void Game::draw()
mRoom->drawMap();
mRoom->drawEnemies();
mPlayer->draw();
// Texto en el centro de la pantalla
mText->writeCentered(GAMECANVAS_CENTER_X, 18 * 8, mRoom->getName());
@@ -133,8 +143,9 @@ void Game::draw()
// Comprueba la entrada
void Game::checkInput()
{
/*
if (mInput->checkInput(INPUT_UP, REPEAT_FALSE))
changeRoom(mRoom->getRoomUp());
changeRoom(mRoom->getRoomUp());
if (mInput->checkInput(INPUT_DOWN, REPEAT_FALSE))
changeRoom(mRoom->getRoomDown());
@@ -144,6 +155,7 @@ void Game::checkInput()
if (mInput->checkInput(INPUT_RIGHT, REPEAT_FALSE))
changeRoom(mRoom->getRoomRight());
*/
}
// Cambia de habitación
@@ -165,6 +177,16 @@ bool Game::changeRoom(std::string file)
success = true;
}
return success;
}
// Comprueba si el jugador esta en el borde de la pantalla
void Game::checkPlayerOnBorder()
{
if (mPlayer->getOnBorder())
{
changeRoom(mRoom->getRoom(mPlayer->getBorder()));
mPlayer->switchBorders();
}
}