diff options
author | truelight <truelight@openttd.org> | 2006-08-26 14:44:55 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2006-08-26 14:44:55 +0000 |
commit | 4d43389c286f5ea2eccface64ef7b9afc5647ebc (patch) | |
tree | 8b932464c532068bc8cf1bd6798a38de736ed602 | |
parent | 93c3e33fd7e4602410116d735a2cbb813642124b (diff) | |
download | openttd-4d43389c286f5ea2eccface64ef7b9afc5647ebc.tar.xz |
(svn r6141) -Codechange: introduced DepotID and used it as much as possible
-Codechange: DeleteDepot removes a depot from the pool
-Codechange: DestroyDepot is called by DeleteDepot to remove all things where a depot depends on.
Last 2 changes to prepare for new pool system. Not pretty now, will be soon.
-Codechange: Removed DoDeleteDepot as it was stupid
-rw-r--r-- | depot.c | 18 | ||||
-rw-r--r-- | depot.h | 21 | ||||
-rw-r--r-- | openttd.h | 1 | ||||
-rw-r--r-- | rail_cmd.c | 2 | ||||
-rw-r--r-- | road_cmd.c | 2 | ||||
-rw-r--r-- | water_cmd.c | 2 |
6 files changed, 23 insertions, 23 deletions
@@ -59,7 +59,7 @@ Depot *AllocateDepot(void) * TODO - This is just a temporary stage, this will be removed. */ for (d = GetDepot(0); d != NULL; d = (d->index + 1 < GetDepotPoolSize()) ? GetDepot(d->index + 1) : NULL) { if (!IsValidDepot(d)) { - uint index = d->index; + DepotID index = d->index; memset(d, 0, sizeof(Depot)); d->index = index; @@ -75,26 +75,18 @@ Depot *AllocateDepot(void) } /** - * Delete a depot + * Clean up a depot */ -void DoDeleteDepot(TileIndex tile) +void DestroyDepot(Depot *depot) { - Depot *depot; - - /* Get the depot */ - depot = GetDepotByTile(tile); - /* Clear the tile */ - DoClearSquare(tile); - - /* Clear the depot */ - depot->xy = 0; + DoClearSquare(depot->xy); /* Clear the depot from all order-lists */ RemoveOrderFromAllVehicles(OT_GOTO_DEPOT, depot->index); /* Delete the depot-window */ - DeleteWindowById(WC_VEHICLE_DEPOT, tile); + DeleteWindowById(WC_VEHICLE_DEPOT, depot->xy); } void InitializeDepots(void) @@ -14,7 +14,7 @@ struct Depot { TileIndex xy; TownID town_index; - StationID index; + DepotID index; }; extern MemoryPool _depot_pool; @@ -22,7 +22,7 @@ extern MemoryPool _depot_pool; /** * Get the pointer to the depot with index 'index' */ -static inline Depot *GetDepot(uint index) +static inline Depot *GetDepot(DepotID index) { return (Depot*)GetItemFromPool(&_depot_pool, index); } @@ -38,9 +38,9 @@ static inline uint16 GetDepotPoolSize(void) /** * Check if a depot really exists. */ -static inline bool IsValidDepot(const Depot* depot) +static inline bool IsValidDepot(const Depot *depot) { - return depot->xy != 0; + return depot != NULL && depot->xy != 0; } static inline bool IsValidDepotID(uint index) @@ -48,6 +48,14 @@ static inline bool IsValidDepotID(uint index) return index < GetDepotPoolSize() && IsValidDepot(GetDepot(index)); } +void DestroyDepot(Depot *depot); + +static inline void DeleteDepot(Depot *depot) +{ + DestroyDepot(depot); + depot->xy = 0; +} + #define FOR_ALL_DEPOTS_FROM(d, start) for (d = GetDepot(start); d != NULL; d = (d->index + 1 < GetDepotPoolSize()) ? GetDepot(d->index + 1) : NULL) if (IsValidDepot(d)) #define FOR_ALL_DEPOTS(d) FOR_ALL_DEPOTS_FROM(d, 0) @@ -56,7 +64,8 @@ static inline bool IsValidDepotID(uint index) #define MIN_SERVINT_DAYS 30 #define MAX_SERVINT_DAYS 800 -/** Get the service interval domain. +/** + * Get the service interval domain. * Get the new proposed service interval for the vehicle is indeed, clamped * within the given bounds. @see MIN_SERVINT_PERCENT ,etc. * @param index proposed service interval @@ -108,10 +117,8 @@ static inline bool CanBuildDepotByTileh(uint32 direction, Slope tileh) return ((0x4C >> direction) & tileh) != 0; } - Depot *GetDepotByTile(TileIndex tile); void InitializeDepots(void); Depot *AllocateDepot(void); -void DoDeleteDepot(TileIndex tile); #endif /* DEPOT_H */ @@ -39,6 +39,7 @@ typedef uint16 VehicleID; typedef uint16 StationID; typedef uint16 TownID; typedef uint16 IndustryID; +typedef uint16 DepotID; typedef byte PlayerID; typedef byte OrderID; typedef byte CargoID; diff --git a/rail_cmd.c b/rail_cmd.c index 4e623703f..e5de12b62 100644 --- a/rail_cmd.c +++ b/rail_cmd.c @@ -975,7 +975,7 @@ static int32 RemoveTrainDepot(TileIndex tile, uint32 flags) if (flags & DC_EXEC) { DiagDirection dir = GetRailDepotDirection(tile); - DoDeleteDepot(tile); + DeleteDepot(GetDepotByTile(tile)); UpdateSignalsOnSegment(tile, dir); YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir))); } diff --git a/road_cmd.c b/road_cmd.c index 6b4956a31..3f9c2a3c7 100644 --- a/road_cmd.c +++ b/road_cmd.c @@ -603,7 +603,7 @@ static int32 RemoveRoadDepot(TileIndex tile, uint32 flags) if (!EnsureNoVehicle(tile)) return CMD_ERROR; - if (flags & DC_EXEC) DoDeleteDepot(tile); + if (flags & DC_EXEC) DeleteDepot(GetDepotByTile(tile)); return _price.remove_road_depot; } diff --git a/water_cmd.c b/water_cmd.c index 5d50f01ac..009bdcd34 100644 --- a/water_cmd.c +++ b/water_cmd.c @@ -103,7 +103,7 @@ static int32 RemoveShipDepot(TileIndex tile, uint32 flags) if (flags & DC_EXEC) { /* Kill the depot, which is registered at the northernmost tile. Use that one */ - DoDeleteDepot(tile2 < tile ? tile2 : tile); + DeleteDepot(GetDepotByTile(tile2 < tile ? tile2 : tile)); MakeWater(tile); MakeWater(tile2); |