Mercurial > hg > openttd
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; }