private void DrawNetworkSettings() { _showAdvancedNetworkSettings = GUILayout.Toggle(_showAdvancedNetworkSettings, LocalizationContainer.OptionsWindowText.NetworkSettings, ButtonStyle); if (_showAdvancedNetworkSettings) { if (MainSystem.NetworkState > ClientState.Disconnected) { GUILayout.Label(LocalizationContainer.OptionsWindowText.CannotChangeWhileConnected); } GUILayout.Label($"{LocalizationContainer.OptionsWindowText.Mtu} {NetworkMain.Config.MaximumTransmissionUnit}"); if (MainSystem.NetworkState <= ClientState.Disconnected) { if (NetworkMain.ClientConnection.Status != NetPeerStatus.NotRunning) { if (GUILayout.Button(LocalizationContainer.OptionsWindowText.ResetNetwork)) { NetworkMain.ResetNetworkSystem(); } } else { var mtuValue = (int)Math.Round(GUILayout.HorizontalScrollbar(SettingsSystem.CurrentSettings.Mtu, 0, 1, NetworkMain.MaxMtuSize)); if (mtuValue != SettingsSystem.CurrentSettings.Mtu) { NetworkMain.Config.MaximumTransmissionUnit = SettingsSystem.CurrentSettings.Mtu = mtuValue; SettingsSystem.SaveSettings(); } var autoExpandValue = GUILayout.Toggle(SettingsSystem.CurrentSettings.AutoExpandMtu, LocalizationContainer.OptionsWindowText.AutoExpandMtu); if (autoExpandValue != SettingsSystem.CurrentSettings.AutoExpandMtu) { NetworkMain.Config.AutoExpandMTU = SettingsSystem.CurrentSettings.AutoExpandMtu = autoExpandValue; SettingsSystem.SaveSettings(); } } } if (SettingsSystem.CurrentSettings.TimeoutSeconds == float.MaxValue) { GUILayout.Label($"{LocalizationContainer.OptionsWindowText.ConnectionTimeout} ∞"); } else { GUILayout.Label($"{LocalizationContainer.OptionsWindowText.ConnectionTimeout} {NetworkMain.Config.ConnectionTimeout} sec"); } if (MainSystem.NetworkState <= ClientState.Disconnected) { _infiniteTimeout = SettingsSystem.CurrentSettings.TimeoutSeconds == float.MaxValue; GUI.enabled = !_infiniteTimeout; var newTimeoutVal = (int)Math.Round(GUILayout.HorizontalScrollbar(SettingsSystem.CurrentSettings.TimeoutSeconds, 0, NetworkMain.Config.PingInterval, 120)); if (newTimeoutVal != SettingsSystem.CurrentSettings.TimeoutSeconds) { NetworkMain.Config.ConnectionTimeout = SettingsSystem.CurrentSettings.TimeoutSeconds = newTimeoutVal; SettingsSystem.SaveSettings(); } GUI.enabled = true; _infiniteTimeout = GUILayout.Toggle(_infiniteTimeout, "∞", "toggle"); if (_infiniteTimeout) { NetworkMain.Config.ConnectionTimeout = SettingsSystem.CurrentSettings.TimeoutSeconds = float.MaxValue; SettingsSystem.SaveSettings(); } } } }