public void CustomUpdate()
 {
     coroutineManager.Interval();
     if (!initialized)
     {
         return;
     }
     if (!twitchClient.Connected)
     {
         Connect();
     }
     else if (twitchClient.Available > 0)
     {
         string rawLine = reader.ReadLine();
         if (rawLine == "PING :tmi.twitch.tv")
         {
             SendRawMessage("PONG :tmi.twitch.tv");
         }
         else if (rawLine.Contains("PRIVMSG"))
         {
             TwitchMessage user             = TwitchMessage.GetTwitchMessage(rawLine);
             string        username         = user.display_name; //GetUsername(rawLine);
             string        extractedMessage = user.message;      //GetExtractedMessage(rawLine);
             bool          isAction         = false;
             if (extractedMessage.StartsWith("\u0001"))
             {
                 extractedMessage = extractedMessage.Replace("\u0001", "");
                 extractedMessage = extractedMessage.ReplaceFirst("ACTION ", "");
                 isAction         = true;
             }
             user.message = extractedMessage;
             messagesToBeAdded.Enqueue(user);
         }
         else if (rawLine.Contains("CLEARCHAT"))
         {
             int    start = rawLine.IndexOf(":", rawLine.IndexOf("CLEARCHAT")) + 1;
             int    stop  = rawLine.IndexOf(" ", start);
             string user  = rawLine.Substring(start, rawLine.Length - start);
             Font   f     = font;
             f = new Font(f, FontStyle.Strikeout);
             foreach (TwitchUserMessage m in currentChatMessages)
             {
                 if (m.twitchMessage.display_name.ToLower() == user.ToLower())
                 {
                     m.Font = f;
                 }
             }
         }
     }
     if (messagesToBeAdded.Count > 0)
     {
         ProcessMessage(messagesToBeAdded.Dequeue());
     }
 }
Esempio n. 2
0
 public void CustomUpdate()
 {
     coroutineManager.Interval();
     if (!initialized)
     {
         return;
     }
     if (!twitchClient.Connected)
     {
         Connect();
     }
     else if (twitchClient.Available > 0)
     {
         string rawLine = reader.ReadLine();
         if (rawLine == "PING :tmi.twitch.tv")
         {
             SendRawMessage("PONG :tmi.twitch.tv");
         }
         else if (rawLine.Contains("PRIVMSG"))
         {
             TwitchMessage user             = TwitchMessage.GetTwitchMessage(rawLine);
             string        username         = user.display_name; //GetUsername(rawLine);
             string        extractedMessage = user.message;      //GetExtractedMessage(rawLine);
             bool          isAction         = false;
             if (extractedMessage.StartsWith("\u0001"))
             {
                 extractedMessage = extractedMessage.Replace("\u0001", "");
                 extractedMessage = extractedMessage.ReplaceFirst("ACTION ", "");
                 isAction         = true;
             }
             user.message  = extractedMessage;
             user.isAction = isAction;
             messagesToBeAdded.Enqueue(user);
         }
         else if (rawLine.Contains("CLEARCHAT"))
         {
             int    start = rawLine.IndexOf(":", rawLine.IndexOf("CLEARCHAT")) + 1;
             int    stop  = rawLine.IndexOf(" ", start);
             string user  = rawLine.Substring(start, rawLine.Length - start);
             Font   f     = font;
             f = new Font(f, FontStyle.Strikeout);
             foreach (MessageControl m in currentChatMessages)
             {
                 if (m is TwitchUserMessage u)
                 {
                     if (u.twitchMessage.display_name.ToLower() == user.ToLower())
                     {
                         u.Font      = f;
                         u.ForeColor = Color.Gray;
                         u.DrawContent(u.CreateGraphics());
                     }
                 }
             }
         }
         else if (rawLine.Contains("USERNOTICE"))
         {
             //To be added: notifications
             int    start     = rawLine.IndexOf("system-msg=") + "system-msg=".Length;
             int    stop      = rawLine.IndexOf(";tmi") - 1;
             string theString = rawLine.Substring(start, stop - start);
             theString.Replace("\\s", " ");
             MessageControl m = new HighlightedNotification(theString, panelBorder, border, Width - 2 * border);
             currentChatMessages.Add(m);
             m.Font      = font;
             m.ForeColor = textColor;
             m.BackColor = backColor;
             Controls.Add(m);
             Application.DoEvents();
             m.Location = new Point(-m.Width, Height - m.Size.Height - 50 - (richTextBox1.Visible ? richTextBox1.Size.Height : 0));
             coroutineManager.StartLateCoroutine(moveLabels(m));
         }
     }
     if (messagesToBeAdded.Count > 0)
     {
         ProcessMessage(messagesToBeAdded.Dequeue());
     }
 }