Añadida mas información al marcador

This commit is contained in:
2022-09-11 19:59:09 +02:00
parent 3eab857267
commit ccb58c169c
8 changed files with 156 additions and 53 deletions

View File

@@ -4,12 +4,10 @@
Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Debug *debug)
{
// Inicia algunas variables
clock = SDL_GetTicks();
board.iniClock = SDL_GetTicks();
currentRoom = "01.room";
spawnPoint = {16, 96, 0, 0, 0, s_standing, SDL_FLIP_NONE};
currentRoom = "06.room";
spawnPoint = {240, 96, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL};
// Copia los punteros
this->renderer = renderer;
@@ -17,12 +15,16 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
this->screen = screen;
this->input = input;
this->debug = debug;
this->debug->setEnabled(true);
//this->debug->setEnabled(true);
//currentRoom = "06.room";
//spawnPoint = {240, 96, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL};
// Crea los objetos
scoreboard = new ScoreBoard(renderer, asset, &playerLives, &itemsPicked, &clock);
scoreboard = new ScoreBoard(renderer, asset, &board);
itemTracker = new ItemTracker();
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &itemsPicked, debug);
roomTracker = new RoomTracker();
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, input, room, debug);
eventHandler = new SDL_Event();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
@@ -33,11 +35,13 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
// Inicializa el resto de variables
ticks = 0;
ticksSpeed = 15;
playerLives = 9;
itemsPicked = 0;
board.lives = 9;
board.items = 0;
board.rooms = 1;
roomTracker->addRoom(currentRoom);
player->setInvincible(debug->getEnabled());
musicEnabled = !debug->getEnabled();
board.music = !debug->getEnabled();
section.name = SECTION_PROG_GAME;
section.subsection = SUBSECTION_GAME_PLAY;
@@ -53,6 +57,7 @@ Game::~Game()
// Libera la memoria de los objetos
delete scoreboard;
delete itemTracker;
delete roomTracker;
delete room;
delete player;
delete eventHandler;
@@ -88,12 +93,13 @@ void Game::checkEventHandler()
case SDL_SCANCODE_D:
debug->switchEnabled();
player->setInvincible(debug->getEnabled());
musicEnabled = !debug->getEnabled();
musicEnabled ? JA_PlayMusic(music) : JA_StopMusic();
board.music = !debug->getEnabled();
board.music ? JA_ResumeMusic() : JA_PauseMusic();
break;
case SDL_SCANCODE_M:
(JA_GetMusicState() == JA_MUSIC_PLAYING) ? JA_PauseMusic() : JA_ResumeMusic();
board.music = !board.music;
board.music ? JA_ResumeMusic() : JA_PauseMusic();
break;
case SDL_SCANCODE_F:
@@ -131,9 +137,10 @@ void Game::checkEventHandler()
// Bucle para el juego
section_t Game::run()
{
if (musicEnabled)
JA_PlayMusic(music);
if (!board.music)
{
JA_PlayMusic(music);
JA_PauseMusic();
}
while (section.name == SECTION_PROG_GAME)
@@ -191,7 +198,7 @@ void Game::render()
// Debug info
renderDebugInfo();
//test->render();
// test->render();
// Actualiza la pantalla
screen->blit();
@@ -261,7 +268,13 @@ bool Game::changeRoom(std::string file)
room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero
room = new Room(asset->get(file), renderer, screen, asset, itemTracker, &itemsPicked, debug);
room = new Room(asset->get(file), renderer, screen, asset, itemTracker, &board.items, debug);
// Actualiza el marcador
if (roomTracker->addRoom(file))
{
board.rooms++;
}
// Pasa la nueva habitación al jugador
player->setRoom(room);
@@ -312,7 +325,7 @@ void Game::killPlayer()
return;
}
playerLives--;
board.lives--;
// Destruye la habitacion y el jugador
delete room;
@@ -322,7 +335,7 @@ void Game::killPlayer()
JA_PlaySound(deathSound);
// Crea la nueva habitación y el nuevo jugador
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &itemsPicked, debug);
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, input, room, debug);
}