diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index b38718fdc4..2d0f117e81 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -130,6 +130,9 @@ namespace OpenRA.Server Port = localEndpoint.Port; Settings = settings; + + Settings.Name = OpenRA.Settings.SanitizedServerName(Settings.Name); + ModData = modData; randomSeed = (int)DateTime.Now.ToBinary(); diff --git a/OpenRA.Game/Settings.cs b/OpenRA.Game/Settings.cs index 0b3d872749..39ba5debdf 100644 --- a/OpenRA.Game/Settings.cs +++ b/OpenRA.Game/Settings.cs @@ -321,6 +321,15 @@ namespace OpenRA return clean; } + public static string SanitizedServerName(string dirty) + { + var clean = SanitizedName(dirty); + if (string.IsNullOrWhiteSpace(clean)) + return new ServerSettings().Name; + else + return clean; + } + public static string SanitizedPlayerName(string dirty) { var forbiddenNames = new string[] { "Open", "Closed" }; diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs index 71f1f67e6d..b61c59b151 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs @@ -55,8 +55,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic panel.Get("MAP_NAME").GetText = () => preview.Title; } - panel.Get("SERVER_NAME").Text = settings.Server.Name ?? ""; + var serverName = panel.Get("SERVER_NAME"); + serverName.Text = Settings.SanitizedServerName(settings.Server.Name); + serverName.OnEnterKey = () => { serverName.YieldKeyboardFocus(); return true; }; + serverName.OnLoseFocus = () => + { + serverName.Text = Settings.SanitizedServerName(serverName.Text); + settings.Server.Name = serverName.Text; + }; + panel.Get("LISTEN_PORT").Text = settings.Server.ListenPort.ToString(); + advertiseOnline = Game.Settings.Server.AdvertiseOnline; var externalPort = panel.Get("EXTERNAL_PORT"); @@ -80,7 +89,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void CreateAndJoin() { - var name = panel.Get("SERVER_NAME").Text; + var name = Settings.SanitizedServerName(panel.Get("SERVER_NAME").Text); int listenPort, externalPort; if (!Exts.TryParseIntegerInvariant(panel.Get("LISTEN_PORT").Text, out listenPort)) listenPort = 1234;