30#ifndef HORIZON_ZONE_GAME_MAP_COORDINATES_HPP
31#define HORIZON_ZONE_GAME_MAP_COORDINATES_HPP
37template <
int16_t MAX_COORDINATES>
63 return (
_x == right.
_x &&
_y == right.
_y);
68 return !(*
this == right);
81 template <
int16_t BOUNDS>
84 int x_diff =
_x - bounds.
x();
85 int y_diff =
_y - bounds.
y();
87 return abs(x_diff) <= range && abs(y_diff) <= range;
90 template<
int16_t BOUNDS>
93 int x = std::max(0, std::min((
_x + range), (
int) BOUNDS));
94 int y = std::max(0, std::min((
_y + range), (
int) BOUNDS));
100 template<
int16_t BOUNDS>
103 int distance = std::sqrt(std::pow(bounds.
x() -
_x, 2) + std::pow(bounds.
y() -
_y, 2));
107 template<
int16_t BLOCK_SIZE,
int16_t BLOCK_COUNT>
110 int x =
_x / BLOCK_SIZE;
111 int y =
_y / BLOCK_SIZE;
113 assert(
x < BLOCK_COUNT &&
y < BLOCK_COUNT);
114 assert(
x >= 0 &&
y >= 0);
119 int16_t
x()
const {
return _x; }
120 int16_t
y()
const {
return _y; }
126 if (
_x + val < MAX_COORDINATES)
129 _x = MAX_COORDINATES - 1;
142 if (
_y + val < MAX_COORDINATES)
145 _y = MAX_COORDINATES - 1;
158 return _x < MAX_COORDINATES &&
_y < MAX_COORDINATES;
Definition: Coordinates.hpp:39
Coordinates< MAX_COORDINATES > operator-(Coordinates< MAX_COORDINATES > const &right) const
Definition: Coordinates.hpp:76
int16_t _x
Definition: Coordinates.hpp:162
int16_t y() const
Definition: Coordinates.hpp:120
bool operator==(Coordinates< MAX_COORDINATES > const &right) const
Definition: Coordinates.hpp:61
Coordinates< BLOCK_COUNT > scale() const
Definition: Coordinates.hpp:108
void dec_x(int16_t val)
Definition: Coordinates.hpp:132
int16_t _move_cost
Definition: Coordinates.hpp:164
bool is_within_range(Coordinates< BOUNDS > const &bounds, int range) const
Definition: Coordinates.hpp:82
Coordinates(int16_t x=0, int16_t y=0)
Definition: Coordinates.hpp:41
Coordinates(const Coordinates< MAX_COORDINATES > &obj)
Definition: Coordinates.hpp:47
void dec_y(int16_t val)
Definition: Coordinates.hpp:148
int16_t _y
Definition: Coordinates.hpp:163
bool operator!=(Coordinates< MAX_COORDINATES > const &right) const
Definition: Coordinates.hpp:66
Coordinates< BOUNDS > at_range(int range) const
Definition: Coordinates.hpp:91
bool valid() const
Definition: Coordinates.hpp:156
Coordinates< MAX_COORDINATES > operator+(Coordinates< MAX_COORDINATES > const &right) const
Definition: Coordinates.hpp:71
void inc_y(int16_t val)
Definition: Coordinates.hpp:140
int distance_from(Coordinates< BOUNDS > const &bounds) const
Definition: Coordinates.hpp:101
void inc_x(int16_t val)
Definition: Coordinates.hpp:124
Coordinates< MAX_COORDINATES > operator=(const Coordinates< MAX_COORDINATES > &right)
Definition: Coordinates.hpp:53
int16_t move_cost() const
Definition: Coordinates.hpp:121
int16_t x() const
Definition: Coordinates.hpp:119
void set_move_cost(int16_t move_cost)
Definition: Coordinates.hpp:122