[-] Fixed assert when saving a game with workers collecting resources from outside
This commit is contained in:
parent
10a6d42124
commit
89eddbe415
2 changed files with 9 additions and 9 deletions
src
|
@ -571,7 +571,7 @@ static void AnimateActionHarvest(CUnit &unit)
|
|||
** @param unit pointer to harvester unit.
|
||||
** @param source pointer to resource unit.
|
||||
*/
|
||||
void COrder_Resource::LoseResource(CUnit &unit, const CUnit &source)
|
||||
void COrder_Resource::LoseResource(CUnit &unit, CUnit &source)
|
||||
{
|
||||
CUnit *depot;
|
||||
const ResourceInfo &resinfo = *unit.Type->ResInfo[this->CurrentResource];
|
||||
|
@ -581,6 +581,7 @@ void COrder_Resource::LoseResource(CUnit &unit, const CUnit &source)
|
|||
|
||||
if (resinfo.HarvestFromOutside) {
|
||||
this->ClearGoal();
|
||||
--source.Resource.Active;
|
||||
}
|
||||
|
||||
// Continue to harvest if we aren't fully loaded
|
||||
|
@ -730,14 +731,13 @@ int COrder_Resource::GatherResource(CUnit &unit)
|
|||
|
||||
// Improved version of DropOutAll that makes workers go to the depot.
|
||||
LoseResource(unit, *source);
|
||||
int i;
|
||||
CUnit *uins;
|
||||
for (i = source->InsideCount, uins = source->UnitInside;
|
||||
i; --i, uins = uins->NextContained) {
|
||||
if (uins->CurrentOrder()->Action == UnitActionResource) {
|
||||
for (CUnit *uins = source->Resource.Workers;
|
||||
uins; uins = uins->NextWorker) {
|
||||
if (uins != &unit && uins->CurrentOrder()->Action == UnitActionResource) {
|
||||
COrder_Resource &order = *static_cast<COrder_Resource *>(uins->CurrentOrder());
|
||||
|
||||
order.LoseResource(*uins, *source);
|
||||
if (!uins->Anim.Unbreakable && order.State == SUB_GATHER_RESOURCE) {
|
||||
order.LoseResource(*uins, *source);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Don't destroy the resource twice.
|
||||
|
|
|
@ -73,7 +73,7 @@ private:
|
|||
int MoveToResource(CUnit &unit);
|
||||
void UnitGotoGoal(CUnit &unit, CUnit *const goal, int state);
|
||||
int StartGathering(CUnit &unit);
|
||||
void LoseResource(CUnit &unit, const CUnit &source);
|
||||
void LoseResource(CUnit &unit, CUnit &source);
|
||||
int GatherResource(CUnit &unit);
|
||||
int StopGathering(CUnit &unit);
|
||||
int MoveToDepot(CUnit &unit);
|
||||
|
|
Loading…
Add table
Reference in a new issue