polimorfise d'enemics
moving platforms
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include "core/system/event_buffer.hpp" // Para EventBuffer
|
||||
#include "core/system/global_events.hpp" // Para check
|
||||
#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/item_tracker.hpp" // Para ItemTracker
|
||||
#include "game/gameplay/room.hpp" // Para Room, RoomData
|
||||
@@ -305,6 +306,10 @@ void Game::updatePlaying(float delta_time) {
|
||||
updateAdjacentRooms(delta_time);
|
||||
switch (mode_) {
|
||||
case Mode::GAME:
|
||||
// Plataformas: resetear flag y detectar antes de la física del player
|
||||
player_->clearPlatformFlag();
|
||||
checkPlayerAndPlatforms();
|
||||
|
||||
#ifdef _DEBUG
|
||||
// Maneja el arrastre del jugador con el ratón (debug)
|
||||
handleDebugMouseDrag(delta_time);
|
||||
@@ -496,12 +501,14 @@ void Game::renderPlaying() {
|
||||
// Renderizar habitación saliente con su offset
|
||||
Screen::get()->setRenderOffset(old_ox, old_oy);
|
||||
transition_old_room_->renderMap();
|
||||
transition_old_room_->renderPlatforms();
|
||||
transition_old_room_->renderEnemies();
|
||||
transition_old_room_->renderItems();
|
||||
|
||||
// Renderizar habitación entrante + jugador con su offset
|
||||
Screen::get()->setRenderOffset(new_ox, new_oy);
|
||||
room_->renderMap();
|
||||
room_->renderPlatforms();
|
||||
room_->renderEnemies();
|
||||
room_->renderItems();
|
||||
if (mode_ == Mode::GAME) {
|
||||
@@ -514,6 +521,7 @@ void Game::renderPlaying() {
|
||||
} else {
|
||||
// --- Renderizado normal ---
|
||||
room_->renderMap();
|
||||
room_->renderPlatforms();
|
||||
room_->renderEnemies();
|
||||
room_->renderItems();
|
||||
if (mode_ == Mode::GAME) {
|
||||
@@ -895,6 +903,14 @@ auto Game::checkPlayerAndEnemies() -> bool {
|
||||
return DEATH;
|
||||
}
|
||||
|
||||
// Comprueba si el jugador está sobre una plataforma móvil y lo transporta
|
||||
void Game::checkPlayerAndPlatforms() {
|
||||
auto* platform = room_->checkPlayerOnPlatform(player_->getCollider(), player_->getVY());
|
||||
if (platform != nullptr) {
|
||||
player_->applyPlatformDisplacement(platform->getLastDX(), platform->getCollider().y);
|
||||
}
|
||||
}
|
||||
|
||||
// Comprueba las colisiones del jugador con los objetos
|
||||
void Game::checkPlayerAndItems() {
|
||||
room_->itemCollision(player_->getCollider());
|
||||
|
||||
Reference in New Issue
Block a user