mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(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:
parent
ef35cefddc
commit
fe9891c8ec
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user