Changeset - r4390:5bab99565ca2
[Not reviewed]
master
0 2 0
truelight - 18 years ago 2006-08-26 16:46:32
truelight@openttd.org
(svn r6143) -Codechange: DeleteWaypoint removes a waypoint from the pool
-Codechange: DestroyWaypoint is called by DeleteWaypoint to remove all things where a waypoint depends on.
Last 2 changes to prepare for new pool system. Not pretty now, will be soon.
2 files changed with 19 insertions and 13 deletions:
0 comments (0 inline, 0 general)
waypoint.c
Show inline comments
 
@@ -95,6 +95,16 @@ void UpdateAllWaypointSigns(void)
 
	}
 
}
 

	
 
/* Internal handler to delete a waypoint */
 
void DestroyWaypoint(Waypoint *wp)
 
{
 
	RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, (DestinationID)wp->index);
 

	
 
	if (wp->string != STR_NULL) DeleteName(wp->string);
 

	
 
	RedrawWaypointSign(wp);
 
}
 

	
 
/* Set the default name for a waypoint */
 
static void MakeDefaultWaypointName(Waypoint* wp)
 
{
 
@@ -244,18 +254,6 @@ int32 CmdBuildTrainWaypoint(TileIndex ti
 
	return _price.build_train_depot;
 
}
 

	
 
/* Internal handler to delete a waypoint */
 
static void DoDeleteWaypoint(Waypoint *wp)
 
{
 
	wp->xy = 0;
 

	
 
	RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, (DestinationID)wp->index);
 

	
 
	if (wp->string != STR_NULL) DeleteName(wp->string);
 

	
 
	RedrawWaypointSign(wp);
 
}
 

	
 
/* Daily loop for waypoints */
 
void WaypointsDailyLoop(void)
 
{
 
@@ -263,7 +261,7 @@ void WaypointsDailyLoop(void)
 

	
 
	/* Check if we need to delete a waypoint */
 
	FOR_ALL_WAYPOINTS(wp) {
 
		if (wp->deleted != 0 && --wp->deleted == 0) DoDeleteWaypoint(wp);
 
		if (wp->deleted != 0 && --wp->deleted == 0) DestroyWaypoint(wp);
 
	}
 
}
 

	
waypoint.h
Show inline comments
 
@@ -55,6 +55,14 @@ static inline bool IsValidWaypointID(Way
 
	return index < GetWaypointPoolSize() && IsValidWaypoint(GetWaypoint(index));
 
}
 

	
 
void DestroyWaypoint(Waypoint *wp);
 

	
 
static inline void DeleteWaypoint(Waypoint *wp)
 
{
 
	DestroyWaypoint(wp);
 
	wp->xy = 0;
 
}
 

	
 
#define FOR_ALL_WAYPOINTS_FROM(wp, start) for (wp = GetWaypoint(start); wp != NULL; wp = (wp->index + 1 < GetWaypointPoolSize()) ? GetWaypoint(wp->index + 1) : NULL) if (IsValidWaypoint(wp))
 
#define FOR_ALL_WAYPOINTS(wp) FOR_ALL_WAYPOINTS_FROM(wp, 0)
 

	
0 comments (0 inline, 0 general)