From 8358832f4a81063827caf503c5a7d7ff1b62e77a Mon Sep 17 00:00:00 2001 From: truelight Date: Sat, 26 Aug 2006 16:46:32 +0000 Subject: (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. --- waypoint.c | 24 +++++++++++------------- waypoint.h | 8 ++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/waypoint.c b/waypoint.c index aa29c7a84..25abc7d66 100644 --- a/waypoint.c +++ b/waypoint.c @@ -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 tile, uint32 flags, uint32 p1, uint32 p2) 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); } } diff --git a/waypoint.h b/waypoint.h index 9949ffaa4..da3106656 100644 --- a/waypoint.h +++ b/waypoint.h @@ -55,6 +55,14 @@ static inline bool IsValidWaypointID(WaypointID index) 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) -- cgit v1.2.3-70-g09d2