(svn r14746) -Fix: don't let any disaster vehicle (Helicopter or Airplane) target invalid industry

This commit is contained in:
smatz
2008-12-26 19:37:50 +00:00
parent 047e40d33f
commit 7fbd5beb0f
3 changed files with 21 additions and 0 deletions

View File

@@ -1063,6 +1063,22 @@ void StartupDisasters()
ResetDisasterDelay();
}
/** Marks all disasters targeting this industry in such a way
* they won't call GetIndustry(v->dest_tile) on invalid industry anymore.
* @param i deleted industry
*/
void ReleaseDisastersTargetingIndustry(IndustryID i)
{
Vehicle *v;
FOR_ALL_VEHICLES(v) {
/* primary disaster vehicles that have chosen target */
if (v->type == VEH_DISASTER && (v->subtype == ST_Airplane || v->subtype == ST_Helicopter)) {
/* if it has chosen target, and it is this industry (yes, dest_tile is IndustryID here), set order to "leaving map peacefully" */
if (v->current_order.GetDestination() > 0 && v->dest_tile == i) v->current_order.SetDestination(3);
}
}
}
void DisasterVehicle::UpdateDeltaXY(Direction direction)
{
this->x_offs = -1;