From 61e17b8c86e1c344cb1542d32533e6358a69633d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 3 Mar 2016 20:34:49 +0000 Subject: [PATCH] Fix option reporting when joining a server. --- .../ServerTraits/LobbyCommands.cs | 52 ++++++++++--------- .../ServerTraits/LobbySettingsNotification.cs | 1 + 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index d8d1c12a14..5089f8b7ca 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -1013,6 +1013,33 @@ namespace OpenRA.Mods.Common.Server }; } + public static void LoadMapSettings(Session.Global gs, Map map) + { + var devMode = map.Rules.Actors["player"].TraitInfo(); + gs.AllowCheats = devMode.Enabled; + + var crateSpawner = map.Rules.Actors["world"].TraitInfoOrDefault(); + gs.Crates = crateSpawner != null && crateSpawner.Enabled; + + var shroud = map.Rules.Actors["player"].TraitInfo(); + gs.Fog = shroud.FogEnabled; + gs.Shroud = !shroud.ExploredMapEnabled; + + var resources = map.Rules.Actors["player"].TraitInfo(); + gs.StartingCash = resources.DefaultCash; + + var startingUnits = map.Rules.Actors["world"].TraitInfoOrDefault(); + gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass; + + var mapBuildRadius = map.Rules.Actors["world"].TraitInfoOrDefault(); + gs.AllyBuildRadius = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled; + + var mapOptions = map.Rules.Actors["world"].TraitInfo(); + gs.ShortGame = mapOptions.ShortGameEnabled; + gs.TechLevel = mapOptions.TechLevel; + gs.Difficulty = mapOptions.Difficulty ?? mapOptions.Difficulties.FirstOrDefault(); + } + static void LoadMap(S server) { server.Map = new Map(server.ModData, server.ModData.MapCache[server.LobbyInfo.GlobalSettings.Map].Package); @@ -1023,30 +1050,7 @@ namespace OpenRA.Mods.Common.Server .Where(s => s != null) .ToDictionary(s => s.PlayerReference, s => s); - var gs = server.LobbyInfo.GlobalSettings; - var devMode = server.Map.Rules.Actors["player"].TraitInfo(); - gs.AllowCheats = devMode.Enabled; - - var crateSpawner = server.Map.Rules.Actors["world"].TraitInfoOrDefault(); - gs.Crates = crateSpawner != null && crateSpawner.Enabled; - - var shroud = server.Map.Rules.Actors["player"].TraitInfo(); - gs.Fog = shroud.FogEnabled; - gs.Shroud = !shroud.ExploredMapEnabled; - - var resources = server.Map.Rules.Actors["player"].TraitInfo(); - gs.StartingCash = resources.DefaultCash; - - var startingUnits = server.Map.Rules.Actors["world"].TraitInfoOrDefault(); - gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass; - - var mapBuildRadius = server.Map.Rules.Actors["world"].TraitInfoOrDefault(); - gs.AllyBuildRadius = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled; - - var mapOptions = server.Map.Rules.Actors["world"].TraitInfo(); - gs.ShortGame = mapOptions.ShortGameEnabled; - gs.TechLevel = mapOptions.TechLevel; - gs.Difficulty = mapOptions.Difficulty ?? mapOptions.Difficulties.FirstOrDefault(); + LoadMapSettings(server.LobbyInfo.GlobalSettings, server.Map); } static HSLColor SanitizePlayerColor(S server, HSLColor askedColor, int playerIndex, Connection connectionToEcho = null) diff --git a/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs b/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs index 342623f468..963ffcd99c 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs @@ -24,6 +24,7 @@ namespace OpenRA.Mods.Common.Server return; var defaults = new Session.Global(); + LobbyCommands.LoadMapSettings(defaults, server.Map); if (server.LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats) server.SendOrderTo(conn, "Message", "Allow Cheats: {0}".F(server.LobbyInfo.GlobalSettings.AllowCheats));