diff --git a/OpenRA.Game/GlobalChat.cs b/OpenRA.Game/GlobalChat.cs index f6d9b9acb1..ca62061a1e 100644 --- a/OpenRA.Game/GlobalChat.cs +++ b/OpenRA.Game/GlobalChat.cs @@ -79,6 +79,8 @@ namespace OpenRA.Chat volatile ChatConnectionStatus connectionStatus = ChatConnectionStatus.Disconnected; public ChatConnectionStatus ConnectionStatus { get { return connectionStatus; } } + string nickname; + public GlobalChat() { client.Encoding = System.Text.Encoding.UTF8; @@ -128,11 +130,13 @@ namespace OpenRA.Chat }); } - public void Connect() + public void Connect(string nickname) { - if (client.IsConnected) + if (client.IsConnected || !IsValidNickname(nickname)) return; + this.nickname = nickname; + new Thread(() => { try @@ -183,12 +187,7 @@ namespace OpenRA.Chat AddNotification("Connected."); connectionStatus = ChatConnectionStatus.Connected; - // Guard against settings.yaml modification - var nick = SanitizedName(Game.Settings.Chat.Nickname); - if (nick != Game.Settings.Chat.Nickname) - Game.RunAfterTick(() => Game.Settings.Chat.Nickname = nick); - - client.Login(nick, "in-game IRC client", 0, "OpenRA"); + client.Login(nickname, "in-game IRC client", 0, "OpenRA"); client.RfcJoin("#" + Game.Settings.Chat.Channel); } @@ -339,7 +338,6 @@ namespace OpenRA.Chat if (Rfc2812.IsValidNickname(nick)) { client.RfcNick(nick); - Game.Settings.Chat.Nickname = nick; return true; } @@ -366,7 +364,7 @@ namespace OpenRA.Chat AddNotification("Disconnecting from {0}...".F(client.Address)); - Game.RunAfterTick(() => Game.Settings.Chat.ConnectAutomatically = false); + Game.RunAfterTick(() => { Game.Settings.Chat.ConnectAutomatically = false; Game.Settings.Save(); }); } public void Dispose() diff --git a/OpenRA.Game/Settings.cs b/OpenRA.Game/Settings.cs index aebeee4707..0327fe3991 100644 --- a/OpenRA.Game/Settings.cs +++ b/OpenRA.Game/Settings.cs @@ -325,7 +325,6 @@ namespace OpenRA public string Hostname = "irc.openra.net"; public int Port = 6667; public string Channel = "lobby"; - public string Nickname = "Newbie"; public string QuitMessage = "Battle control terminated!"; public string TimestampFormat = "HH:mm"; public bool ConnectAutomatically = false; diff --git a/OpenRA.Mods.Common/Widgets/Logic/GlobalChatLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/GlobalChatLogic.cs index 9bb59da8a6..e99e6d6e0e 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/GlobalChatLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/GlobalChatLogic.cs @@ -42,12 +42,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic inputBox.IsDisabled = () => Game.GlobalChat.ConnectionStatus != ChatConnectionStatus.Joined; inputBox.OnEnterKey = EnterPressed; - // Set a random default nick - if (Game.Settings.Chat.Nickname == new ChatSettings().Nickname) - Game.Settings.Chat.Nickname += Game.CosmeticRandom.Next(100, 999); - + var nickName = Game.GlobalChat.SanitizedName(Game.Settings.Player.Name); var nicknameBox = widget.Get("NICKNAME_TEXTFIELD"); - nicknameBox.Text = Game.GlobalChat.SanitizedName(Game.Settings.Chat.Nickname); + nicknameBox.Text = nickName; nicknameBox.OnTextEdited = () => { nicknameBox.Text = Game.GlobalChat.SanitizedName(nicknameBox.Text); @@ -65,20 +62,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic var connectButton = connectPanel.Get("CONNECT_BUTTON"); connectButton.IsDisabled = () => !Game.GlobalChat.IsValidNickname(nicknameBox.Text); - connectButton.OnClick = () => - { - Game.Settings.Chat.Nickname = nicknameBox.Text; - Game.Settings.Save(); - Game.GlobalChat.Connect(); - }; + connectButton.OnClick = () => Game.GlobalChat.Connect(nicknameBox.Text); var mainPanel = widget.Get("GLOBALCHAT_MAIN_PANEL"); mainPanel.IsVisible = () => Game.GlobalChat.ConnectionStatus != ChatConnectionStatus.Disconnected; mainPanel.Get("CHANNEL_TOPIC").GetText = () => Game.GlobalChat.Topic; - if (Game.Settings.Chat.ConnectAutomatically && Game.GlobalChat.IsValidNickname(Game.Settings.Chat.Nickname)) - Game.GlobalChat.Connect(); + if (Game.Settings.Chat.ConnectAutomatically) + Game.GlobalChat.Connect(nickName); } Widget MakeHistoryWidget(object o)