From 616bc907fe4a0c3bad7732c97b9846f08948e8bb Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 24 Jan 2024 14:35:28 +0200 Subject: [PATCH] only looking for extractors with non empty deposits removing the SUPPLY order if there cargo ship storage is empty or there's no refinery --- resourceRover.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/resourceRover.cpp b/resourceRover.cpp index 0482a23..8be0b70 100644 --- a/resourceRover.cpp +++ b/resourceRover.cpp @@ -38,7 +38,7 @@ namespace battleship{ vector extractors, refineries; for(Unit *unit : units){ - if(unit->getUnitClass() == UnitClass::EXTRACTOR) + if(unit->getUnitClass() == UnitClass::EXTRACTOR && ((Extractor*)unit)->getDeposit()->getAmmount() > 0) extractors.push_back((Structure*)unit); else if(unit->getUnitClass() == UnitClass::REFINERY) refineries.push_back((Structure*)unit); @@ -47,11 +47,6 @@ namespace battleship{ nearestExtractor = (Extractor*)getClosestUnit(extractors); nearestRefinery = getClosestUnit(refineries); - if(!nearestExtractor){ - removeOrder(0); - return; - } - if(nearestExtractor && nearestExtractor->getPos().getDistanceFrom(pos) <= minDist){ ResourceDeposit *deposit = nearestExtractor->getDeposit(); @@ -62,10 +57,17 @@ namespace battleship{ lastLoadTime = getTime(); } } - else if((deposit->getAmmount() == 0 || load == capacity) && nearestRefinery) + else if(load == capacity && nearestRefinery) preparePathpoints(order, nearestRefinery->getPos(), true); } - else if(nearestRefinery && nearestRefinery->getPos().getDistanceFrom(pos) <= minDist){ + else if(!nearestExtractor){ + if(nearestRefinery && load > 0) + preparePathpoints(order, nearestRefinery->getPos(), true); + else + removeOrder(0); + } + + if(nearestRefinery && nearestRefinery->getPos().getDistanceFrom(pos) <= minDist){ if(canUnload()){ load--; player->addRefineds(1);