47 lines
1.6 KiB
C++
47 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "core/defaults.hpp"
|
|
|
|
// Aliases utilitzats per simplificar lectures freqüents de Defaults::
|
|
|
|
namespace Constants {
|
|
// Límits de objectes
|
|
constexpr int MAX_ORNIS = Defaults::Entities::MAX_ORNIS;
|
|
constexpr int MAX_BULLETS = Defaults::Entities::MAX_BULLETS;
|
|
|
|
// Matemàtiques
|
|
constexpr float PI = Defaults::Math::PI;
|
|
|
|
// Helpers per comprovar límits de zone
|
|
inline auto isInPlayArea(float x, float y) -> bool {
|
|
const SDL_FPoint POINT = {x, y};
|
|
return SDL_PointInRectFloat(&POINT, &Defaults::Zones::PLAYAREA);
|
|
}
|
|
|
|
inline void getPlayAreaBounds(float& min_x, float& max_x, float& min_y, float& max_y) {
|
|
const auto& zone = Defaults::Zones::PLAYAREA;
|
|
min_x = zone.x;
|
|
max_x = zone.x + zone.w;
|
|
min_y = zone.y;
|
|
max_y = zone.y + zone.h;
|
|
}
|
|
|
|
// Obtenir límits segurs (compensant radius de l'entidad)
|
|
inline void getSafePlayAreaBounds(float radius, float& min_x, float& max_x, float& min_y, float& max_y) {
|
|
const auto& zone = Defaults::Zones::PLAYAREA;
|
|
constexpr float SAFETY_MARGIN = 10.0F; // Safety margin
|
|
|
|
min_x = zone.x + radius + SAFETY_MARGIN;
|
|
max_x = zone.x + zone.w - radius - SAFETY_MARGIN;
|
|
min_y = zone.y + radius + SAFETY_MARGIN;
|
|
max_y = zone.y + zone.h - radius - SAFETY_MARGIN;
|
|
}
|
|
|
|
// Obtenir centro de l'àrea de juego
|
|
inline void getPlayAreaCenter(float& center_x, float& center_y) {
|
|
const auto& zone = Defaults::Zones::PLAYAREA;
|
|
center_x = zone.x + (zone.w / 2.0F);
|
|
center_y = zone.y + (zone.h / 2.0F);
|
|
}
|
|
} // namespace Constants
|