|
@@ -36,6 +36,7 @@ void TurnTimerHandler::onGameplayStart(PlayerColor player)
|
|
|
timers[player].isActive = true;
|
|
|
timers[player].isBattle = false;
|
|
|
lastUpdate[player] = std::numeric_limits<int>::max();
|
|
|
+ endTurnAllowed[player] = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -47,6 +48,13 @@ void TurnTimerHandler::setTimerEnabled(PlayerColor player, bool enabled)
|
|
|
sendTimerUpdate(player);
|
|
|
}
|
|
|
|
|
|
+void TurnTimerHandler::setEndTurnAllowed(PlayerColor player, bool enabled)
|
|
|
+{
|
|
|
+ std::lock_guard<std::recursive_mutex> guard(mx);
|
|
|
+ assert(player.isValidPlayer());
|
|
|
+ endTurnAllowed[player] = enabled;
|
|
|
+}
|
|
|
+
|
|
|
void TurnTimerHandler::sendTimerUpdate(PlayerColor player)
|
|
|
{
|
|
|
TurnTimeUpdate ttu;
|
|
@@ -63,6 +71,7 @@ void TurnTimerHandler::onPlayerGetTurn(PlayerColor player)
|
|
|
{
|
|
|
if(si->turnTimerInfo.isEnabled())
|
|
|
{
|
|
|
+ endTurnAllowed[player] = true;
|
|
|
auto & timer = timers[player];
|
|
|
if(si->turnTimerInfo.baseTimer > 0)
|
|
|
timer.baseTimer += timer.turnTimer;
|
|
@@ -125,7 +134,7 @@ void TurnTimerHandler::onPlayerMakingTurn(PlayerColor player, int waitTime)
|
|
|
timer.baseTimer = 0;
|
|
|
onPlayerMakingTurn(player, 0);
|
|
|
}
|
|
|
- else if(!gameHandler.queries->topQuery(state->color)) //wait for replies to avoid pending queries
|
|
|
+ else if(endTurnAllowed[state->color] && !gameHandler.queries->topQuery(state->color)) //wait for replies to avoid pending queries
|
|
|
gameHandler.turnOrder->onPlayerEndsTurn(state->color);
|
|
|
}
|
|
|
}
|