(svn r17804) -Codechange: move the CargoPacket 'invalidation' when stations get removed to CargoPacket.

This commit is contained in:
rubidium 2009-10-18 17:26:10 +00:00
parent 41037308c0
commit 62a6e9509b
3 changed files with 14 additions and 5 deletions

View File

@ -62,6 +62,18 @@ CargoPacket::CargoPacket(uint16 count, byte days_in_transit, Money feeder_share,
}
}
/**
* Invalidates (sets source to INVALID_STATION) all cargo packets from given station
* @param sid the station that gets removed
*/
/* static */ void CargoPacket::InvalidateAllFrom(StationID sid)
{
CargoPacket *cp;
FOR_ALL_CARGOPACKETS(cp) {
if (cp->source == sid) cp->source_id = INVALID_SOURCE;
}
}
/*
*
* Cargo list implementation

View File

@ -116,6 +116,7 @@ public:
static void InvalidateAllFrom(SourceType src_type, SourceID src);
static void InvalidateAllFrom(StationID sid);
};
/**

View File

@ -97,11 +97,7 @@ Station::~Station()
this->goods[c].cargo.Truncate(0);
}
CargoPacket *cp;
FOR_ALL_CARGOPACKETS(cp) {
/* Don't allow cargo packets with invalid source station */
if (cp->source == this->index) cp->source = INVALID_STATION;
}
CargoPacket::InvalidateAllFrom(this->index);
}