329ae7a38e
Pas 7 final del hallazgo #28. La capa de game/options havia esdevingut exclusivament una capa de persistència YAML que llegia i escrivia Config::EngineConfig. El nom "Options" no reflectia bé aquest rol. Canvis: - Renomenats fitxers: game/options.{hpp,cpp} → game/config_yaml.{hpp,cpp} (preservant la història de git via mv). - Renomenat namespace: Options → ConfigYaml. - Esborrades del .hpp les referències-alias inline (window, rendering, player1, player2, keyboard_controls, gamepad_controls, console) que ja no tenien call-sites externs (només existien per a la transició). El .hpp ara només exposa engine_config + version + path + funcions. - A config_yaml.cpp s'introdueixen aliases internes (anonymous namespace) per mantenir llegible el codi de la implementació, sense exposar-les. - Actualitzat main.cpp per a usar ConfigYaml::*. - Actualitzats els comentaris stale a sdl_manager.hpp, director.hpp, engine_config.hpp i audio.hpp. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "core/config/engine_config.hpp"
|
|
#include "scene_context.hpp"
|
|
|
|
class Scene;
|
|
class SDLManager;
|
|
namespace System {
|
|
class DebugOverlay;
|
|
}
|
|
|
|
class Director {
|
|
public:
|
|
// `cfg` ha de viure tant com el Director (típicament owned per main).
|
|
// `persistence` encapsula init/load/save delegats a la capa concreta
|
|
// (game/ConfigYaml::*).
|
|
Director(std::vector<std::string> const& args,
|
|
Config::EngineConfig& cfg,
|
|
Config::ConfigPersistence persistence);
|
|
~Director();
|
|
|
|
// Bucle principal del juego.
|
|
auto run() -> int;
|
|
|
|
private:
|
|
std::string executable_path_;
|
|
std::string system_folder_;
|
|
Config::EngineConfig* cfg_;
|
|
Config::ConfigPersistence persistence_;
|
|
|
|
auto checkProgramArguments(std::vector<std::string> const& args)
|
|
-> std::string;
|
|
void createSystemFolder(const std::string& folder);
|
|
|
|
// Construye la escena correspondiente al tipo solicitado. Retorna
|
|
// nullptr para EXIT u otros valores no constructibles.
|
|
static auto buildScene(SceneManager::SceneContext::SceneType type,
|
|
SDLManager& sdl,
|
|
SceneManager::SceneContext& context)
|
|
-> std::unique_ptr<Scene>;
|
|
|
|
// Ejecuta el bucle de frames de UNA escena hasta que scene.isFinished()
|
|
// sea true. Maneja delta_time, eventos (globales + escena), update y draw.
|
|
// El debug_overlay es global a todas las escenas; el Director lo posee.
|
|
static void runFrameLoop(Scene& scene, SDLManager& sdl, SceneManager::SceneContext& context, System::DebugOverlay& debug_overlay);
|
|
};
|