Esempio n. 1
0
        public GlobalChatLogic(Widget widget)
        {
            historyPanel = widget.Get<ScrollPanelWidget>("HISTORY_PANEL");
            historyTemplate = historyPanel.Get<LabelWidget>("HISTORY_TEMPLATE");
            nicknamePanel = widget.Get<ScrollPanelWidget>("NICKNAME_PANEL");
            nicknameTemplate = nicknamePanel.Get("NICKNAME_TEMPLATE");

            historyPanel.Bind(Game.GlobalChat.History, MakeHistoryWidget, HistoryWidgetEquals, true);
            nicknamePanel.Bind(Game.GlobalChat.Users, MakeUserWidget, UserWidgetEquals, false);

            inputBox = widget.Get<TextFieldWidget>("CHAT_TEXTFIELD");
            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 nicknameBox = widget.Get<TextFieldWidget>("NICKNAME_TEXTFIELD");
            nicknameBox.Text = Game.GlobalChat.SanitizedName(Game.Settings.Chat.Nickname);
            nicknameBox.OnTextEdited = () =>
            {
                nicknameBox.Text = Game.GlobalChat.SanitizedName(nicknameBox.Text);
            };

            var connectPanel = widget.Get("GLOBALCHAT_CONNECT_PANEL");
            connectPanel.IsVisible = () => Game.GlobalChat.ConnectionStatus == ChatConnectionStatus.Disconnected;

            var disconnectButton = widget.Get<ButtonWidget>("DISCONNECT_BUTTON");
            disconnectButton.OnClick = Game.GlobalChat.Disconnect;

            var connectAutomaticallyCheckBox = connectPanel.Get<CheckboxWidget>("CONNECT_AUTOMATICALLY_CHECKBOX");
            connectAutomaticallyCheckBox.IsChecked = () => Game.Settings.Chat.ConnectAutomatically;
            connectAutomaticallyCheckBox.OnClick = () => { Game.Settings.Chat.ConnectAutomatically ^= true; Game.Settings.Save(); };

            var connectButton = connectPanel.Get<ButtonWidget>("CONNECT_BUTTON");
            connectButton.IsDisabled = () => !Game.GlobalChat.IsValidNickname(nicknameBox.Text);
            connectButton.OnClick = () =>
            {
                Game.Settings.Chat.Nickname = nicknameBox.Text;
                Game.Settings.Save();
                Game.GlobalChat.Connect();
            };

            var mainPanel = widget.Get("GLOBALCHAT_MAIN_PANEL");
            mainPanel.IsVisible = () => Game.GlobalChat.ConnectionStatus != ChatConnectionStatus.Disconnected;

            mainPanel.Get<LabelWidget>("CHANNEL_TOPIC").GetText = () => Game.GlobalChat.Topic;

            if (Game.Settings.Chat.ConnectAutomatically && Game.GlobalChat.IsValidNickname(Game.Settings.Chat.Nickname))
                Game.GlobalChat.Connect();
        }