(svn r14528) -Codechange: cache the closest town for all road tiles instead of only roads owned by tiles. This replaces a O(n) search over all towns from the road's tileloop with a O(1) lookup (PhilSophus)

This commit is contained in:
rubidium
2008-10-25 13:51:47 +00:00
parent 9075a2bbfc
commit a14ad77a36
9 changed files with 64 additions and 10 deletions

View File

@@ -189,7 +189,7 @@ static inline void SetRoadOwner(TileIndex t, RoadType rt, Owner o)
static inline bool IsRoadOwner(TileIndex t, RoadType rt, Owner o)
{
assert(HasTileRoadType(t, rt));
assert(rt == ROADTYPE_ROAD || HasTileRoadType(t, rt));
return (GetRoadOwner(t, rt) == o);
}
@@ -451,11 +451,11 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner h
}
static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir, RoadType rt)
static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir, RoadType rt, TownID town)
{
SetTileType(t, MP_ROAD);
SetTileOwner(t, owner);
_m[t].m2 = 0;
_m[t].m2 = town;
_m[t].m3 = 0;
_m[t].m4 = 0;
_m[t].m5 = ROAD_TILE_DEPOT << 6 | dir;