// coordinate_transform.hpp - Transformació de coordenades lògiques a físiques
// © 2025 Port a C++20 con SDL3

#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 int transform_x(int logical_x, float scale) {
    return static_cast<int>(std::round(logical_x * scale));
}

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

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

inline int transform_y(int logical_y) {
    return transform_y(logical_y, g_current_scale_factor);
}

}  // namespace Rendering
