Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit 70f8c55

Browse files
committed
Fixed activity set to restart not working properly cause the game tried to go back to the menu
Made multiplayer end activity voting also have a timeout interval so things work properly
1 parent c93782d commit 70f8c55

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

Main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ namespace RTE {
235235
g_TimerMan.PauseSim(true);
236236
if (g_MetaMan.GameInProgress()) {
237237
g_MenuMan.GetTitleScreen()->SetTitleTransitionState(TitleScreen::TitleTransition::MetaGameFadeIn);
238-
} else {
238+
} else if (!g_ActivityMan.ActivitySetToRestart()) {
239239
const Activity *activity = g_ActivityMan.GetActivity();
240240
// If we edited something then return to main menu instead of scenario menu.
241241
if (activity && activity->GetPresetName() == "None") {
@@ -244,7 +244,7 @@ namespace RTE {
244244
g_MenuMan.GetTitleScreen()->SetTitleTransitionState(TitleScreen::TitleTransition::ScenarioFadeIn);
245245
}
246246
}
247-
RunMenuLoop();
247+
if (!g_ActivityMan.ActivitySetToRestart()) { RunMenuLoop(); }
248248
}
249249
if (g_ActivityMan.ActivitySetToRestart() && !g_ActivityMan.RestartActivity()) {
250250
break;

Managers/NetworkServer.cpp

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,8 +1655,14 @@ namespace RTE {
16551655
for (short player = 0; player < c_MaxClients; player++) {
16561656
if (IsPlayerConnected(player)) {
16571657
votesNeeded++;
1658-
if (m_EndActivityVotes[player]) { endActivityVotes++; }
1659-
if (m_RestartActivityVotes[player]) { restartVotes++; }
1658+
if (m_EndActivityVotes[player]) {
1659+
endActivityVotes++;
1660+
m_EndActivityVotes[player] = false;
1661+
}
1662+
if (m_RestartActivityVotes[player]) {
1663+
restartVotes++;
1664+
m_RestartActivityVotes[player] = false;
1665+
}
16601666
}
16611667
}
16621668

@@ -1676,22 +1682,22 @@ namespace RTE {
16761682
g_ActivityMan.GetActivity()->ResetMessageTimer(i);
16771683
}
16781684

1679-
// establish timer so restarts can only occur once per 5 seconds
1685+
// establish timer so restarts can only occur once per 3 seconds
16801686
long long currentTicks = g_TimerMan.GetRealTickCount();
1681-
int minRestartInterval = 5;
1682-
1683-
if (endActivityVotes >= votesNeeded) {
1684-
g_ActivityMan.EndActivity();
1685-
g_ActivityMan.SetRestartActivity();
1686-
g_ActivityMan.SetInActivity(false);
1687-
} else if (restartVotes >= votesNeeded && ((currentTicks - m_LatestRestartTime > (g_TimerMan.GetTicksPerSecond() * minRestartInterval) || m_LatestRestartTime == 0))) {
1688-
m_LatestRestartTime = currentTicks;
1689-
g_ActivityMan.RestartActivity();
1690-
}
1691-
1692-
for (short player = 0; player < c_MaxClients; player++) {
1693-
m_EndActivityVotes[player] = false;
1694-
m_RestartActivityVotes[player] = false;
1687+
int minRestartInterval = 3;
1688+
1689+
if ((currentTicks - m_LatestRestartTime > (g_TimerMan.GetTicksPerSecond() * minRestartInterval)) || m_LatestRestartTime == 0) {
1690+
if (endActivityVotes >= votesNeeded) {
1691+
m_LatestRestartTime = currentTicks;
1692+
g_ActivityMan.EndActivity();
1693+
g_ActivityMan.SetRestartActivity();
1694+
g_ActivityMan.SetInActivity(false);
1695+
for (short player = 0; player < c_MaxClients; player++) { ClearInputMessages(player); }
1696+
} else if (restartVotes >= votesNeeded) {
1697+
m_LatestRestartTime = currentTicks;
1698+
g_ActivityMan.RestartActivity();
1699+
for (short player = 0; player < c_MaxClients; player++) { ClearInputMessages(player); }
1700+
}
16951701
}
16961702
}
16971703
}

0 commit comments

Comments
 (0)