From c3fc45995c908e1d5a9b5c9e97dce20f8d74ceb6 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Tue, 28 Sep 2010 15:22:04 +0000 Subject: [PATCH] - an attempt to fix the issue with multi-build where the repairers stop repairing --- source/glest_game/world/unit_updater.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/glest_game/world/unit_updater.cpp b/source/glest_game/world/unit_updater.cpp index 7c58c38c..ec1b2484 100644 --- a/source/glest_game/world/unit_updater.cpp +++ b/source/glest_game/world/unit_updater.cpp @@ -864,9 +864,22 @@ void UnitUpdater::updateRepair(Unit *unit) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] rct = %p\n",__FILE__,__FUNCTION__,__LINE__,rct); Unit *repaired = map->getCell(command->getPos())->getUnit(fLand); + + // Check if the 'repaired' unit is actually the peer unit in a multi-build? + Unit *peerUnitBuilder = findPeerUnitBuilder(unit); + if(peerUnitBuilder != NULL && peerUnitBuilder == repaired) { + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] peerUnitBuilder = %p\n",__FILE__,__FUNCTION__,__LINE__,peerUnitBuilder); + + if(peerUnitBuilder->getCurrCommand()->getUnit() != NULL) { + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] peerbuilder's unitid = %d\n",__FILE__,__FUNCTION__,__LINE__,peerUnitBuilder->getCurrCommand()->getUnit()->getId()); + + repaired = peerUnitBuilder->getCurrCommand()->getUnit(); + } + } + bool nextToRepaired = repaired != NULL && map->isNextTo(unit->getPos(), repaired); - Unit *peerUnitBuilder = NULL; + peerUnitBuilder = NULL; if(repaired == NULL) { peerUnitBuilder = findPeerUnitBuilder(unit); if(peerUnitBuilder != NULL) {