començem a treballar en el editor
This commit is contained in:
@@ -32,7 +32,8 @@
|
||||
#include "utils/utils.hpp" // Para PaletteColor, stringToColor
|
||||
|
||||
#ifdef _DEBUG
|
||||
#include "core/system/debug.hpp" // Para Debug
|
||||
#include "core/system/debug.hpp" // Para Debug
|
||||
#include "game/editor/map_editor.hpp" // Para MapEditor
|
||||
#endif
|
||||
|
||||
// Constructor
|
||||
@@ -119,6 +120,13 @@ Game::Game(Mode mode)
|
||||
Debug::get()->saveToFile();
|
||||
return "Pos:" + std::to_string(tile_x) + "," + std::to_string(tile_y);
|
||||
};
|
||||
GameControl::enter_editor = [this]() -> void {
|
||||
MapEditor::get()->enter(room_, player_, current_room_, scoreboard_data_);
|
||||
};
|
||||
GameControl::exit_editor = []() -> void {
|
||||
MapEditor::get()->exit();
|
||||
};
|
||||
GameControl::save_editor = nullptr; // Se implementará en la fase 5
|
||||
#endif
|
||||
|
||||
SceneManager::current = (mode_ == Mode::GAME) ? SceneManager::Scene::GAME : SceneManager::Scene::DEMO;
|
||||
@@ -139,6 +147,10 @@ Game::~Game() {
|
||||
GameControl::toggle_debug_mode = nullptr;
|
||||
GameControl::set_initial_room = nullptr;
|
||||
GameControl::set_initial_pos = nullptr;
|
||||
if (MapEditor::get()->isActive()) { MapEditor::get()->exit(); }
|
||||
GameControl::enter_editor = nullptr;
|
||||
GameControl::exit_editor = nullptr;
|
||||
GameControl::save_editor = nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -149,7 +161,11 @@ void Game::handleEvents() {
|
||||
GlobalEvents::handle(event);
|
||||
#ifdef _DEBUG
|
||||
if (!Console::get()->isActive()) {
|
||||
handleDebugEvents(event);
|
||||
if (MapEditor::get()->isActive()) {
|
||||
MapEditor::get()->handleEvent(event);
|
||||
} else {
|
||||
handleDebugEvents(event);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -172,6 +188,14 @@ void Game::handleInput() {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
// Si el editor de mapas está activo, no procesar inputs del juego
|
||||
if (MapEditor::get()->isActive()) {
|
||||
GlobalInputs::handle();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Durante fade/postfade, solo procesar inputs globales
|
||||
if (state_ != State::PLAYING) {
|
||||
GlobalInputs::handle();
|
||||
@@ -240,6 +264,14 @@ void Game::update() {
|
||||
|
||||
// Actualiza el juego en estado PLAYING
|
||||
void Game::updatePlaying(float delta_time) {
|
||||
#ifdef _DEBUG
|
||||
// Si el editor de mapas está activo, delegar en él y no ejecutar gameplay
|
||||
if (MapEditor::get()->isActive()) {
|
||||
MapEditor::get()->update(delta_time);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Actualiza los objetos
|
||||
room_->update(delta_time);
|
||||
switch (mode_) {
|
||||
@@ -379,8 +411,19 @@ void Game::renderPlaying() {
|
||||
// Prepara para dibujar el frame
|
||||
Screen::get()->start();
|
||||
|
||||
// Dibuja los elementos del juego en orden
|
||||
// Dibuja el mapa de tiles (siempre)
|
||||
room_->renderMap();
|
||||
|
||||
#ifdef _DEBUG
|
||||
// Si el editor está activo, delegar el renderizado de entidades y statusbar
|
||||
if (MapEditor::get()->isActive()) {
|
||||
MapEditor::get()->render();
|
||||
Screen::get()->render();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Dibuja los elementos del juego en orden
|
||||
room_->renderEnemies();
|
||||
room_->renderItems();
|
||||
if (mode_ == Mode::GAME) {
|
||||
|
||||
Reference in New Issue
Block a user