From 223eaa9fd0ee2c8ef29d7be4eaa41c1fcb450d67 Mon Sep 17 00:00:00 2001 From: z__ Date: Sat, 12 Feb 2022 01:58:00 +0700 Subject: [PATCH] rebase online players counter to events --- Torch.Server/TorchServer.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Torch.Server/TorchServer.cs b/Torch.Server/TorchServer.cs index 002c496..2797de7 100644 --- a/Torch.Server/TorchServer.cs +++ b/Torch.Server/TorchServer.cs @@ -196,6 +196,7 @@ namespace Torch.Server State = ServerState.Stopped; IsRunning = false; CanRun = true; + SimulationRatio = 0; } /// @@ -244,11 +245,23 @@ namespace Torch.Server if (newState == TorchSessionState.Loaded) { _multiplayerManagerDedicated = CurrentSession.Managers.GetManager(); + _multiplayerManagerDedicated.PlayerJoined += MultiplayerManagerDedicatedOnPlayerJoined; + _multiplayerManagerDedicated.PlayerLeft += MultiplayerManagerDedicatedOnPlayerLeft; CurrentSession.Managers.GetManager().RegisterCommandModule(typeof(WhitelistCommands)); ModCommunication.Register(); } } + private void MultiplayerManagerDedicatedOnPlayerLeft(IPlayer player) + { + OnlinePlayers--; + } + + private void MultiplayerManagerDedicatedOnPlayerJoined(IPlayer player) + { + OnlinePlayers++; + } + /// public override void Init(object gameInstance) { @@ -267,7 +280,6 @@ namespace Torch.Server SimulationRatio = Math.Min(Sync.ServerSimulationRatio, 1); var elapsed = TimeSpan.FromSeconds(Math.Floor(_uptime.Elapsed.TotalSeconds)); ElapsedPlayTime = elapsed; - OnlinePlayers = _multiplayerManagerDedicated?.Players.Count ?? 0; if (_watchdog == null && Config.TickTimeout > 0) {