Пример #1
0
        public void Init(ChatTabData tabData, ChatRegister chatRegister)
        {
            this.chatRegister = chatRegister;

            AddTab(tabData);
            LoadChannelSelector(tabData);
        }
Пример #2
0
    public void AddTab(ChatTabData tabData)
    {
        ChatTab chatTab = Instantiate(chatTabPrefab, tabRow);

        chatTab.Init(tabData, this);
        LoadTab(chatTab.Data);
    }
Пример #3
0
    public void Init(ChatTabData tabData, ChatManager chatManager, ChatRegister chatRegister)
    {
        this.chatManager  = chatManager;
        this.chatRegister = chatRegister;

        chatManager.messageReceivedEvent.AddListener(delegate { LoadTabChatLog(currentTabData); });
        AddTab(tabData);
        LoadChannelSelector(tabData);
    }
Пример #4
0
 public void Init(ChatTabData data, ChatWindow window)
 {
     Data       = data;
     chatWindow = window;
     Text.text  = data.Name;
     transform.SetAsFirstSibling();
     Data.Tab = this;
     StartCoroutine(FixTabWidth());
 }
Пример #5
0
 private void LoadChannelSelector(ChatTabData tabData)
 {
     channelDropDown.options.Clear();
     foreach (ChatChannel channel in tabData.Channels)
     {
         channelDropDown.options.Add(new TMP_Dropdown.OptionData(
                                         string.Format("<color=#{0}>[{1}]</color>", ColorUtility.ToHtmlStringRGBA(channel.Color),
                                                       channel.Abbreviation)));
     }
 }
Пример #6
0
    public void LoadTabChatLog(ChatTabData tabData)
    {
        StringBuilder sb = new StringBuilder();

        foreach (Message message in chatManager.GetMessages(tabData.Channels))
        {
            sb.AppendFormat(
                "<color=#{0}>[{1}] {2}: {3}\n",
                ColorUtility.ToHtmlStringRGBA(message.Channel.Color),
                message.Channel.Abbreviation,
                message.Sender,
                message.Text);
        }

        ChatText.text = sb.ToString();
    }
Пример #7
0
    private void LoadChannelSelector(ChatTabData tabData)
    {
        channelDropDown.options.Clear();
        foreach (ChatChannel channel in tabData.Channels)
        {
            //Need a more robust way to do this. Not adding the option makes the index mismatch when sending messages.
            //if (chatRegister.restrictedChannels.Contains(channel.Name)) continue;

            channelDropDown.options.Add(
                new TMP_Dropdown.OptionData(
                    string.Format("<color=#{0}>[{1}]</color>",
                                  ColorUtility.ToHtmlStringRGBA(channel.Color),
                                  channel.Abbreviation)
                    )
                );
        }
    }
Пример #8
0
        private void LoadTabChatLog(ChatTabData tabData)
        {
            List <ChatMessage> relevantMessages = chatRegister.GetRelevantMessages(tabData);
            StringBuilder      sb = new StringBuilder();

            foreach (ChatMessage message in relevantMessages)
            {
                sb.AppendFormat(
                    "<color=#{0}>[{1}] {2}: {3}\n",
                    ColorUtility.ToHtmlStringRGBA(message.Channel.Color),
                    message.Channel.Abbreviation,
                    message.Sender,
                    message.Text);
            }

            ChatText.text = sb.ToString();
        }
Пример #9
0
    /// <summary>
    /// Creates a new chat window with the supplied tab data.
    /// Adds a tab to an existing window if an existing window is supplied.
    /// </summary>
    /// <param name="tabData">tab data that decides which channels the chat listens to</param>
    /// <param name="existingWindow">an existing windwo to add a chat tab to rather than create a new window</param>
    /// <param name="position">position for the new window (vector2.zero for default position)</param>
    public void CreateChatWindow(ChatTabData tabData, ChatWindow existingWindow, Vector2 position)
    {
        if (existingWindow)
        {
            existingWindow.AddTab(tabData);
        }
        else
        {
            chatWindow = Instantiate(chatWindowPrefab, transform);
            if (position != Vector2.zero)
            {
                chatWindow.transform.position = position;
            }

            chatWindow.Init(tabData, this, sender.GetComponent <ChatRegister>());
        }
    }
Пример #10
0
        /// <summary>
        /// Creates a new chat window with the supplied tab data.
        /// Adds a tab to an existing window if an existing window is supplied.
        /// </summary>
        /// <param name="tabData">tab data that decides which channels the chat listens to</param>
        /// <param name="existingWindow">an existing windwo to add a chat tab to rather than create a new window</param>
        /// <param name="position">position for the new window (vector2.zero for default position)</param>
        public void CreateChatWindow(ChatTabData tabData, ChatWindow existingWindow, Vector2 position)
        {
            if (existingWindow)
            {
                existingWindow.AddTab(tabData);
            }
            else
            {
                chatWindow = Instantiate(chatWindowPrefab);
                if (position != Vector2.zero)
                {
                    chatWindow.transform.position = position;
                }

                chatWindow.Init(tabData, this);
            }
        }
Пример #11
0
 public void LoadTab(ChatTabData tabData)
 {
     currentTabData = tabData;
     LoadTabChatLog(tabData);
     LoadChannelSelector(tabData);
 }
Пример #12
0
 public List <ChatMessage> GetRelevantMessages(ChatTabData tabData)
 {
     return(messages.Where(x => tabData.Channels.Any(y => x.Channel.Equals(y))).ToList());
 }