From 98a5a80ca83a923288ed54c2f73f0cb19710e8cb Mon Sep 17 00:00:00 2001 From: Eshed Date: Wed, 27 Jul 2016 16:32:19 +0300 Subject: [PATCH] sort can be implemented differently on different compilers synced code needs to use stable_sort Fix desync from #5313 --- rts/Game/GameHelper.cpp | 4 ++-- rts/Game/SelectedUnitsAI.cpp | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/rts/Game/GameHelper.cpp b/rts/Game/GameHelper.cpp index c839ff2a9bb..0103a1ea077 100644 --- a/rts/Game/GameHelper.cpp +++ b/rts/Game/GameHelper.cpp @@ -871,7 +871,7 @@ static const vector& GetSearchOffsetTable (int radius) i.qdist = i.dx*i.dx + i.dy*i.dy; } - std::sort(searchOffsets.begin(), searchOffsets.end(), SearchOffsetComparator); + std::stable_sort(searchOffsets.begin(), searchOffsets.end(), SearchOffsetComparator); } return searchOffsets; @@ -1161,7 +1161,7 @@ CGameHelper::BuildSquareStatus CGameHelper::TestBuildSquare( if (!buildingMaskMap->TestTileMaskUnsafe(sqx >> 1, sqz >> 1, mask)) return BUILDSQUARE_BLOCKED; - + // check maxHeightDif constraint (structures only) // diff --git a/rts/Game/SelectedUnitsAI.cpp b/rts/Game/SelectedUnitsAI.cpp index 5e19b33cc09..b44919a350b 100644 --- a/rts/Game/SelectedUnitsAI.cpp +++ b/rts/Game/SelectedUnitsAI.cpp @@ -538,14 +538,14 @@ void CSelectedUnitsHandlerAI::SelectAttack(const Command& cmd, int player) for (unsigned int t = 0; t < targetsCount; t++) { const CUnit* unit = unitHandler->units[ targets[t] ]; - const float3 unitPos = queueing ? LastQueuePosition(unit) : float3(unit->midPos); + const float3 unitPos = float3(unit->midPos); DistInfo di; di.unitID = targets[t]; di.dist = (unitPos - midPos).SqLength2D(); distVec.push_back(di); } - sort(distVec.begin(), distVec.end()); + stable_sort(distVec.begin(), distVec.end()); // give the commands for (unsigned int s = 0; s < selectedCount; s++) { @@ -566,6 +566,7 @@ void CSelectedUnitsHandlerAI::SelectAttack(const Command& cmd, int player) if (!queueing || !commandAI->WillCancelQueued(attackCmd)) { commandAI->GiveCommand(attackCmd, false); + AddUnitSetMaxSpeedCommand(unit, attackCmd.options); // following commands are always queued attackCmd.options |= SHIFT_KEY;