// coordinate_transform.hpp - Transformació de coordenades lògiques a físiques
// © 2026 JailDesigner

#pragma once

#include <cmath>

namespace Rendering {

// Factor de scale global (actualitzat cada frame per SDLManager)
extern float g_current_scale_factor;

// Transforma coordenada lógica a física con arrodoniment
inline auto transformX(int logical_x, float scale) -> int {
    return static_cast<int>(std::round(logical_x * scale));
}

inline auto transformY(int logical_y, float scale) -> int {
    return static_cast<int>(std::round(logical_y * scale));
}

// Variant que usa el factor de scale global
inline auto transformX(int logical_x) -> int {
    return transformX(logical_x, g_current_scale_factor);
}

inline auto transformY(int logical_y) -> int {
    return transformY(logical_y, g_current_scale_factor);
}

}  // namespace Rendering
