Bladeren bron

propagate turn timer state every second to ensure correct UI

Ivan Savenko 1 jaar geleden
bovenliggende
commit
fc595c5d84

+ 6 - 15
client/adventureMap/TurnTimerWidget.cpp

@@ -68,6 +68,8 @@ TurnTimerWidget::TurnTimerWidget(const Point & position, PlayerColor player)
 			pos.h += 16;
 			playerLabelsUnit[player] = std::make_shared<CLabel>(pos.w / 2, pos.h - 8, FONT_BIG, ETextAlignment::CENTER, graphics->playerColors[player], "");
 		}
+
+		updateTextLabel(player, LOCPLINT->cb->getPlayerTurnTime(player));
 	}
 	else
 	{
@@ -86,6 +88,8 @@ TurnTimerWidget::TurnTimerWidget(const Point & position, PlayerColor player)
 
 			pos.h += 16;
 			playerLabelsMain[player] = std::make_shared<CLabel>(pos.w / 2, pos.h - 8, FONT_BIG, ETextAlignment::CENTER, graphics->playerColors[player], "");
+
+			updateTextLabel(player, LOCPLINT->cb->getPlayerTurnTime(player));
 		}
 	}
 
@@ -157,26 +161,13 @@ void TurnTimerWidget::updateTextLabel(PlayerColor player, const TurnTimerInfo &
 		else
 			mainLabel->setText(msToString(timer.baseTimer + timer.turnTimer));
 	}
-
 }
 
 void TurnTimerWidget::updateTimer(PlayerColor player, uint32_t msPassed)
 {
 	const auto & gamestateTimer = LOCPLINT->cb->getPlayerTurnTime(player);
-
-	if (!(lastUpdateTimers[player] == gamestateTimer))
-	{
-		lastUpdateTimers[player] = gamestateTimer;
-		countingDownTimers[player] = gamestateTimer;
-	}
-
-	auto & countingDownTimer = countingDownTimers[player];
-
-	if(countingDownTimer.isActive && LOCPLINT->cb->isPlayerMakingTurn(player))
-		countingDownTimer.substractTimer(msPassed);
-	
-	updateNotifications(player, countingDownTimer.valueMs());
-	updateTextLabel(player, countingDownTimer);
+	updateNotifications(player, gamestateTimer.valueMs());
+	updateTextLabel(player, gamestateTimer);
 }
 
 void TurnTimerWidget::tick(uint32_t msPassed)

+ 0 - 2
client/adventureMap/TurnTimerWidget.h

@@ -29,8 +29,6 @@ class TurnTimerWidget : public CIntObject
 	bool isBattleMode;
 
 	std::set<int> notificationThresholds;
-	std::map<PlayerColor, TurnTimerInfo> lastUpdateTimers;
-	std::map<PlayerColor, TurnTimerInfo> countingDownTimers;
 
 	std::map<PlayerColor, std::shared_ptr<CLabel>> playerLabelsMain;
 	std::map<PlayerColor, std::shared_ptr<CLabel>> playerLabelsBattle;

+ 1 - 4
server/TurnTimerHandler.cpp

@@ -105,11 +105,8 @@ bool TurnTimerHandler::timerCountDown(int & timer, int initialTimer, PlayerColor
 	{
 		timer -= waitTime;
 		lastUpdate[player] += waitTime;
-		int frequency = (timer > turnTimePropagateThreshold
-						 && initialTimer - timer > turnTimePropagateThreshold)
-		? turnTimePropagateFrequency : turnTimePropagateFrequencyCrit;
 		
-		if(lastUpdate[player] >= frequency)
+		if(lastUpdate[player] >= turnTimePropagateFrequency)
 			sendTimerUpdate(player);
 
 		return true;

+ 1 - 3
server/TurnTimerHandler.h

@@ -25,9 +25,7 @@ class CGameHandler;
 class TurnTimerHandler
 {	
 	CGameHandler & gameHandler;
-	const int turnTimePropagateFrequency = 5000;
-	const int turnTimePropagateFrequencyCrit = 1000;
-	const int turnTimePropagateThreshold = 3000;
+	const int turnTimePropagateFrequency = 1000;
 	std::map<PlayerColor, TurnTimerInfo> timers;
 	std::map<PlayerColor, int> lastUpdate;
 	std::map<PlayerColor, bool> endTurnAllowed;