Use lobby option display values when clients join

This commit is contained in:
Curtis Shmyr
2020-10-10 21:03:30 -06:00
committed by abcdefg30
parent 8fb65fd9bf
commit c0cbca26ea

View File

@@ -9,7 +9,6 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Network; using OpenRA.Network;
using OpenRA.Server; using OpenRA.Server;
@@ -31,17 +30,14 @@ namespace OpenRA.Mods.Common.Server
var options = server.Map.Rules.Actors["player"].TraitInfos<ILobbyOptions>() var options = server.Map.Rules.Actors["player"].TraitInfos<ILobbyOptions>()
.Concat(server.Map.Rules.Actors["world"].TraitInfos<ILobbyOptions>()) .Concat(server.Map.Rules.Actors["world"].TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(server.Map.Rules)); .SelectMany(t => t.LobbyOptions(server.Map.Rules))
.ToDictionary(o => o.Id, o => o);
var optionNames = new Dictionary<string, string>();
foreach (var o in options)
optionNames[o.Id] = o.Name;
foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions) foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions)
{ {
if (!defaults.LobbyOptions.TryGetValue(kv.Key, out var def) || kv.Value.Value != def.Value) if (!defaults.LobbyOptions.TryGetValue(kv.Key, out var def) || kv.Value.Value != def.Value)
if (optionNames.TryGetValue(kv.Key, out var optionName)) if (options.TryGetValue(kv.Key, out var option))
server.SendOrderTo(conn, "Message", optionName + ": " + kv.Value.Value); server.SendOrderTo(conn, "Message", option.Name + ": " + option.Values[kv.Value.Value]);
} }
} }
} }