changeset 8458:44b11233507f draft

(svn r12028) -Codechange: Split common part of station var 0x67, house var 0x62, indtile var 0x60 and industry var 0x62 to 'newgrf_commons.cpp'.
author frosch <frosch@openttd.org>
date Thu, 31 Jan 2008 17:46:08 +0000
parents 75eb387b67af
children 0daec7b61525
files src/newgrf_commons.cpp src/newgrf_commons.h src/newgrf_house.cpp src/newgrf_industrytiles.cpp src/newgrf_station.cpp
diffstat 5 files changed, 25 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_commons.cpp
+++ b/src/newgrf_commons.cpp
@@ -285,3 +285,19 @@
 	/* 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;
+}
--- a/src/newgrf_commons.h
+++ b/src/newgrf_commons.h
@@ -93,5 +93,6 @@
 
 uint32 GetTerrainType(TileIndex tile);
 TileIndex GetNearbyTile(byte parameter, TileIndex tile);
+uint32 GetNearbyTileInformation(TileIndex tile);
 
 #endif /* NEWGRF_COMMONS_H */
--- a/src/newgrf_house.cpp
+++ b/src/newgrf_house.cpp
@@ -170,14 +170,8 @@
 
 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);
 }
 
 /**
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -45,16 +45,10 @@
  */
 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
+	bool is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index);
 
-	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);
-
-	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.
--- a/src/newgrf_station.cpp
+++ b/src/newgrf_station.cpp
@@ -426,12 +426,11 @@
 			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