treballant en sistema de portes i claus

This commit is contained in:
2026-04-10 09:47:48 +02:00
parent 9aff4432df
commit 97c30bf9a1
37 changed files with 1236 additions and 110 deletions

View File

@@ -20,7 +20,10 @@
#include "game/defaults.hpp" // Para Defaults::Game
#include "game/entities/moving_platform.hpp" // Para MovingPlatform
#include "game/game_control.hpp" // Para GameControl
#include "game/gameplay/door_tracker.hpp" // Para DoorTracker
#include "game/gameplay/inventory.hpp" // Para Inventory
#include "game/gameplay/item_tracker.hpp" // Para ItemTracker
#include "game/gameplay/key_tracker.hpp" // Para KeyTracker
#include "game/gameplay/room.hpp" // Para Room, RoomData
#include "game/gameplay/room_tracker.hpp" // Para RoomTracker
#include "game/gameplay/scoreboard.hpp" // Para Scoreboard::Data, Scoreboard
@@ -66,6 +69,9 @@ Game::Game(Mode mode)
// Crea objetos e inicializa variables
ItemTracker::init();
KeyTracker::init();
DoorTracker::init();
Inventory::init();
demoInit();
room_ = getOrCreateRoom(current_room_);
initPlayer(spawn_data_, room_);
@@ -164,6 +170,9 @@ Game::~Game() {
}
ItemTracker::destroy();
KeyTracker::destroy();
DoorTracker::destroy();
Inventory::destroy();
if (Console::get() != nullptr) { Console::get()->on_toggle = nullptr; }
@@ -325,6 +334,8 @@ void Game::updatePlaying(float delta_time) {
#endif
checkPlayerIsOnBorder();
checkPlayerAndItems();
checkPlayerAndKeys();
room_->tryUnlockDoors(player_->getCollider());
checkPlayerAndEnemies();
checkIfPlayerIsAlive();
@@ -507,6 +518,8 @@ void Game::renderPlaying() {
transition_old_room_->renderPlatforms();
transition_old_room_->renderEnemies();
transition_old_room_->renderItems();
transition_old_room_->renderKeys();
transition_old_room_->renderDoors();
// Renderizar habitación entrante + jugador con su offset
Screen::get()->setRenderOffset(new_ox, new_oy);
@@ -514,6 +527,8 @@ void Game::renderPlaying() {
room_->renderPlatforms();
room_->renderEnemies();
room_->renderItems();
room_->renderKeys();
room_->renderDoors();
if (mode_ == Mode::GAME) {
player_->render();
}
@@ -527,6 +542,8 @@ void Game::renderPlaying() {
room_->renderPlatforms();
room_->renderEnemies();
room_->renderItems();
room_->renderKeys();
room_->renderDoors();
if (mode_ == Mode::GAME) {
player_->render();
}
@@ -569,6 +586,8 @@ void Game::renderFadeToEnding() {
room_->renderMap();
room_->renderEnemies();
room_->renderItems();
room_->renderKeys();
room_->renderDoors();
player_->render(); // Player congelado pero visible
scoreboard_->render();
@@ -935,6 +954,10 @@ void Game::checkPlayerAndPlatforms() {
}
// Comprueba las colisiones del jugador con los objetos
void Game::checkPlayerAndKeys() {
room_->keyCollision(player_->getCollider());
}
void Game::checkPlayerAndItems() {
room_->itemCollision(player_->getCollider());
}

View File

@@ -77,6 +77,7 @@ class Game {
auto checkPlayerAndEnemies() -> bool; // Comprueba las colisiones del jugador con los enemigos
void checkPlayerAndPlatforms(); // Comprueba si el jugador está sobre una plataforma móvil
void checkPlayerAndItems(); // Comprueba las colisiones del jugador con los objetos
void checkPlayerAndKeys(); // Comprueba las colisiones del jugador con las llaves
void checkIfPlayerIsAlive(); // Comprueba si el jugador esta vivo
void killPlayer(); // Mata al jugador
void togglePause(); // Pone el juego en pausa