0573022b7c
Crea core/system/DebugOverlay como sistema global propiedad del Director
que muestra FPS y estado de VSync en la esquina superior izquierda usando
VectorText. Visible por defecto en builds debug, oculto en release; F11
alterna.
Cambios:
- Nuevo DebugOverlay con su propio contador de FPS interno (cadencia 0.5s).
El cálculo que vivía en SDLManager::updateFPS se mueve aquí.
- Director construye el overlay una vez y lo pasa a runFrameLoop. F11 se
intercepta directamente en el event loop del Director (no en
GlobalEvents para no acoplar la firma a la presencia del overlay).
- Limpieza de SDLManager: fuera updateFPS, updateColors (era no-op desde
Fase 8c), setWindowTitle (no se usaba) y los campos fps_*.
- Título de ventana estático estilo CCAE:
© 2026 Orni Attack — JailDesigner
Ya no se reescribe cada 0.5s con FPS y VSync; ese estado vive en el
overlay.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "scene_context.hpp"
|
|
|
|
class Scene;
|
|
class SDLManager;
|
|
namespace System { class DebugOverlay; }
|
|
|
|
class Director {
|
|
public:
|
|
explicit Director(std::vector<std::string> const& args);
|
|
~Director();
|
|
|
|
auto run() -> int; // Main game loop
|
|
|
|
private:
|
|
std::string executable_path_;
|
|
std::string system_folder_;
|
|
|
|
static 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);
|
|
};
|