mirror of https://github.com/OpenTTD/OpenTTD
(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.release/0.5
parent
db8dfcd6e9
commit
5dc121d1c1
24
waypoint.c
24
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 */
|
/* Set the default name for a waypoint */
|
||||||
static void MakeDefaultWaypointName(Waypoint* wp)
|
static void MakeDefaultWaypointName(Waypoint* wp)
|
||||||
{
|
{
|
||||||
|
@ -244,18 +254,6 @@ int32 CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||||
return _price.build_train_depot;
|
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 */
|
/* Daily loop for waypoints */
|
||||||
void WaypointsDailyLoop(void)
|
void WaypointsDailyLoop(void)
|
||||||
{
|
{
|
||||||
|
@ -263,7 +261,7 @@ void WaypointsDailyLoop(void)
|
||||||
|
|
||||||
/* Check if we need to delete a waypoint */
|
/* Check if we need to delete a waypoint */
|
||||||
FOR_ALL_WAYPOINTS(wp) {
|
FOR_ALL_WAYPOINTS(wp) {
|
||||||
if (wp->deleted != 0 && --wp->deleted == 0) DoDeleteWaypoint(wp);
|
if (wp->deleted != 0 && --wp->deleted == 0) DestroyWaypoint(wp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,14 @@ static inline bool IsValidWaypointID(WaypointID index)
|
||||||
return index < GetWaypointPoolSize() && IsValidWaypoint(GetWaypoint(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_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)
|
#define FOR_ALL_WAYPOINTS(wp) FOR_ALL_WAYPOINTS_FROM(wp, 0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue