diff --git a/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs b/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs index db757927eb..bce59570de 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbySettingsNotification.cs @@ -9,8 +9,8 @@ */ #endregion +using System.Collections.Generic; using System.Linq; -using OpenRA.Mods.Common.Traits; using OpenRA.Network; using OpenRA.Server; using OpenRA.Traits; @@ -29,16 +29,19 @@ namespace OpenRA.Mods.Common.Server var options = server.Map.Rules.Actors["player"].TraitInfos() .Concat(server.Map.Rules.Actors["world"].TraitInfos()) - .SelectMany(t => t.LobbyOptions(server.Map.Rules)) - .ToDictionary(o => o.Id, o => o); + .SelectMany(t => t.LobbyOptions(server.Map.Rules)); + + var optionNames = new Dictionary(); + foreach (var o in options) + optionNames[o.Id] = o.Name; foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions) { Session.LobbyOptionState def; - LobbyOption option; + string optionName; if (!defaults.LobbyOptions.TryGetValue(kv.Key, out def) || kv.Value.Value != def.Value) - if (options.TryGetValue(kv.Key, out option)) - server.SendOrderTo(conn, "Message", option.Name + ": " + kv.Value.Value); + if (optionNames.TryGetValue(kv.Key, out optionName)) + server.SendOrderTo(conn, "Message", optionName + ": " + kv.Value.Value); } } }