diff --git a/ValheimServerGUI/Forms/WorldPreferencesForm.Designer.cs b/ValheimServerGUI/Forms/WorldPreferencesForm.Designer.cs index 7d54f65..29f1628 100644 --- a/ValheimServerGUI/Forms/WorldPreferencesForm.Designer.cs +++ b/ValheimServerGUI/Forms/WorldPreferencesForm.Designer.cs @@ -36,6 +36,7 @@ private void InitializeComponent() ModifierDeathPenaltyFormField = new ValheimServerGUI.Controls.DropdownFormField(); ModifierCombatFormField = new ValheimServerGUI.Controls.DropdownFormField(); KeysGroupBox = new System.Windows.Forms.GroupBox(); + KeyFireFormField = new ValheimServerGUI.Controls.CheckboxFormField(); KeyNoMapFormField = new ValheimServerGUI.Controls.CheckboxFormField(); KeyPassiveMobsFormField = new ValheimServerGUI.Controls.CheckboxFormField(); KeyPlayerEventsFormField = new ValheimServerGUI.Controls.CheckboxFormField(); @@ -76,7 +77,7 @@ private void InitializeComponent() ModifierPortalsFormField.Location = new System.Drawing.Point(6, 210); ModifierPortalsFormField.Name = "ModifierPortalsFormField"; ModifierPortalsFormField.Size = new System.Drawing.Size(188, 41); - ModifierPortalsFormField.TabIndex = 5; + ModifierPortalsFormField.TabIndex = 4; ModifierPortalsFormField.Value = null; // // ModifierResourcesFormField @@ -89,7 +90,7 @@ private void InitializeComponent() ModifierResourcesFormField.Location = new System.Drawing.Point(6, 116); ModifierResourcesFormField.Name = "ModifierResourcesFormField"; ModifierResourcesFormField.Size = new System.Drawing.Size(188, 41); - ModifierResourcesFormField.TabIndex = 4; + ModifierResourcesFormField.TabIndex = 2; ModifierResourcesFormField.Value = null; // // ModifierRaidsFormField @@ -133,17 +134,29 @@ private void InitializeComponent() // // KeysGroupBox // + KeysGroupBox.Controls.Add(KeyFireFormField); KeysGroupBox.Controls.Add(KeyNoMapFormField); KeysGroupBox.Controls.Add(KeyPassiveMobsFormField); KeysGroupBox.Controls.Add(KeyPlayerEventsFormField); KeysGroupBox.Controls.Add(KeyNoBuildCostFormField); KeysGroupBox.Location = new System.Drawing.Point(222, 59); KeysGroupBox.Name = "KeysGroupBox"; - KeysGroupBox.Size = new System.Drawing.Size(200, 123); + KeysGroupBox.Size = new System.Drawing.Size(200, 141); KeysGroupBox.TabIndex = 2; KeysGroupBox.TabStop = false; KeysGroupBox.Text = "Additional Keys"; // + // KeyFireFormField + // + KeyFireFormField.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + KeyFireFormField.HelpText = "Wood can catch fire and spread throughout the\r\nwhole world, not just in the Ashlands."; + KeyFireFormField.LabelText = "Fire hazards"; + KeyFireFormField.Location = new System.Drawing.Point(6, 114); + KeyFireFormField.Name = "KeyFireFormField"; + KeyFireFormField.Size = new System.Drawing.Size(188, 17); + KeyFireFormField.TabIndex = 4; + KeyFireFormField.Value = false; + // // KeyNoMapFormField // KeyNoMapFormField.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; @@ -163,7 +176,7 @@ private void InitializeComponent() KeyPassiveMobsFormField.Location = new System.Drawing.Point(6, 45); KeyPassiveMobsFormField.Name = "KeyPassiveMobsFormField"; KeyPassiveMobsFormField.Size = new System.Drawing.Size(188, 17); - KeyPassiveMobsFormField.TabIndex = 2; + KeyPassiveMobsFormField.TabIndex = 1; KeyPassiveMobsFormField.Value = false; // // KeyPlayerEventsFormField @@ -174,7 +187,7 @@ private void InitializeComponent() KeyPlayerEventsFormField.Location = new System.Drawing.Point(6, 68); KeyPlayerEventsFormField.Name = "KeyPlayerEventsFormField"; KeyPlayerEventsFormField.Size = new System.Drawing.Size(188, 17); - KeyPlayerEventsFormField.TabIndex = 1; + KeyPlayerEventsFormField.TabIndex = 2; KeyPlayerEventsFormField.Value = false; // // KeyNoBuildCostFormField @@ -256,7 +269,7 @@ private void InitializeComponent() // label2 // label2.AutoSize = true; - label2.Location = new System.Drawing.Point(228, 201); + label2.Location = new System.Drawing.Point(228, 203); label2.Name = "label2"; label2.Size = new System.Drawing.Size(178, 45); label2.TabIndex = 8; @@ -322,5 +335,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.LinkLabel ModifiersLinkLabel; + private ValheimServerGUI.Controls.CheckboxFormField KeyFireFormField; } } \ No newline at end of file diff --git a/ValheimServerGUI/Forms/WorldPreferencesForm.cs b/ValheimServerGUI/Forms/WorldPreferencesForm.cs index 75425c0..e27a1bb 100644 --- a/ValheimServerGUI/Forms/WorldPreferencesForm.cs +++ b/ValheimServerGUI/Forms/WorldPreferencesForm.cs @@ -178,6 +178,7 @@ private void SetFormValuesFromPreset() case WorldGenPresets.Immersive: ModifierPortalsFormField.Value = DisplayNames.PortalsVeryHard; KeyNoMapFormField.Value = true; + KeyFireFormField.Value = true; break; default: break; @@ -253,6 +254,7 @@ private void InitializeFormEvents() KeyPlayerEventsFormField.ValueChanged += KeyFormField_ValueChanged; KeyPassiveMobsFormField.ValueChanged += KeyFormField_ValueChanged; KeyNoMapFormField.ValueChanged += KeyFormField_ValueChanged; + KeyFireFormField.ValueChanged += KeyFormField_ValueChanged; } private void SetFormDefaultValues() @@ -269,6 +271,7 @@ private void SetFormDefaultValues() KeyPlayerEventsFormField.Value = false; KeyPassiveMobsFormField.Value = false; KeyNoMapFormField.Value = false; + KeyFireFormField.Value = false; } #region Load methods @@ -298,6 +301,7 @@ private void LoadFormFromPreferences() LoadKeyFromPreferences(prefs, WorldGenKeys.PlayerEvents, KeyPlayerEventsFormField); LoadKeyFromPreferences(prefs, WorldGenKeys.PassiveMobs, KeyPassiveMobsFormField); LoadKeyFromPreferences(prefs, WorldGenKeys.NoMap, KeyNoMapFormField); + LoadKeyFromPreferences(prefs, WorldGenKeys.Fire, KeyFireFormField); } } @@ -376,6 +380,7 @@ private void SaveFormToPreferences() SaveKeyToPreferences(prefs, WorldGenKeys.PlayerEvents, KeyPlayerEventsFormField); SaveKeyToPreferences(prefs, WorldGenKeys.PassiveMobs, KeyPassiveMobsFormField); SaveKeyToPreferences(prefs, WorldGenKeys.NoMap, KeyNoMapFormField); + SaveKeyToPreferences(prefs, WorldGenKeys.Fire, KeyFireFormField); } WorldPrefsProvider.SavePreferences(prefs); diff --git a/ValheimServerGUI/Game/ValheimServer.cs b/ValheimServerGUI/Game/ValheimServer.cs index 0814eed..9e15281 100644 --- a/ValheimServerGUI/Game/ValheimServer.cs +++ b/ValheimServerGUI/Game/ValheimServer.cs @@ -91,6 +91,7 @@ private void InitializeLogBasedActions() // Disconnected LogBasedActions.Add(@"Closing socket (\d+?)\D*?$", OnPlayerDisconnected); // This is technically "disconnecting" but it's the best terminator I can find LogBasedActions.Add(@"Destroying abandoned non persistent zdo ([\d-]+?):.*$", OnPlayerDisconnected); // Crossplay + LogBasedActions.Add(@"Disconnect: The client \((\w+?)_(\d+?)\)", OnPlayerDisconnectedCrossplay); // Valheim Plus version mismatch } private void InitializeStatusBasedActions() @@ -317,6 +318,15 @@ private void OnPlayerDisconnected(params string[] captures) PlayerDataRepository.SetPlayerOffline(query); } + private void OnPlayerDisconnectedCrossplay(params string[] captures) + { + var hasValidPlatform = PlayerPlatforms.TryGetValidPlatform(captures[0], out var platform); + var playerId = captures[1]; + if (!hasValidPlatform || string.IsNullOrWhiteSpace(playerId)) return; + + PlayerDataRepository.SetPlayerOffline(new() { Platform = platform, PlayerId = playerId }); + } + private void OnWorldSaved(params string[] captures) { if (!decimal.TryParse(captures[0], out var timeMs)) diff --git a/ValheimServerGUI/Game/WorldGenKeys.cs b/ValheimServerGUI/Game/WorldGenKeys.cs index 23a3cb3..27065f2 100644 --- a/ValheimServerGUI/Game/WorldGenKeys.cs +++ b/ValheimServerGUI/Game/WorldGenKeys.cs @@ -8,6 +8,7 @@ public static class WorldGenKeys public const string PlayerEvents = "playerevents"; public const string PassiveMobs = "passivemobs"; public const string NoMap = "nomap"; + public const string Fire = "fire"; public static readonly IReadOnlyList All = new List { @@ -15,6 +16,7 @@ public static class WorldGenKeys PlayerEvents, PassiveMobs, NoMap, + Fire, }; } } diff --git a/ValheimServerGUI/ValheimServerGUI.csproj b/ValheimServerGUI/ValheimServerGUI.csproj index 4a21081..107555b 100644 --- a/ValheimServerGUI/ValheimServerGUI.csproj +++ b/ValheimServerGUI/ValheimServerGUI.csproj @@ -10,7 +10,7 @@ A simple user interface for running Valheim Dedicated Server on Windows. 2022 GNU GPLv3 - 2.3.0 + 2.3.1 build$([System.DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"))