1
0
Fork 0

(svn r1718) Use the enum TileType as parameter/return type for [GS]etTileType() instead of plain int.

This makes it necessary to rename TileType() to GetTileType() because a type and a function may not share the same name.
release/0.4.5
tron 2005-01-29 15:12:40 +00:00
parent 797355cb7e
commit 97ae59fe1a
12 changed files with 47 additions and 44 deletions

View File

@ -19,7 +19,7 @@ static void DisasterClearSquare(TileIndex tile)
if (!EnsureNoVehicle(tile)) if (!EnsureNoVehicle(tile))
return; return;
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_RAILWAY: case MP_RAILWAY:
if (IS_HUMAN_PLAYER(_map_owner[tile])) DoClearSquare(tile); if (IS_HUMAN_PLAYER(_map_owner[tile])) DoClearSquare(tile);
break; break;

View File

@ -857,7 +857,7 @@ static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5,
static bool IsBadFarmFieldTile(TileIndex tile) static bool IsBadFarmFieldTile(TileIndex tile)
{ {
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_CLEAR: { case MP_CLEAR: {
byte m5 = _map5[tile] & 0x1C; byte m5 = _map5[tile] & 0x1C;
return m5 == 0xC || m5 == 0x10; return m5 == 0xC || m5 == 0x10;
@ -873,7 +873,7 @@ static bool IsBadFarmFieldTile(TileIndex tile)
static bool IsBadFarmFieldTile2(TileIndex tile) static bool IsBadFarmFieldTile2(TileIndex tile)
{ {
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_CLEAR: { case MP_CLEAR: {
byte m5 = _map5[tile] & 0x1C; byte m5 = _map5[tile] & 0x1C;
return m5 == 0x10; return m5 == 0x10;

View File

@ -87,7 +87,7 @@ void FindLandscapeHeightByTile(TileInfo *ti, TileIndex tile)
ti->tile = tile; ti->tile = tile;
ti->map5 = _map5[tile]; ti->map5 = _map5[tile];
ti->type = TileType(tile); ti->type = GetTileType(tile);
ti->tileh = GetTileSlope(tile, &ti->z); ti->tileh = GetTileSlope(tile, &ti->z);
} }
@ -288,28 +288,28 @@ void DoClearSquare(uint tile)
uint32 GetTileTrackStatus(uint tile, TransportType mode) uint32 GetTileTrackStatus(uint tile, TransportType mode)
{ {
return _tile_type_procs[TileType(tile)]->get_tile_track_status_proc(tile, mode); return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode);
} }
void ChangeTileOwner(uint tile, byte old_player, byte new_player) void ChangeTileOwner(uint tile, byte old_player, byte new_player)
{ {
_tile_type_procs[TileType(tile)]->change_tile_owner_proc(tile, old_player, new_player); _tile_type_procs[GetTileType(tile)]->change_tile_owner_proc(tile, old_player, new_player);
} }
void GetAcceptedCargo(uint tile, AcceptedCargo ac) void GetAcceptedCargo(uint tile, AcceptedCargo ac)
{ {
memset(ac, 0, sizeof(AcceptedCargo)); memset(ac, 0, sizeof(AcceptedCargo));
_tile_type_procs[TileType(tile)]->get_accepted_cargo_proc(tile, ac); _tile_type_procs[GetTileType(tile)]->get_accepted_cargo_proc(tile, ac);
} }
void AnimateTile(uint tile) void AnimateTile(uint tile)
{ {
_tile_type_procs[TileType(tile)]->animate_tile_proc(tile); _tile_type_procs[GetTileType(tile)]->animate_tile_proc(tile);
} }
void ClickTile(uint tile) void ClickTile(uint tile)
{ {
_tile_type_procs[TileType(tile)]->click_tile_proc(tile); _tile_type_procs[GetTileType(tile)]->click_tile_proc(tile);
} }
void DrawTile(TileInfo *ti) void DrawTile(TileInfo *ti)
@ -319,7 +319,7 @@ void DrawTile(TileInfo *ti)
void GetTileDesc(uint tile, TileDesc *td) void GetTileDesc(uint tile, TileDesc *td)
{ {
_tile_type_procs[TileType(tile)]->get_tile_desc_proc(tile, td); _tile_type_procs[GetTileType(tile)]->get_tile_desc_proc(tile, td);
} }
/* Clear a piece of landscape /* Clear a piece of landscape
@ -333,7 +333,7 @@ int32 CmdLandscapeClear(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x,y); tile = TILE_FROM_XY(x,y);
return _tile_type_procs[TileType(tile)]->clear_tile_proc(tile, flags); return _tile_type_procs[GetTileType(tile)]->clear_tile_proc(tile, flags);
} }
// p1 = end tile // p1 = end tile
@ -446,7 +446,7 @@ void RunTileLoop(void)
assert( (tile & ~TILELOOP_ASSERTMASK) == 0); assert( (tile & ~TILELOOP_ASSERTMASK) == 0);
count = (MapSizeX() / TILELOOP_SIZE) * (MapSizeY() / TILELOOP_SIZE); count = (MapSizeX() / TILELOOP_SIZE) * (MapSizeY() / TILELOOP_SIZE);
do { do {
_tile_type_procs[TileType(tile)]->tile_loop_proc(tile); _tile_type_procs[GetTileType(tile)]->tile_loop_proc(tile);
if (TileX(tile) < MapSizeX() - TILELOOP_SIZE) { if (TileX(tile) < MapSizeX() - TILELOOP_SIZE) {
tile += TILELOOP_SIZE; /* no overflow */ tile += TILELOOP_SIZE; /* no overflow */

View File

@ -185,7 +185,7 @@ static Order GetOrderCmdFromTile(Vehicle *v, uint tile)
// check depot first // check depot first
if (_patches.gotodepot) { if (_patches.gotodepot) {
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_RAILWAY: case MP_RAILWAY:
if (v->type == VEH_Train && _map_owner[tile] == _local_player) { if (v->type == VEH_Train && _map_owner[tile] == _local_player) {
if ((_map5[tile]&0xFC)==0xC0) { if ((_map5[tile]&0xFC)==0xC0) {
@ -228,6 +228,9 @@ static Order GetOrderCmdFromTile(Vehicle *v, uint tile)
order.station = GetDepotByTile(tile); order.station = GetDepotByTile(tile);
return order; return order;
} }
default:
break;
} }
} }

View File

@ -26,7 +26,7 @@ static bool HasTileRoadAt(uint tile, int i)
int mask; int mask;
byte b; byte b;
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_STREET: case MP_STREET:
b = _map5[tile]; b = _map5[tile];

View File

@ -298,7 +298,7 @@ static inline uint32 GetSmallMapCountoursPixels(uint tile)
{ {
uint t; uint t;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_TUNNELBRIDGE) { if (t == MP_TUNNELBRIDGE) {
t = _map5[tile]; t = _map5[tile];
if ((t & 0x80) == 0) t>>=1; if ((t & 0x80) == 0) t>>=1;
@ -328,7 +328,7 @@ static inline uint32 GetSmallMapVehiclesPixels(uint tile)
{ {
uint t; uint t;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_TUNNELBRIDGE) { if (t == MP_TUNNELBRIDGE) {
t = _map5[tile]; t = _map5[tile];
if ((t & 0x80) == 0) t>>=1; if ((t & 0x80) == 0) t>>=1;
@ -381,7 +381,7 @@ static inline uint32 GetSmallMapIndustriesPixels(uint tile)
{ {
int t; int t;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_INDUSTRY) { if (t == MP_INDUSTRY) {
byte color = _industry_smallmap_colors[_map5[tile]]; byte color = _industry_smallmap_colors[_map5[tile]];
return color + (color << 8) + (color << 16) + (color << 24); return color + (color << 8) + (color << 16) + (color << 24);
@ -414,7 +414,7 @@ static inline uint32 GetSmallMapRoutesPixels(uint tile)
int t; int t;
uint32 bits; uint32 bits;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_STATION) { if (t == MP_STATION) {
byte m5 = _map5[tile]; byte m5 = _map5[tile];
(bits = MKCOLOR(0x56565656), m5 < 8) || // 8 - railroad station (green) (bits = MKCOLOR(0x56565656), m5 < 8) || // 8 - railroad station (green)
@ -470,7 +470,7 @@ static inline uint32 GetSmallMapVegetationPixels(uint tile)
int i,t; int i,t;
uint32 bits; uint32 bits;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_CLEAR) { if (t == MP_CLEAR) {
i = (_map5[tile] & 0x1F) - 4; i = (_map5[tile] & 0x1F) - 4;
if (i >= 0) i = (i >> 2); if (i >= 0) i = (i >> 2);
@ -515,7 +515,7 @@ static inline uint32 GetSmallMapOwnerPixels(uint tile)
{ {
int t; int t;
t = TileType(tile); t = GetTileType(tile);
if (t == MP_HOUSE || _map_owner[tile] == OWNER_TOWN) { if (t == MP_HOUSE || _map_owner[tile] == OWNER_TOWN) {
t = 0x80; t = 0x80;
} else if (t == MP_INDUSTRY) { } else if (t == MP_INDUSTRY) {

View File

@ -436,7 +436,7 @@ void GetProductionAroundTiles(uint *produced, uint tile, int w, int h, int rad)
if (!(IS_INSIDE_1D(xc, x, w) && IS_INSIDE_1D(yc, y, h))) { if (!(IS_INSIDE_1D(xc, x, w) && IS_INSIDE_1D(yc, y, h))) {
GetProducedCargoProc *gpc; GetProducedCargoProc *gpc;
uint tile = TILE_XY(xc, yc); uint tile = TILE_XY(xc, yc);
gpc = _tile_type_procs[TileType(tile)]->get_produced_cargo_proc; gpc = _tile_type_procs[GetTileType(tile)]->get_produced_cargo_proc;
if (gpc != NULL) { if (gpc != NULL) {
cargos[0] = cargos[1] = 0xFF; cargos[0] = cargos[1] = 0xFF;
gpc(tile, cargos); gpc(tile, cargos);

22
tile.h
View File

@ -3,6 +3,20 @@
#include "map.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;
void SetMapExtraBits(TileIndex tile, byte flags); void SetMapExtraBits(TileIndex tile, byte flags);
uint GetMapExtraBits(TileIndex tile); uint GetMapExtraBits(TileIndex tile);
@ -25,22 +39,22 @@ static inline uint TilePixelHeight(TileIndex tile)
return TileHeight(tile) * 8; return TileHeight(tile) * 8;
} }
static inline int TileType(TileIndex tile) static inline TileType GetTileType(TileIndex tile)
{ {
assert(tile < MapSize()); assert(tile < MapSize());
return _map_type_and_height[tile] >> 4; return _map_type_and_height[tile] >> 4;
} }
static inline void SetTileType(TileIndex tile, uint type) static inline void SetTileType(TileIndex tile, TileType type)
{ {
assert(tile < MapSize()); assert(tile < MapSize());
_map_type_and_height[tile] &= ~0xF0; _map_type_and_height[tile] &= ~0xF0;
_map_type_and_height[tile] |= type << 4; _map_type_and_height[tile] |= type << 4;
} }
static inline bool IsTileType(TileIndex tile, int type) static inline bool IsTileType(TileIndex tile, TileType type)
{ {
return TileType(tile) == type; return GetTileType(tile) == type;
} }
#endif #endif

View File

@ -2079,7 +2079,7 @@ static int GetDirectionToVehicle(Vehicle *v, int x, int y)
/* Check if the vehicle is compatible with the specified tile */ /* Check if the vehicle is compatible with the specified tile */
static bool CheckCompatibleRail(const Vehicle *v, TileIndex tile) static bool CheckCompatibleRail(const Vehicle *v, TileIndex tile)
{ {
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_RAILWAY: case MP_RAILWAY:
case MP_STATION: case MP_STATION:
// normal tracks, jump to owner check // normal tracks, jump to owner check

14
ttd.h
View File

@ -86,20 +86,6 @@ enum SwitchModes {
SM_START_SCENARIO = 10, SM_START_SCENARIO = 10,
}; };
enum MapTileTypes {
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
};
typedef enum TransportTypes { typedef enum TransportTypes {
/* These constants are for now linked to the representation of bridges /* These constants are for now linked to the representation of bridges
* and tunnels, so they can be used by GetTileTrackStatus_TunnelBridge * and tunnels, so they can be used by GetTileTrackStatus_TunnelBridge

View File

@ -1733,13 +1733,13 @@ byte GetDirectionTowards(Vehicle *v, int x, int y)
uint32 VehicleEnterTile(Vehicle *v, uint tile, int x, int y) uint32 VehicleEnterTile(Vehicle *v, uint tile, int x, int y)
{ {
uint old_tile = v->tile; uint old_tile = v->tile;
uint32 result = _tile_type_procs[TileType(tile)]->vehicle_enter_tile_proc(v, tile, x, y); uint32 result = _tile_type_procs[GetTileType(tile)]->vehicle_enter_tile_proc(v, tile, x, y);
/* When vehicle_enter_tile_proc returns 8, that apparently means that /* When vehicle_enter_tile_proc returns 8, that apparently means that
* we cannot enter the tile at all. In that case, don't call * we cannot enter the tile at all. In that case, don't call
* leave_tile. */ * leave_tile. */
if (!(result & 8) && old_tile != tile) { if (!(result & 8) && old_tile != tile) {
VehicleLeaveTileProc *proc = _tile_type_procs[TileType(old_tile)]->vehicle_leave_tile_proc; VehicleLeaveTileProc *proc = _tile_type_procs[GetTileType(old_tile)]->vehicle_leave_tile_proc;
if (proc != NULL) if (proc != NULL)
proc(v, old_tile, x, y); proc(v, old_tile, x, y);
} }

View File

@ -320,7 +320,7 @@ static bool IsWateredTile(TileIndex tile)
{ {
byte m5 = _map5[tile]; byte m5 = _map5[tile];
switch (TileType(tile)) { switch (GetTileType(tile)) {
case MP_WATER: case MP_WATER:
// true, if not coast/riverbank // true, if not coast/riverbank
return m5 != 1; return m5 != 1;
@ -502,7 +502,7 @@ static void TileLoopWaterHelper(TileIndex tile, const TileIndexDiffC *offs)
if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[3]))) != 0 || if (TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[3]))) != 0 ||
TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[4]))) != 0) { TileHeight(TILE_ADD(tile, ToTileIndexDiff(offs[4]))) != 0) {
// make coast.. // make coast..
switch (TileType(target)) { switch (GetTileType(target)) {
case MP_RAILWAY: { case MP_RAILWAY: {
uint slope = GetTileSlope(target, NULL); uint slope = GetTileSlope(target, NULL);
byte tracks = _map5[target] & 0x3F; byte tracks = _map5[target] & 0x3F;