#pragma once

#ifdef _DEBUG

#include <SDL3/SDL.h>

#include <memory>  // Para shared_ptr
#include <string>  // Para string

class Surface;

class EditorStatusBar {
   public:
    explicit EditorStatusBar(std::string room_number);
    ~EditorStatusBar() = default;

    void render();
    void update(float delta_time);
    void setMouseTile(int tile_x, int tile_y);
    void setLine2(const std::string& text);
    void setLine3(const std::string& text);
    void setLine4(const std::string& text);
    void setLine5(const std::string& text);

   private:
    void fillTexture();  // Dibuja los elementos en la surface

    // Constantes de posición (en pixels dentro de la surface de 256x24)
    // Font 8bithud lowercase = 6px alto → 3 líneas con 8px de separación
    static constexpr float SURFACE_HEIGHT = 24.0F;  // 3 líneas de 8px
    static constexpr int LINE1_Y = 1;               // Room number + tile coords + extra
    static constexpr int LINE2_Y = 9;               // Propiedades de room / enemy info
    static constexpr int LINE3_Y = 17;              // Conexiones+items / enemy detail
    static constexpr int LEFT_X = 4;                // Margen izquierdo

    // Objetos
    std::shared_ptr<Surface> surface_;  // Surface donde dibujar la barra
    SDL_FRect surface_dest_{};          // Rectángulo destino en pantalla

    // Variables
    std::string room_number_;  // Número de la habitación
    int mouse_tile_x_{0};      // Coordenada X del ratón en tiles
    int mouse_tile_y_{0};      // Coordenada Y del ratón en tiles
    std::string line2_;        // Contenido de la línea 2
    std::string line3_;        // Contenido de la línea 3
    std::string line4_;        // Contenido de la línea 4 (mostrado en la línea 1 a la derecha)
    std::string line5_;        // Contenido de la línea 5 (mostrado en la línea 1 al centro)
};

#endif  // _DEBUG
