1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-23 23:04:36 +01:00

Replace gCurrentTicks with the one in GameState_t

This commit is contained in:
ζeh Matt
2023-12-28 00:53:43 +02:00
parent 4c919f74aa
commit a5dde0f8dc
39 changed files with 259 additions and 146 deletions

View File

@@ -11,6 +11,7 @@
#include "../Context.h"
#include "../Game.h"
#include "../GameState.h"
#include "../GameStateSnapshots.h"
#include "../OpenRCT2.h"
#include "../PlatformEnvironment.h"
@@ -39,6 +40,8 @@
#include <iterator>
#include <stdexcept>
using namespace OpenRCT2;
// This string specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
@@ -783,12 +786,14 @@ bool NetworkBase::IsDesynchronised() const noexcept
bool NetworkBase::CheckDesynchronizaton()
{
const auto currentTicks = GetGameState().CurrentTicks;
// Check synchronisation
if (GetMode() == NETWORK_MODE_CLIENT && _serverState.state != NetworkServerStatus::Desynced
&& !CheckSRAND(gCurrentTicks, ScenarioRandState().s0))
&& !CheckSRAND(currentTicks, ScenarioRandState().s0))
{
_serverState.state = NetworkServerStatus::Desynced;
_serverState.desyncTick = gCurrentTicks;
_serverState.desyncTick = currentTicks;
char str_desync[256];
FormatStringLegacy(str_desync, 256, STR_MULTIPLAYER_DESYNC, nullptr);
@@ -1496,7 +1501,7 @@ void NetworkBase::Client_Send_GAME_ACTION(const GameAction* action)
DataSerialiser stream(true);
action->Serialise(stream);
packet << gCurrentTicks << action->GetType() << stream;
packet << GetGameState().CurrentTicks << action->GetType() << stream;
_serverConnection->QueuePacket(std::move(packet));
}
@@ -1507,7 +1512,7 @@ void NetworkBase::ServerSendGameAction(const GameAction* action)
DataSerialiser stream(true);
action->Serialise(stream);
packet << gCurrentTicks << action->GetType() << stream;
packet << GetGameState().CurrentTicks << action->GetType() << stream;
SendPacketToClients(packet);
}
@@ -1515,7 +1520,7 @@ void NetworkBase::ServerSendGameAction(const GameAction* action)
void NetworkBase::ServerSendTick()
{
NetworkPacket packet(NetworkCommand::Tick);
packet << gCurrentTicks << ScenarioRandState().s0;
packet << GetGameState().CurrentTicks << ScenarioRandState().s0;
uint32_t flags = 0;
// Simple counter which limits how often a sprite checksum gets sent.
// This can get somewhat expensive, so we don't want to push it every tick in release,
@@ -1542,7 +1547,7 @@ void NetworkBase::ServerSendTick()
void NetworkBase::ServerSendPlayerInfo(int32_t playerId)
{
NetworkPacket packet(NetworkCommand::PlayerInfo);
packet << gCurrentTicks;
packet << GetGameState().CurrentTicks;
auto* player = GetPlayerByID(playerId);
if (player == nullptr)
@@ -1555,7 +1560,7 @@ void NetworkBase::ServerSendPlayerInfo(int32_t playerId)
void NetworkBase::ServerSendPlayerList()
{
NetworkPacket packet(NetworkCommand::PlayerList);
packet << gCurrentTicks << static_cast<uint8_t>(player_list.size());
packet << GetGameState().CurrentTicks << static_cast<uint8_t>(player_list.size());
for (auto& player : player_list)
{
player->Write(packet);
@@ -1849,7 +1854,7 @@ void NetworkBase::ProcessPlayerList()
auto itPending = _pendingPlayerLists.begin();
while (itPending != _pendingPlayerLists.end())
{
if (itPending->first > gCurrentTicks)
if (itPending->first > GetGameState().CurrentTicks)
break;
// List of active players found in the list.
@@ -1921,7 +1926,9 @@ void NetworkBase::ProcessPlayerList()
void NetworkBase::ProcessPlayerInfo()
{
auto range = _pendingPlayerInfo.equal_range(gCurrentTicks);
const auto currentTicks = GetGameState().CurrentTicks;
auto range = _pendingPlayerInfo.equal_range(currentTicks);
for (auto it = range.first; it != range.second; it++)
{
auto* player = GetPlayerByID(it->second.Id);
@@ -1936,7 +1943,7 @@ void NetworkBase::ProcessPlayerInfo()
player->CommandsRan = networkedInfo.CommandsRan;
}
}
_pendingPlayerInfo.erase(gCurrentTicks);
_pendingPlayerInfo.erase(currentTicks);
}
void NetworkBase::ProcessDisconnectedClients()
@@ -2750,7 +2757,7 @@ void NetworkBase::Client_Handle_MAP([[maybe_unused]] NetworkConnection& connecti
GameLoadInit();
GameLoadScripts();
GameNotifyMapChanged();
_serverState.tick = gCurrentTicks;
_serverState.tick = GetGameState().CurrentTicks;
// WindowNetworkStatusOpen("Loaded new map from network");
_serverState.state = NetworkServerStatus::Ok;
_clientMapLoaded = true;
@@ -4030,7 +4037,7 @@ NetworkAuth NetworkGetAuthstatus()
}
uint32_t NetworkGetServerTick()
{
return gCurrentTicks;
return GetGameState().CurrentTicks;
}
void NetworkFlush()
{