Skip to content
18 changes: 17 additions & 1 deletion SSMP/Game/Server/ModServerManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Linq;
using SSMP.Game.Command.Server;
using SSMP.Game.Settings;
using SSMP.Networking.Packet;
Expand Down Expand Up @@ -58,9 +59,12 @@ public override void Initialize() {
AddonManager.LoadAddons();

// Register handlers for UI events
_uiManager.RequestServerStartHostEvent += (_, port, _, transportType, _) =>
_uiManager.RequestServerStartHostEvent += (_, port, _, transportType, _) =>
OnRequestServerStartHost(port, _modSettings.FullSynchronisation, transportType);
_uiManager.RequestServerStopHostEvent += Stop;
PlayerConnectEvent += _ => UpdateMatchmakingRemotePlayerCount();
PlayerDisconnectEvent += _ => UpdateMatchmakingRemotePlayerCount();
ServerShutdownEvent += () => _uiManager.ConnectInterface.MmsClient.SetConnectedPlayers(0);

// Register application quit handler
// ModHooks.ApplicationQuitHook += Stop;
Expand Down Expand Up @@ -97,6 +101,7 @@ private void OnRequestServerStartHost(int port, bool fullSynchronisation, Transp
};

Start(port, fullSynchronisation, transportServer);
UpdateMatchmakingRemotePlayerCount();
}

/// <summary>
Expand All @@ -119,4 +124,15 @@ protected override void DeregisterCommands() {

CommandManager.DeregisterCommand(_settingsCommand);
}

/// <summary>
/// Pushes the current remote-player count to MMS heartbeat state.
/// </summary>
private void UpdateMatchmakingRemotePlayerCount() {
var hostAuthKey = _modSettings.AuthKey;
var remotePlayerCount = hostAuthKey == null
? 0
: Players.Count(player => player.AuthKey != hostAuthKey);
_uiManager.ConnectInterface.MmsClient.SetConnectedPlayers(remotePlayerCount);
}
}
Loading