# 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"