Changeset - r4388:6e13905f3259
[Not reviewed]
master
0 6 0
truelight - 18 years ago 2006-08-26 14:44:55
truelight@openttd.org
(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
6 files changed with 23 insertions and 23 deletions:
0 comments (0 inline, 0 general)
depot.c
Show inline comments
 
@@ -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)
depot.h
Show inline comments
 
@@ -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(vo
 
/**
 
 * 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 i
 
	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 i
 
#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(
 
	return ((0x4C >> direction) & tileh) != 0;
 
}
 

	
 

	
 
Depot *GetDepotByTile(TileIndex tile);
 
void InitializeDepots(void);
 
Depot *AllocateDepot(void);
 
void DoDeleteDepot(TileIndex tile);
 

	
 
#endif /* DEPOT_H */
openttd.h
Show inline comments
 
@@ -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;
rail_cmd.c
Show inline comments
 
@@ -975,7 +975,7 @@ static int32 RemoveTrainDepot(TileIndex 
 
	if (flags & DC_EXEC) {
 
		DiagDirection dir = GetRailDepotDirection(tile);
 

	
 
		DoDeleteDepot(tile);
 
		DeleteDepot(GetDepotByTile(tile));
 
		UpdateSignalsOnSegment(tile, dir);
 
		YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir)));
 
	}
road_cmd.c
Show inline comments
 
@@ -603,7 +603,7 @@ static int32 RemoveRoadDepot(TileIndex t
 

	
 
	if (!EnsureNoVehicle(tile)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) DoDeleteDepot(tile);
 
	if (flags & DC_EXEC) DeleteDepot(GetDepotByTile(tile));
 

	
 
	return _price.remove_road_depot;
 
}
water_cmd.c
Show inline comments
 
@@ -103,7 +103,7 @@ static int32 RemoveShipDepot(TileIndex t
 

	
 
	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);
0 comments (0 inline, 0 general)