Files
@ r1163:d8572c1748d6
Branch filter:
Location: cpp/openttd-patchpack/source/map.h - annotation
r1163:d8572c1748d6
2.7 KiB
text/x-c
(svn r1665) Remove VERBOSE flag, because it was only partially implemented
Add "info" target instead, which prints out some relevant variables used in the Makefile
Add "info" target instead, which prints out some relevant variables used in the Makefile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | r679:3a7b08cc8504 r679:3a7b08cc8504 r679:3a7b08cc8504 r927:dedf35f80507 r927:dedf35f80507 r679:3a7b08cc8504 r979:ce13d8138fa3 r926:fcf36609eb94 r817:5620a6b29ae5 r817:5620a6b29ae5 r817:5620a6b29ae5 r817:5620a6b29ae5 r817:5620a6b29ae5 r817:5620a6b29ae5 r817:5620a6b29ae5 r679:3a7b08cc8504 r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r689:c33ae44e7bfc r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r926:fcf36609eb94 r900:6c526ed4f41b r900:6c526ed4f41b r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r909:898755bd4512 r900:6c526ed4f41b r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r955:63797b6ea518 r900:6c526ed4f41b r900:6c526ed4f41b r909:898755bd4512 r900:6c526ed4f41b r900:6c526ed4f41b r909:898755bd4512 r900:6c526ed4f41b r900:6c526ed4f41b r1035:d35ec5ea5f73 r1044:d63b879a32db r1044:d63b879a32db r1044:d63b879a32db r1044:d63b879a32db r1044:d63b879a32db r1044:d63b879a32db r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1041:861c81f15ca0 r1035:d35ec5ea5f73 r1044:d63b879a32db r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1059:bbcabb62c19c r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r1035:d35ec5ea5f73 r679:3a7b08cc8504 | #ifndef MAP_H
#define MAP_H
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << MapLogX()) + ((x) >> 4))
#define TILE_XY(x,y) (int)(((y) << MapLogX()) + (x))
#define TILE_MASK(x) ((x) & ((1 << (MapLogX() + MapLogY())) - 1))
extern byte _map_type_and_height[];
extern byte _map5[];
extern byte _map3_lo[];
extern byte _map3_hi[];
extern byte _map_owner[];
extern uint16 _map2[];
extern byte _map_extra_bits[];
// binary logarithm of the map size, try to avoid using this one
static inline uint MapLogX(void) { extern uint _map_log_x; return _map_log_x; }
static inline uint MapLogY(void) { extern uint _map_log_y; return _map_log_y; }
/* The size of the map */
static inline uint MapSizeX(void) { return 1 << MapLogX(); }
static inline uint MapSizeY(void) { return 1 << MapLogY(); }
/* The maximum coordinates */
static inline uint MapMaxX(void) { return MapSizeX() - 1; }
static inline uint MapMaxY(void) { return MapSizeY() - 1; }
/* The number of tiles in the map */
static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
typedef uint16 TileIndex;
static inline uint TileX(TileIndex tile)
{
return tile & MapMaxX();
}
static inline uint TileY(TileIndex tile)
{
return tile >> MapLogX();
}
typedef int16 TileIndexDiff;
typedef struct TileIndexDiffC {
int16 x;
int16 y;
} TileIndexDiffC;
static inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc)
{
return (tidc.y << MapLogX()) + tidc.x;
}
#ifndef _DEBUG
#define TILE_ADD(x,y) ((x) + (y))
#else
extern TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
const char *exp, const char *file, int line);
#define TILE_ADD(x, y) (TileAdd((x), (y), #x " + " #y, __FILE__, __LINE__))
#endif
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TILE_XY(x, y))
static inline TileIndexDiff TileOffsByDir(uint dir)
{
extern const TileIndexDiffC _tileoffs_by_dir[4];
assert(dir < lengthof(_tileoffs_by_dir));
return ToTileIndexDiff(_tileoffs_by_dir[dir]);
}
static inline uint TileHeight(TileIndex tile)
{
assert(tile < MapSize());
return _map_type_and_height[tile] & 0xf;
}
static inline void SetTileHeight(TileIndex tile, uint height)
{
assert(tile < MapSize());
assert(height < 16);
_map_type_and_height[tile] &= ~0x0F;
_map_type_and_height[tile] |= height;
}
static inline uint TilePixelHeight(TileIndex tile)
{
return TileHeight(tile) * 8;
}
static inline int TileType(TileIndex tile)
{
assert(tile < MapSize());
return _map_type_and_height[tile] >> 4;
}
static inline void SetTileType(TileIndex tile, uint type)
{
assert(tile < MapSize());
_map_type_and_height[tile] &= ~0xF0;
_map_type_and_height[tile] |= type << 4;
}
static inline bool IsTileType(TileIndex tile, int type)
{
return TileType(tile) == type;
}
#endif
|