changeset 12998:c71e77a71cad draft

(svn r17492) -Codechange: don't store the town index for road depots.
author rubidium <rubidium@openttd.org>
date Thu, 10 Sep 2009 14:27:43 +0000
parents 4525da0cd999
children 07a634b14de8
files src/road_cmd.cpp src/road_map.h src/saveload/afterload.cpp src/town_map.h
diffstat 4 files changed, 9 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -882,7 +882,7 @@
 		Depot *dep = new Depot(tile);
 		dep->town_index = ClosestTownFromTile(tile, UINT_MAX)->index;
 
-		MakeRoadDepot(tile, _current_company, dir, rt, dep->town_index);
+		MakeRoadDepot(tile, _current_company, dir, rt);
 		MarkTileDirtyByTile(tile);
 	}
 	return cost.AddCost(_price.build_road_depot);
--- a/src/road_map.h
+++ b/src/road_map.h
@@ -407,11 +407,11 @@
 }
 
 
-static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir, RoadType rt, TownID town)
+static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir, RoadType rt)
 {
 	SetTileType(t, MP_ROAD);
 	SetTileOwner(t, owner);
-	_m[t].m2 = town;
+	_m[t].m2 = 0;
 	_m[t].m3 = 0;
 	_m[t].m4 = 0;
 	_m[t].m5 = ROAD_TILE_DEPOT << 6 | dir;
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -842,7 +842,7 @@
 						case ROAD_TILE_DEPOT:
 							break;
 					}
-					if (!HasTownOwnedRoad(t)) {
+					if (!IsRoadDepot(t) && !HasTownOwnedRoad(t)) {
 						const Town *town = CalcClosestTownFromTile(t);
 						if (town != NULL) SetTownIndex(t, town->index);
 					}
--- a/src/town_map.h
+++ b/src/town_map.h
@@ -12,32 +12,31 @@
 #ifndef TOWN_MAP_H
 #define TOWN_MAP_H
 
-#include "tile_map.h"
+#include "road_map.h"
 #include "town_type.h"
 #include "house.h"
 
 /**
  * Get the index of which town this house/street is attached to.
  * @param t the tile
- * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD)
+ * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD) but not a road depot
  * @return TownID
  */
 static inline TownID GetTownIndex(TileIndex t)
 {
-	assert(IsTileType(t, MP_HOUSE) || IsTileType(t, MP_ROAD)); // XXX incomplete
+	assert(IsTileType(t, MP_HOUSE) || (IsTileType(t, MP_ROAD) && !IsRoadDepot(t)));
 	return _m[t].m2;
 }
 
 /**
  * Set the town index for a road or house tile.
  * @param t the tile
- * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD)
  * @param index the index of the town
- * @pre IsTileType(t, MP_ROAD) || IsTileType(t, MP_HOUSE)
+ * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD) but not a road depot
  */
 static inline void SetTownIndex(TileIndex t, TownID index)
 {
-	assert(IsTileType(t, MP_HOUSE) || IsTileType(t, MP_ROAD));
+	assert(IsTileType(t, MP_HOUSE) || (IsTileType(t, MP_ROAD) && !IsRoadDepot(t)));
 	_m[t].m2 = index;
 }