Codechange: hide the map's size related fields in the Map structure

This commit is contained in:
Rubidium
2023-01-21 12:14:28 +01:00
committed by rubidium42
parent de6bc8e692
commit 7cdc23fd64
6 changed files with 44 additions and 33 deletions

View File

@@ -35,6 +35,15 @@ extern TileExtended *_me;
* Size related data of the map.
*/
struct Map {
private:
static uint log_x; ///< 2^_map_log_x == _map_size_x
static uint log_y; ///< 2^_map_log_y == _map_size_y
static uint size_x; ///< Size of the map along the X
static uint size_y; ///< Size of the map along the Y
static uint size; ///< The number of tiles on the map
static uint tile_mask; ///< _map_size - 1 (to mask the mapsize)
public:
static void Allocate(uint size_x, uint size_y);
/**
@@ -44,8 +53,7 @@ struct Map {
*/
static inline uint LogX()
{
extern uint _map_log_x;
return _map_log_x;
return Map::log_x;
}
/**
@@ -55,8 +63,7 @@ struct Map {
*/
static inline uint LogY()
{
extern uint _map_log_y;
return _map_log_y;
return Map::log_y;
}
/**
@@ -65,8 +72,7 @@ struct Map {
*/
static inline uint SizeX()
{
extern uint _map_size_x;
return _map_size_x;
return Map::size_x;
}
/**
@@ -75,8 +81,7 @@ struct Map {
*/
static inline uint SizeY()
{
extern uint _map_size_y;
return _map_size_y;
return Map::size_y;
}
/**
@@ -85,8 +90,7 @@ struct Map {
*/
static inline uint Size()
{
extern uint _map_size;
return _map_size;
return Map::size;
}
/**
@@ -115,8 +119,7 @@ struct Map {
*/
static inline TileIndex WrapToMap(uint tile)
{
extern uint _map_tile_mask;
return tile & _map_tile_mask;
return tile & Map::tile_mask;
}
/**
@@ -145,9 +148,17 @@ struct Map {
* just half of it. */
return CeilDiv((n << Map::LogX()) + (n << Map::LogY()), 1 << 9);
}
};
static inline void AllocateMap(uint size_x, uint size_y) { Map::Allocate(size_x, size_y); }
/**
* Check whether the map has been initialized, as to not try to save the map
* during crashlog when the map is not there yet.
* @return true when the map has been allocated/initialized.
*/
static bool IsInitialized()
{
return _m != nullptr;
}
};
/**
* An offset value between two tiles.