Skip to content

Commit 85a7d62

Browse files
authored
Enabled max discord party to be updated from max connections config (SubnauticaNitrox#1241)
* Enabled max discord party to be updated from max connections config * Updated function call with string interpolation
1 parent 38e2255 commit 85a7d62

6 files changed

Lines changed: 11 additions & 8 deletions

File tree

NitroxClient/MonoBehaviours/DiscordRP/DiscordRPController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ private void OnDisable()
9292
DiscordRpc.Shutdown();
9393
}
9494

95-
public void InitializeInGame(string username, int playerCount, string ipAddressPort)
95+
public void InitializeInGame(string username, int playerCount, int maxConnections, string ipAddressPort)
9696
{
9797
Presence.state = "In game";
9898
Presence.details = "Playing as " + username;
9999
Presence.startTimestamp = 0;
100100
Presence.partyId = "PartyID:" + CheckIP(ipAddressPort);
101101
Presence.partySize = playerCount;
102-
Presence.partyMax = 100;
102+
Presence.partyMax = maxConnections;
103103
Presence.joinSecret = CheckIP(ipAddressPort);
104104
SendRP();
105105
}

NitroxClient/MonoBehaviours/Multiplayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ private static void SetLoadingComplete()
172172
PlayerManager remotePlayerManager = NitroxServiceLocator.LocateService<PlayerManager>();
173173

174174
LoadingScreenVersionText.DisableWarningText();
175-
DiscordRPController.Main.InitializeInGame(Main.multiplayerSession.AuthenticationContext.Username, remotePlayerManager.GetTotalPlayerCount(), Main.multiplayerSession.IpAddress + ":" + Main.multiplayerSession.ServerPort);
175+
DiscordRPController.Main.InitializeInGame(Main.multiplayerSession.AuthenticationContext.Username, remotePlayerManager.GetTotalPlayerCount(), Main.multiplayerSession.SessionPolicy.MaxConnections, $"{Main.multiplayerSession.IpAddress}:{Main.multiplayerSession.ServerPort}");
176176
NitroxServiceLocator.LocateService<PlayerChatManager>().LoadChatKeyHint();
177177
}
178178

NitroxModel/Packets/MultiplayerSessionPolicy.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@ public class MultiplayerSessionPolicy : CorrelatedPacket
88
{
99
public bool RequiresServerPassword { get; }
1010
public bool DisableConsole { get; }
11+
public int MaxConnections { get; }
1112

1213
public MultiplayerSessionAuthenticationAuthority AuthenticationAuthority { get; }
1314

1415
public Version NitroxVersionAllowed { get; }
1516

16-
public MultiplayerSessionPolicy(string correlationId, bool disableConsole)
17+
public MultiplayerSessionPolicy(string correlationId, bool disableConsole, int maxConnections)
1718
: base(correlationId)
1819
{
1920
// This is done intentionally. It is only a stub for future extension.
2021
RequiresServerPassword = false;
2122
AuthenticationAuthority = MultiplayerSessionAuthenticationAuthority.SERVER;
2223
DisableConsole = disableConsole;
24+
MaxConnections = maxConnections;
2325
// get the full version name
2426
Version ver = typeof(MultiplayerSessionPolicy).Assembly.GetName().Version;
2527
// only the major and minor version number is required

NitroxServer/Communication/Packets/Processors/MultiplayerSessionPolicyRequestProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public MultiplayerSessionPolicyRequestProcessor(ServerConfig config)
1919
public override void Process(MultiplayerSessionPolicyRequest packet, NitroxConnection connection)
2020
{
2121
Log.Info("Providing session policies...");
22-
connection.SendPacket(new MultiplayerSessionPolicy(packet.CorrelationId, config.DisableConsole));
22+
connection.SendPacket(new MultiplayerSessionPolicy(packet.CorrelationId, config.DisableConsole, config.MaxConnections));
2323
}
2424
}
2525
}

NitroxTest/Client/Communication/MultiplayerSessionTests/ConnectionStateTests/ConnectionNegotiatingStateTests/EstablishingSessionPolicyStateTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void NegotiateShouldTransitionToAwaitingReservationCredentialsState()
1717
{
1818
// Arrange
1919
IMultiplayerSessionConnectionContext connectionContext = Substitute.For<IMultiplayerSessionConnectionContext>();
20-
connectionContext.SessionPolicy.Returns(new MultiplayerSessionPolicy(TestConstants.TEST_CORRELATION_ID, false));
20+
connectionContext.SessionPolicy.Returns(new MultiplayerSessionPolicy(TestConstants.TEST_CORRELATION_ID, false, TestConstants.TEST_MAX_PLAYER_CONNECTIONS));
2121

2222
EstablishingSessionPolicy connectionState = new EstablishingSessionPolicy(TestConstants.TEST_CORRELATION_ID);
2323

@@ -33,7 +33,7 @@ public void NegotiateShouldThrowUncorrelatedPacketExceptionWhenThePolicyHasTheWr
3333
{
3434
// Arrange
3535
IMultiplayerSessionConnectionContext connectionContext = Substitute.For<IMultiplayerSessionConnectionContext>();
36-
connectionContext.SessionPolicy.Returns(new MultiplayerSessionPolicy("wrong", false));
36+
connectionContext.SessionPolicy.Returns(new MultiplayerSessionPolicy("wrong", false, TestConstants.TEST_MAX_PLAYER_CONNECTIONS));
3737

3838
EstablishingSessionPolicy connectionState = new EstablishingSessionPolicy(TestConstants.TEST_CORRELATION_ID);
3939

NitroxTest/Client/Communication/MultiplayerSessionTests/TestConstants.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ internal static class TestConstants
1313
public const string TEST_PLAYER_NAME = "TEST";
1414
public const string TEST_RESERVATION_KEY = "@#*(&";
1515
public const string TEST_CORRELATION_ID = "CORRELATED";
16+
public const int TEST_MAX_PLAYER_CONNECTIONS = 100;
1617
public const MultiplayerSessionReservationState TEST_REJECTION_STATE = MultiplayerSessionReservationState.REJECTED | MultiplayerSessionReservationState.UNIQUE_PLAYER_NAME_CONSTRAINT_VIOLATED;
1718
public static readonly AuthenticationContext TEST_AUTHENTICATION_CONTEXT = new AuthenticationContext(TEST_PLAYER_NAME);
18-
public static readonly MultiplayerSessionPolicy TEST_SESSION_POLICY = new MultiplayerSessionPolicy(TEST_CORRELATION_ID, false);
19+
public static readonly MultiplayerSessionPolicy TEST_SESSION_POLICY = new MultiplayerSessionPolicy(TEST_CORRELATION_ID, false, TEST_MAX_PLAYER_CONNECTIONS);
1920
public static readonly PlayerSettings TEST_PLAYER_SETTINGS = new PlayerSettings(RandomColorGenerator.GenerateColor());
2021
public static readonly IMultiplayerSessionConnectionState TEST_CONNECTION_STATE = Substitute.For<IMultiplayerSessionConnectionState>();
2122
}

0 commit comments

Comments
 (0)