Files @ r1898:6a2625c2cc60
Branch filter:

Location: cpp/openttd-patchpack/source/tile.h - annotation

tron
(svn r2404) assert that GetTileOwner() isn't called for tiles, which don't store owner information
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1394:275bd5541bae
r1209:5955f8748394
r1209:5955f8748394
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1214:2ed99b1b4b97
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1749:454305d15787
r1211:0ff891861c37
r1211:0ff891861c37
r1211:0ff891861c37
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
r1852:c5d43d1bd1e7
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1852:c5d43d1bd1e7
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1209:5955f8748394
r1214:2ed99b1b4b97
r1209:5955f8748394
r1209:5955f8748394
r1852:c5d43d1bd1e7
r1209:5955f8748394
r1209:5955f8748394
r1214:2ed99b1b4b97
r1209:5955f8748394
r1209:5955f8748394
r1852:c5d43d1bd1e7
r1209:5955f8748394
r1209:5955f8748394
r1214:2ed99b1b4b97
r1209:5955f8748394
r1214:2ed99b1b4b97
r1209:5955f8748394
r1209:5955f8748394
r1333:355c6f6f2cbf
r1330:62eaa061ec97
r1333:355c6f6f2cbf
r1898:6a2625c2cc60
r1898:6a2625c2cc60
r1898:6a2625c2cc60
r1898:6a2625c2cc60
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1330:62eaa061ec97
r1209:5955f8748394
#ifndef TILE_H
#define TILE_H

#include "macros.h"
#include "map.h"

typedef enum TileType {
	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;

/* XXX: This should be moved out to a new file (rail.h) along with some other
 * cleanups. I'll do that after 0.4) */
typedef enum {
	RAILTYPE_RAIL   = 0,
	RAILTYPE_MONO   = 1,
	RAILTYPE_MAGLEV = 2,
	RAILTYPE_END,
	RAILTYPE_MASK   = 0x3,
	INVALID_RAILTYPE = 0xFF,
} RailType;


void SetMapExtraBits(TileIndex tile, byte flags);
uint GetMapExtraBits(TileIndex tile);

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(_map_type_and_height[tile], 0, 4);
}

static inline void SetTileHeight(TileIndex tile, uint height)
{
	assert(tile < MapSize());
	assert(height < 16);
	SB(_map_type_and_height[tile], 0, 4, height);
}

static inline uint TilePixelHeight(TileIndex tile)
{
	return TileHeight(tile) * 8;
}

static inline TileType GetTileType(TileIndex tile)
{
	assert(tile < MapSize());
	return GB(_map_type_and_height[tile], 4, 4);
}

static inline void SetTileType(TileIndex tile, TileType type)
{
	assert(tile < MapSize());
	SB(_map_type_and_height[tile], 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 _map_owner[tile];
}

static inline bool IsTileOwner(TileIndex tile, Owner owner)
{
	return GetTileOwner(tile) == owner;
}

#endif