(svn r12028) -Codechange: Split common part of station var 0x67, house var 0x62, indtile var 0x60 and industry var 0x62 to 'newgrf_commons.cpp'.

This commit is contained in:
frosch 2008-01-31 17:46:08 +00:00
parent ef35cefddc
commit fe9891c8ec
5 changed files with 24 additions and 20 deletions

View File

@ -285,3 +285,19 @@ TileIndex GetNearbyTile(byte parameter, TileIndex tile)
/* Make sure we never roam outside of the map */
return TILE_MASK(tile + TileDiffXY(x, y));
}
/**
* Common part of station var 0x67 , house var 0x62, indtile var 0x60, industry var 0x62.
*
* @param tile the tile of interest.
* @return 0czzbbss: c = TileType; zz = TileZ; bb: 7-3 zero, 4-2 TerrainType, 1 water/shore, 0 zero; ss = TileSlope
*/
uint32 GetNearbyTileInformation(TileIndex tile)
{
TileType tile_type = GetTileType(tile);
uint z;
Slope tileh = GetTileSlope(tile, &z);
byte terrain_type = GetTerrainType(tile) << 2 | (tile_type == MP_WATER ? 1 : 0) << 1;
return tile_type << 24 | z << 16 | terrain_type << 8 | tileh;
}

View File

@ -93,5 +93,6 @@ extern IndustryTileOverrideManager _industile_mngr;
uint32 GetTerrainType(TileIndex tile);
TileIndex GetNearbyTile(byte parameter, TileIndex tile);
uint32 GetNearbyTileInformation(TileIndex tile);
#endif /* NEWGRF_COMMONS_H */

View File

@ -170,14 +170,8 @@ static uint32 GetGRFParameter(HouseID house_id, byte parameter)
uint32 GetNearbyTileInformation(byte parameter, TileIndex tile)
{
uint32 tile_type;
tile = GetNearbyTile(parameter, tile);
tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
uint z;
Slope tileh = GetTileSlope(tile, &z);
return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | tileh;
return GetNearbyTileInformation(tile);
}
/**

View File

@ -45,16 +45,10 @@ static uint32 GetGRFParameter(IndustryGfx indtile_id, byte parameter)
*/
uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
{
byte tile_type;
bool is_same_industry;
if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required
is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1 | (is_same_industry ? 1 : 0);
bool is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
uint z;
Slope tileh = GetTileSlope(tile, &z);
return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | tileh;
return GetNearbyTileInformation(tile) | (is_same_industry ? 1 : 0) << 8;
}
/** This is the position of the tile relative to the northernmost tile of the industry.

View File

@ -426,12 +426,11 @@ static uint32 StationGetVariable(const ResolverObject *object, byte variable, by
Axis axis = GetRailStationAxis(tile);
if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required
byte tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
uint z;
Slope tileh = GetTileSlope(tile, &z);
bool swap = (axis == AXIS_Y && HasBit(tileh, 0) != HasBit(tileh, 2));
return GetTileType(tile) << 24 | z << 16 | tile_type << 8 | (tileh ^ (swap ? 5 : 0));
Slope tileh = GetTileSlope(tile, NULL);
bool swap = (axis == AXIS_Y && HasBit(tileh, SLOPE_W) != HasBit(tileh, SLOPE_E));
return GetNearbyTileInformation(tile) ^ (swap ? SLOPE_EW : 0);
}
case 0x68: { // Station info of nearby tiles