// debug_overlay.hpp - Overlay de debug (FPS + VSync) toggleable con F11
// © 2025 Orni Attack
//
// Sistema global propiedad del Director. Se actualiza y dibuja cada frame
// después de la escena (queda on top). En builds debug arranca visible,
// en release oculto. F11 alterna visibilidad.

#pragma once

#include "core/graphics/vector_text.hpp"
#include "core/rendering/render_context.hpp"

namespace System {

class DebugOverlay {
    public:
        explicit DebugOverlay(Rendering::Renderer* renderer);

        // Acumula FPS. Llamar una vez por frame con el delta del Director.
        void update(float delta_time);

        // Pinta el overlay si está visible. Posición esquina sup-izq.
        void draw() const;

        void toggle() { visible_ = !visible_; }
        [[nodiscard]] auto isVisible() const -> bool { return visible_; }

    private:
        Graphics::VectorText text_;
        bool visible_;

        // FPS counter — se actualiza cada FPS_UPDATE_INTERVAL segundos.
        float fps_accumulator_;
        int fps_frame_count_;
        int fps_display_;
};

}  // namespace System
