From bb94724a092750794e8c2ad1a6537fac6b902b9e Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 10 Sep 2009 14:27:43 +0000 Subject: (svn r17492) -Codechange: don't store the town index for road depots. --- src/road_cmd.cpp | 2 +- src/road_map.h | 4 ++-- src/saveload/afterload.cpp | 2 +- src/town_map.h | 11 +++++------ 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index d3c865e35..05e1ef571 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -882,7 +882,7 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui 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); diff --git a/src/road_map.h b/src/road_map.h index 6dba8e420..04e87f1b9 100644 --- a/src/road_map.h +++ b/src/road_map.h @@ -407,11 +407,11 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner r } -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; diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index afdbd4151..4a122d005 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -842,7 +842,7 @@ bool AfterLoadGame() 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); } diff --git a/src/town_map.h b/src/town_map.h index 3ac810cb4..2fd38b210 100644 --- 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; } -- cgit v1.2.3-70-g09d2