#pragma once #include "core/defaults.hpp" // Aliases para backward compatibility con codi existent // Permet usar Constants::MARGIN_LEFT en lloc de Defaults::Game::MARGIN_LEFT namespace Constants { // Márgenes de l'àrea de juego (derivats de Defaults::Zones::GAME) constexpr int MARGIN_LEFT = static_cast(Defaults::Zones::PLAYAREA.x); constexpr int MARGIN_RIGHT = static_cast(Defaults::Zones::PLAYAREA.x + Defaults::Zones::PLAYAREA.w); constexpr int MARGIN_TOP = static_cast(Defaults::Zones::PLAYAREA.y); constexpr int MARGIN_BOTTOM = static_cast(Defaults::Zones::PLAYAREA.y + Defaults::Zones::PLAYAREA.h); // Límits de objectes constexpr int MAX_ORNIS = Defaults::Entities::MAX_ORNIS; constexpr int MAX_BALES = Defaults::Entities::MAX_BALES; // Velocitats (valors legacy del codi Pascal) constexpr int VELOCITAT = static_cast(Defaults::Physics::ENEMY_SPEED); constexpr int VELOCITAT_MAX = static_cast(Defaults::Physics::BULLET_SPEED); // Matemàtiques constexpr float PI = Defaults::Math::PI; // Helpers per comprovar límits de zona inline auto dins_zona_joc(float x, float y) -> bool { const SDL_FPoint point = {x, y}; return SDL_PointInRectFloat(&point, &Defaults::Zones::PLAYAREA); } inline void obtenir_limits_zona(float& min_x, float& max_x, float& min_y, float& max_y) { const auto& zona = Defaults::Zones::PLAYAREA; min_x = zona.x; max_x = zona.x + zona.w; min_y = zona.y; max_y = zona.y + zona.h; } // Obtenir límits segurs (compensant radi de l'entidad) inline void obtenir_limits_zona_segurs(float radi, float& min_x, float& max_x, float& min_y, float& max_y) { const auto& zona = Defaults::Zones::PLAYAREA; constexpr float MARGE_SEGURETAT = 10.0F; // Safety margin min_x = zona.x + radi + MARGE_SEGURETAT; max_x = zona.x + zona.w - radi - MARGE_SEGURETAT; min_y = zona.y + radi + MARGE_SEGURETAT; max_y = zona.y + zona.h - radi - MARGE_SEGURETAT; } // Obtenir centro de l'àrea de juego inline void obtenir_centre_zona(float& centre_x, float& centre_y) { const auto& zona = Defaults::Zones::PLAYAREA; centre_x = zona.x + (zona.w / 2.0F); centre_y = zona.y + (zona.h / 2.0F); } } // namespace Constants