瀏覽代碼

Merge pull request #2654 from IvanSavenko/regression_fix

Regression fix
Ivan Savenko 2 年之前
父節點
當前提交
bdd5848541

+ 8 - 1
lib/vstd/DateUtils.cpp

@@ -10,7 +10,14 @@ namespace vstd
 	{
 		std::tm tm = *std::localtime(&dt);
 		std::stringstream s;
-		s.imbue(std::locale(""));
+		try
+		{
+			s.imbue(std::locale(""));
+		}
+		catch(const std::runtime_error & e)
+		{
+			// locale not be available - keep default / global
+		}
 		s << std::put_time(&tm, "%x %X");
 		return s.str();
 	}

+ 1 - 0
server/battles/BattleProcessor.cpp

@@ -67,6 +67,7 @@ void BattleProcessor::startBattlePrimary(const CArmedInstance *army1, const CArm
 	heroes[0] = hero1;
 	heroes[1] = hero2;
 
+	resultProcessor->setupBattle();
 	setupBattle(tile, armies, heroes, creatureBank, town); //initializes stacks, places creatures on battlefield, blocks and informs player interfaces
 
 	auto lastBattleQuery = std::dynamic_pointer_cast<CBattleQuery>(gameHandler->queries->topQuery(gameHandler->gameState()->curB->sides[0].color));

+ 6 - 0
server/battles/BattleResultProcessor.cpp

@@ -539,6 +539,12 @@ void BattleResultProcessor::setBattleResult(EBattleResult resultType, int victor
 	gameHandler->gameState()->curB->calculateCasualties(battleResult->casualties);
 }
 
+void BattleResultProcessor::setupBattle()
+{
+	finishingBattle.reset();
+	battleResult.reset();
+}
+
 bool BattleResultProcessor::battleIsEnding() const
 {
 	return battleResult != nullptr;

+ 1 - 0
server/battles/BattleResultProcessor.h

@@ -73,6 +73,7 @@ public:
 
 	bool battleIsEnding() const;
 
+	void setupBattle();
 	void setBattleResult(EBattleResult resultType, int victoriusSide);
 	void endBattle(int3 tile, const CGHeroInstance * hero1, const CGHeroInstance * hero2); //ends battle
 	void endBattleConfirm(const BattleInfo * battleInfo);