Files

1.4 KiB

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

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

// Al entrar en COMPLETED state
eventSystem.scheduleEvent(6.0f, []{ startCelebrations(); });
eventSystem.scheduleEvent(14.0f, []{ endCelebrations(); });

Opción 3: Flags como miembros privados

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"