# TODO ## Tareas pendientes - [ ] Revisar todas las variables static de los métodos para ver si se resetean correctamente ## Mejoras arquitecturales (refactoring) ### Eliminar variables static locales y usar patrones profesionales: **Opción 1: Máquina de Estados** ```cpp class GameCompletedState { bool start_celebrations_done = false; bool end_celebrations_done = false; float timer = 0.0f; public: void reset() { start_celebrations_done = false; end_celebrations_done = false; timer = 0.0f; } void update(float deltaTime) { timer += deltaTime; // lógica aquí } }; ``` **Opción 2: Sistema de Eventos/Callbacks** ```cpp // Al entrar en COMPLETED state eventSystem.scheduleEvent(6.0f, []{ startCelebrations(); }); eventSystem.scheduleEvent(14.0f, []{ endCelebrations(); }); ``` **Opción 3: Flags como miembros privados** ```cpp class Game { private: struct GameOverState { bool game_over_triggered = false; bool start_celebrations_triggered = false; bool end_celebrations_triggered = false; void reset() { game_over_triggered = false; start_celebrations_triggered = false; end_celebrations_triggered = false; } } game_over_state_; }; ``` **Ventajas:** - Más fáciles de testear - Más fáciles de debugear - Más fáciles de entender y mantener - No tienen "estado oculto"