|
|
@@ -47,6 +47,7 @@
|
|
|
#include "../../lib/mapObjects/CGTownInstance.h"
|
|
|
#include "../../lib/mapping/CMapDefines.h"
|
|
|
#include "../../lib/pathfinder/CGPathNode.h"
|
|
|
+#include "../../lib/pathfinder/TurnInfo.h"
|
|
|
#include "../../lib/spells/ISpellMechanics.h"
|
|
|
#include "../../lib/spells/Problem.h"
|
|
|
|
|
|
@@ -776,13 +777,26 @@ void AdventureMapInterface::showMoveDetailsInStatusbar(const CGHeroInstance & he
|
|
|
{
|
|
|
const int maxMovementPointsAtStartOfLastTurn = pathNode.turns > 0 ? hero.movementPointsLimit(pathNode.layer == EPathfindingLayer::LAND) : hero.movementPointsRemaining();
|
|
|
const int movementPointsLastTurnCost = maxMovementPointsAtStartOfLastTurn - pathNode.moveRemains;
|
|
|
- const int remainingPointsAfterMove = pathNode.turns == 0 ? pathNode.moveRemains : 0;
|
|
|
+ const int remainingPointsAfterMove = pathNode.moveRemains;
|
|
|
+
|
|
|
+ int totalMovementCost = 0;
|
|
|
+ for (int i = 0; i <= pathNode.turns; ++i)
|
|
|
+ {
|
|
|
+ auto turnInfo = hero.getTurnInfo(i);
|
|
|
+ if (pathNode.layer == EPathfindingLayer::SAIL)
|
|
|
+ totalMovementCost += turnInfo->getMovePointsLimitWater();
|
|
|
+ else
|
|
|
+ totalMovementCost += turnInfo->getMovePointsLimitLand();
|
|
|
+ }
|
|
|
+
|
|
|
+ totalMovementCost -= pathNode.moveRemains;
|
|
|
|
|
|
std::string result = VLC->generaltexth->translate("vcmi.adventureMap", pathNode.turns > 0 ? "moveCostDetails" : "moveCostDetailsNoTurns");
|
|
|
|
|
|
boost::replace_first(result, "%TURNS", std::to_string(pathNode.turns));
|
|
|
boost::replace_first(result, "%POINTS", std::to_string(movementPointsLastTurnCost));
|
|
|
boost::replace_first(result, "%REMAINING", std::to_string(remainingPointsAfterMove));
|
|
|
+ boost::replace_first(result, "%TOTAL", std::to_string(totalMovementCost));
|
|
|
|
|
|
GH.statusbar()->write(result);
|
|
|
}
|