public void windowResized() { nicknameWidth = -1; bufferWidth = -1; for (int ix = 0; ix < backBuffer.Count; ix++) { ChannelMessageRenderer entry = backBuffer[ix]; entry.OnWindowResized(); } }
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); }
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; } }