void TrySendMessage() { if (mLastChatTime > Globals.System.GetTimeMs()) { ChatboxMsg.AddMessage(new ChatboxMsg(Strings.Chatbox.toofast, Color.Red)); mLastChatTime = Globals.System.GetTimeMs() + Options.MinChatInterval; return; } mLastChatTime = Globals.System.GetTimeMs() + Options.MinChatInterval; if (mChatboxInput.Text.Trim().Length <= 0 || mChatboxInput.Text == GetDefaultInputText()) { mChatboxInput.Text = GetDefaultInputText(); return; } PacketSender.SendChatMsg( mChatboxInput.Text.Trim(), byte.Parse(mChannelCombobox.SelectedItem.UserData.ToString()) ); mChatboxInput.Text = GetDefaultInputText(); }
//Init public Chatbox(Canvas gameCanvas, GameInterface gameUi) { mGameUi = gameUi; //Chatbox Window mChatboxWindow = new ImagePanel(gameCanvas, "ChatboxWindow"); mChatboxMessages = new ListBox(mChatboxWindow, "MessageList"); mChatboxMessages.EnableScroll(false, true); mChatboxWindow.ShouldCacheToTexture = true; mChatboxTitle = new Label(mChatboxWindow, "ChatboxTitle"); mChatboxTitle.Text = Strings.Chatbox.title; mChatboxTitle.IsHidden = true; mChatbar = new ImagePanel(mChatboxWindow, "Chatbar"); mChatbar.IsHidden = true; mChatboxInput = new TextBox(mChatboxWindow, "ChatboxInputField"); mChatboxInput.SubmitPressed += ChatBoxInput_SubmitPressed; mChatboxInput.Text = GetDefaultInputText(); mChatboxInput.Clicked += ChatBoxInput_Clicked; mChatboxInput.IsTabable = false; mChatboxInput.SetMaxLength(Options.MaxChatLength); Interface.FocusElements.Add(mChatboxInput); mChannelLabel = new Label(mChatboxWindow, "ChannelLabel"); mChannelLabel.Text = Strings.Chatbox.channel; mChannelLabel.IsHidden = true; mChannelCombobox = new ComboBox(mChatboxWindow, "ChatChannelCombobox"); for (var i = 0; i < 3; i++) { var menuItem = mChannelCombobox.AddItem(Strings.Chatbox.channels[i]); menuItem.UserData = i; } //Add admin channel only if power > 0. if (Globals.Me.Type > 0) { var menuItem = mChannelCombobox.AddItem(Strings.Chatbox.channeladmin); menuItem.UserData = 3; } mChatboxText = new Label(mChatboxWindow); mChatboxText.Name = "ChatboxText"; mChatboxText.Font = mChatboxWindow.Parent.Skin.DefaultFont; mChatboxSendButton = new Button(mChatboxWindow, "ChatboxSendButton"); mChatboxSendButton.Text = Strings.Chatbox.send; mChatboxSendButton.Clicked += ChatBoxSendBtn_Clicked; mChatboxWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString()); mChatboxText.IsHidden = true; // Platform check, are we capable of copy/pasting on this machine? if (GameClipboard.Instance == null || !GameClipboard.Instance.CanCopyPaste()) { ChatboxMsg.AddMessage(new ChatboxMsg(Strings.Chatbox.UnableToCopy, CustomColors.Alerts.Error)); } }
//Init public Chatbox(Canvas gameCanvas, GameInterface gameUi) { mGameUi = gameUi; //Chatbox Window mChatboxWindow = new ImagePanel(gameCanvas, "ChatboxWindow"); mChatboxMessages = new ListBox(mChatboxWindow, "MessageList"); mChatboxMessages.EnableScroll(false, true); mChatboxWindow.ShouldCacheToTexture = true; mChatboxTitle = new Label(mChatboxWindow, "ChatboxTitle"); mChatboxTitle.Text = Strings.Chatbox.title; mChatboxTitle.IsHidden = true; // Generate tab butons. for (var btn = 0; btn < (int)ChatboxTab.Count; btn++) { mTabButtons.Add((ChatboxTab)btn, new Button(mChatboxWindow, $"{(ChatboxTab)btn}TabButton")); // Do we have a localized string for this chat tab? If not assign none as the text. LocalizedString name; mTabButtons[(ChatboxTab)btn].Text = Strings.Chatbox.ChatTabButtons.TryGetValue((ChatboxTab)btn, out name) ? name : Strings.General.none; mTabButtons[(ChatboxTab)btn].Clicked += TabButtonClicked; // We'll be using the user data to determine which tab we've clicked later. mTabButtons[(ChatboxTab)btn].UserData = (ChatboxTab)btn; } mChatbar = new ImagePanel(mChatboxWindow, "Chatbar"); mChatbar.IsHidden = true; mChatboxInput = new TextBox(mChatboxWindow, "ChatboxInputField"); mChatboxInput.SubmitPressed += ChatBoxInput_SubmitPressed; mChatboxInput.Text = GetDefaultInputText(); mChatboxInput.Clicked += ChatBoxInput_Clicked; mChatboxInput.IsTabable = false; mChatboxInput.SetMaxLength(Options.MaxChatLength); Interface.FocusElements.Add(mChatboxInput); mChannelLabel = new Label(mChatboxWindow, "ChannelLabel"); mChannelLabel.Text = Strings.Chatbox.channel; mChannelLabel.IsHidden = true; mChannelCombobox = new ComboBox(mChatboxWindow, "ChatChannelCombobox"); for (var i = 0; i < 3; i++) { var menuItem = mChannelCombobox.AddItem(Strings.Chatbox.channels[i]); menuItem.UserData = i; menuItem.Selected += MenuItem_Selected; } //Add admin channel only if power > 0. if (Globals.Me.Type > 0) { var menuItem = mChannelCombobox.AddItem(Strings.Chatbox.channeladmin); menuItem.UserData = 3; menuItem.Selected += MenuItem_Selected; } mChatboxText = new Label(mChatboxWindow); mChatboxText.Name = "ChatboxText"; mChatboxText.Font = mChatboxWindow.Parent.Skin.DefaultFont; mChatboxSendButton = new Button(mChatboxWindow, "ChatboxSendButton"); mChatboxSendButton.Text = Strings.Chatbox.send; mChatboxSendButton.Clicked += ChatBoxSendBtn_Clicked; mChatboxWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString()); mChatboxText.IsHidden = true; // Disable this to start, since this is the default tab we open the client on. mTabButtons[ChatboxTab.All].Disable(); // Platform check, are we capable of copy/pasting on this machine? if (GameClipboard.Instance == null || !GameClipboard.Instance.CanCopyPaste()) { ChatboxMsg.AddMessage(new ChatboxMsg(Strings.Chatbox.UnableToCopy, CustomColors.Alerts.Error, ChatMessageType.Error)); } }