Пример #1
0
        public void windowResized()
        {
            nicknameWidth = -1;
            bufferWidth   = -1;

            for (int ix = 0; ix < backBuffer.Count; ix++)
            {
                ChannelMessageRenderer entry = backBuffer[ix];

                entry.OnWindowResized();
            }
        }
Пример #2
0
        public void addToBuffer(string sender, string text, IRCCommand cmd = null)
        {
            User user = usersForTabCompletion.SingleOrDefault(u => u.name == sender);

            if (user != null)
            {
                usersForTabCompletion.Remove(user);
                usersForTabCompletion.Insert(0, user);
            }

            if (lastSeenLineNeedsReset)
            {
                unseenIdx = backBuffer.Count();
                lastSeenLineNeedsReset = false;
            }

            ChannelMessageRenderer entry = messageRendererFactory.get(this, sender, text);

            backBuffer.Add(entry);
            if (backBuffer.Count() > MAX_BACK_BUFFER_LINES)
            {
                backBuffer.RemoveRange(0, backBuffer.Count() - MAX_BACK_BUFFER_LINES);
                if (unseenIdx > -1)
                {
                    unseenIdx--;
                }
            }

            Boolean nickInText = (this.highlightName && text.Contains(config.nick.ToLower()));

            if ((!handle.StartsWith("#") && !handle.StartsWith("(") && !handle.EndsWith(")")) || nickInText)
            {
                channelHighlightedPrivateMessage = true;
            }
            if ((cmd != null) &&
                ((cmd.command == "JOIN") || (cmd.command == "PART") || (cmd.command == "QUIT")))
            {
                channelHighlightedJoin = true;
            }
            else
            {
                channelHighlightedMessage = true;
            }

            backBufferScrollPosition = new Vector2(0, float.MaxValue);
        }
Пример #3
0
        private void drawBuffer()
        {
            backBufferScrollPosition = GUILayout.BeginScrollView(backBufferScrollPosition, false, true,
                                                                 GUI.skin.horizontalScrollbar, GUI.skin.verticalScrollbar, GUI.skin.textArea);

            float maxNameWidth = -1;

            for (int ix = 0; ix < backBuffer.Count; ix++)
            {
                ChannelMessageRenderer entry = backBuffer[ix];

                float width = entry.SenderWidth(this);
                maxNameWidth = Mathf.Min(Mathf.Max(width, maxNameWidth), MAX_NAME_WIDTH);
            }

            bool lastSeenLineDrawn = false;
            int  idx = 0;

            for (int ix = 0; ix < backBuffer.Count; ix++)
            {
                ChannelMessageRenderer entry = backBuffer[ix];

                // draw "last seen" indicator
                if (!lastSeenLineDrawn && (idx == unseenIdx))
                {
                    if (idx > 0)
                    {
                        GUILayout.Label("", lastSeenLineStyle, GUILayout.Height(1), GUILayout.MaxHeight(1));
                    }
                    lastSeenLineDrawn = true;
                }

                entry.Render(this, spaceWidth, maxNameWidth);
                idx++;
            }
            GUILayout.EndScrollView();
            if (Event.current.type == EventType.Repaint)
            {
                bufferWidth = GUILayoutUtility.GetLastRect().width;
            }
        }