public static LoadMapSettings ( |
||
server | ||
gs | ||
rules | Ruleset | |
return | void |
public void ClientJoined(OpenRA.Server.Server server, Connection conn) { if (server.LobbyInfo.ClientWithIndex(conn.PlayerIndex).IsAdmin) { return; } var defaults = new Session.Global(); LobbyCommands.LoadMapSettings(server, defaults, server.Map.Rules); var options = server.Map.Rules.Actors["player"].TraitInfos <ILobbyOptions>() .Concat(server.Map.Rules.Actors["world"].TraitInfos <ILobbyOptions>()) .SelectMany(t => t.LobbyOptions(server.Map.Rules)); var optionNames = new Dictionary <string, string>(); foreach (var o in options) { optionNames[o.Id] = o.Name; } foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions) { Session.LobbyOptionState def; string optionName; if (!defaults.LobbyOptions.TryGetValue(kv.Key, out def) || kv.Value.Value != def.Value) { if (optionNames.TryGetValue(kv.Key, out optionName)) { server.SendOrderTo(conn, "Message", optionName + ": " + kv.Value.Value); } } } }
public void ClientJoined(OpenRA.Server.Server server, Connection conn) { lock (server.LobbyInfo) { if (server.LobbyInfo.ClientWithIndex(conn.PlayerIndex).IsAdmin) { return; } var defaults = new Session.Global(); LobbyCommands.LoadMapSettings(server, defaults, server.Map.Rules); var options = server.Map.Rules.Actors["player"].TraitInfos <ILobbyOptions>() .Concat(server.Map.Rules.Actors["world"].TraitInfos <ILobbyOptions>()) .SelectMany(t => t.LobbyOptions(server.Map.Rules)) .ToDictionary(o => o.Id, o => o); foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions) { if (!defaults.LobbyOptions.TryGetValue(kv.Key, out var def) || kv.Value.Value != def.Value) { if (options.TryGetValue(kv.Key, out var option)) { server.SendOrderTo(conn, "Message", option.Name + ": " + option.Values[kv.Value.Value]); } } } } }
public void ClientJoined(OpenRA.Server.Server server, Connection conn) { if (server.LobbyInfo.ClientWithIndex(conn.PlayerIndex).IsAdmin) { return; } var defaults = new Session.Global(); LobbyCommands.LoadMapSettings(defaults, server.Map.Rules); if (server.LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats) { server.SendOrderTo(conn, "Message", "Allow Cheats: {0}".F(server.LobbyInfo.GlobalSettings.AllowCheats)); } if (server.LobbyInfo.GlobalSettings.Shroud != defaults.Shroud) { server.SendOrderTo(conn, "Message", "Explored map: {0}".F(!server.LobbyInfo.GlobalSettings.Shroud)); } if (server.LobbyInfo.GlobalSettings.Fog != defaults.Fog) { server.SendOrderTo(conn, "Message", "Fog of war: {0}".F(server.LobbyInfo.GlobalSettings.Fog)); } if (server.LobbyInfo.GlobalSettings.Crates != defaults.Crates) { server.SendOrderTo(conn, "Message", "Crates Appear: {0}".F(server.LobbyInfo.GlobalSettings.Crates)); } if (server.LobbyInfo.GlobalSettings.Creeps != defaults.Creeps) { server.SendOrderTo(conn, "Message", "Creeps Spawn: {0}".F(server.LobbyInfo.GlobalSettings.Creeps)); } if (server.LobbyInfo.GlobalSettings.AllyBuildRadius != defaults.AllyBuildRadius) { server.SendOrderTo(conn, "Message", "Build off Ally ConYards: {0}".F(server.LobbyInfo.GlobalSettings.AllyBuildRadius)); } if (server.LobbyInfo.GlobalSettings.StartingUnitsClass != defaults.StartingUnitsClass) { var startUnitsInfo = server.Map.Rules.Actors["world"].TraitInfos <MPStartUnitsInfo>(); var selectedClass = startUnitsInfo.Where(u => u.Class == server.LobbyInfo.GlobalSettings.StartingUnitsClass).Select(u => u.ClassName).FirstOrDefault(); var className = selectedClass != null ? selectedClass : server.LobbyInfo.GlobalSettings.StartingUnitsClass; server.SendOrderTo(conn, "Message", "Starting Units: {0}".F(className)); } if (server.LobbyInfo.GlobalSettings.StartingCash != defaults.StartingCash) { server.SendOrderTo(conn, "Message", "Starting Cash: ${0}".F(server.LobbyInfo.GlobalSettings.StartingCash)); } if (server.LobbyInfo.GlobalSettings.TechLevel != defaults.TechLevel) { server.SendOrderTo(conn, "Message", "Tech Level: {0}".F(server.LobbyInfo.GlobalSettings.TechLevel)); } if (server.LobbyInfo.GlobalSettings.ShortGame != defaults.ShortGame) { server.SendOrderTo(conn, "Message", "Short Game: {0}".F(server.LobbyInfo.GlobalSettings.ShortGame)); } }