Files
@ r3340:baed05973439
Branch filter:
Location: cpp/openttd-patchpack/source/tile.h - annotation
r3340:baed05973439
2.4 KiB
text/x-c
(svn r4124) - CodeChange: remove windows-specific code from initializing the random generator. There was no need for it.
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 | r2186:5ee653b1b5e1 r2186:5ee653b1b5e1 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1394:275bd5541bae r1209:5955f8748394 r1209:5955f8748394 r1944:ed1b90ae1557 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r2125:87ebf6378cb6 r1214:2ed99b1b4b97 r1214:2ed99b1b4b97 r3099:4c0775639e0c r1211:0ff891861c37 r1211:0ff891861c37 r1211:0ff891861c37 r3279:91e2701faa6f r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1394:275bd5541bae r1394:275bd5541bae r1394:275bd5541bae r1394:275bd5541bae r1394:275bd5541bae r1394:275bd5541bae r1394:275bd5541bae r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r2049:7e26d55f0f4c r1209:5955f8748394 r1209:5955f8748394 r2085:757cdc338c24 r2085:757cdc338c24 r2085:757cdc338c24 r2085:757cdc338c24 r2085:757cdc338c24 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r2049:7e26d55f0f4c r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1209:5955f8748394 r1214:2ed99b1b4b97 r1209:5955f8748394 r1209:5955f8748394 r2049:7e26d55f0f4c r1209:5955f8748394 r1209:5955f8748394 r1214:2ed99b1b4b97 r1209:5955f8748394 r1209:5955f8748394 r2900:9c35fe93f95b r2900:9c35fe93f95b r2900:9c35fe93f95b r2900:9c35fe93f95b r2900:9c35fe93f95b r2049:7e26d55f0f4c r1209:5955f8748394 r1209:5955f8748394 r1214:2ed99b1b4b97 r1209:5955f8748394 r1214:2ed99b1b4b97 r1209:5955f8748394 r1209:5955f8748394 r2125:87ebf6378cb6 r1333:355c6f6f2cbf r1330:62eaa061ec97 r1333:355c6f6f2cbf r1898:6a2625c2cc60 r1898:6a2625c2cc60 r1898:6a2625c2cc60 r1898:6a2625c2cc60 r2360:8cc52b4a45df r1330:62eaa061ec97 r1330:62eaa061ec97 r1902:cfc758cf1057 r1902:cfc758cf1057 r1902:cfc758cf1057 r1902:cfc758cf1057 r1902:cfc758cf1057 r1902:cfc758cf1057 r1902:cfc758cf1057 r2360:8cc52b4a45df r1902:cfc758cf1057 r1902:cfc758cf1057 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r1330:62eaa061ec97 r2436:963efe8b84cc | /* $Id$ */
#ifndef TILE_H
#define TILE_H
#include "macros.h"
#include "map.h"
typedef enum TileTypes {
MP_CLEAR,
MP_RAILWAY,
MP_STREET,
MP_HOUSE,
MP_TREES,
MP_STATION,
MP_WATER,
MP_VOID, // invisible tiles at the SW and SE border
MP_INDUSTRY,
MP_TUNNELBRIDGE,
MP_UNMOVABLE,
} TileType;
void SetMapExtraBits(TileIndex tile, byte flags);
uint GetMapExtraBits(TileIndex tile);
uint GetTileh(uint n, uint w, uint e, uint s, uint *h);
uint GetTileSlope(TileIndex tile, uint *h);
uint GetTileZ(TileIndex tile);
static inline bool CorrectZ(uint tileh)
{
/* tile height must be corrected if the north corner is not raised, but
* any other corner is. These are the cases 1 till 7 */
return IS_INT_INSIDE(tileh, 1, 8);
}
static inline uint TileHeight(TileIndex tile)
{
assert(tile < MapSize());
return GB(_m[tile].type_height, 0, 4);
}
static inline bool IsSteepTileh(uint tileh)
{
return (tileh & 0x10);
}
static inline void SetTileHeight(TileIndex tile, uint height)
{
assert(tile < MapSize());
assert(height < 16);
SB(_m[tile].type_height, 0, 4, height);
}
static inline uint TilePixelHeight(TileIndex tile)
{
return TileHeight(tile) * 8;
}
static inline TileType GetTileType(TileIndex tile)
{
assert(tile < MapSize());
return GB(_m[tile].type_height, 4, 4);
}
static inline void SetTileType(TileIndex tile, TileType type)
{
assert(tile < MapSize());
/* Allow only MP_VOID to be set to border tiles. This code is put here since
* it seems there is a bug that violates this somewhere. (Formely know as
* the "old ship pf" bug, which presented a case in which this broke). It
* can be removed as soon as the bug is squashed. */
assert((TileX(tile) < MapMaxX() && TileY(tile) < MapMaxY()) || type == MP_VOID);
SB(_m[tile].type_height, 4, 4, type);
}
static inline bool IsTileType(TileIndex tile, TileType type)
{
return GetTileType(tile) == type;
}
static inline Owner GetTileOwner(TileIndex tile)
{
assert(tile < MapSize());
assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_VOID));
assert(!IsTileType(tile, MP_INDUSTRY));
return _m[tile].m1;
}
static inline void SetTileOwner(TileIndex tile, Owner owner)
{
assert(tile < MapSize());
assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_VOID));
assert(!IsTileType(tile, MP_INDUSTRY));
_m[tile].m1 = owner;
}
static inline bool IsTileOwner(TileIndex tile, Owner owner)
{
return GetTileOwner(tile) == owner;
}
#endif /* TILE_H */
|