4e5ab6be1d
Métodos privados que no consultan estado de la instancia pasan a 'static' en la declaración del header. Las definiciones en el .cpp pierden el 'const' trailing (incompatible con static). Cero callsites afectados: las llamadas via 'this->method()' o sin qualifier siguen siendo válidas para métodos estáticos. Aplicado en: - Shape: trim, startsWith, extractValue, parsePoints. - VectorText: getShapeFilename, get_text_width, get_text_height. - Pack: readFile, calculateChecksum, encryptData. - DebrisManager: computeExplosionDirection. - Enemy: attemptSafeSpawn. - LogoScene / TitleScene: checkSkipButtonPressed (consulta Input singleton). - SpawnController: get_enemics_vius. - StageManager: processPlaying. - ShipAnimator: updateEntering, updateFloating, updateExiting, configureShipP1, configureShipP2, computeOffscreenPosition. - Director: run (los miembros executable_path_ / system_folder_ se fijan en el ctor y no se vuelven a leer en el loop principal). Verificado previamente con grep que ningún '&Class::method' los usa como function pointer (cambiar a estático cambiaría su tipo). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.6 KiB
C++
45 lines
1.6 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();
|
|
|
|
// Main game loop. Estático: los miembros del Director (executable_path_,
|
|
// system_folder_) se establecen en el ctor y no se vuelven a leer aquí;
|
|
// el bucle solo orquesta sistemas globales (SDLManager, Options, Audio).
|
|
static auto run() -> int;
|
|
|
|
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);
|
|
};
|