Пример #1
0
        public void Update(RacetimeUser user, DateTime raceStartingTime)
        {
            usernameLabel.Text = user.Name;
            if (user.Place > 0)
            {
                placementLabel.Text = user.PlaceOrdinal;
                switch (user.Place)
                {
                case 1: placementLabel.ForeColor = Color.FromArgb(246, 218, 22); break;

                case 2: placementLabel.ForeColor = Color.FromArgb(180, 180, 180); break;

                case 3: placementLabel.ForeColor = Color.FromArgb(209, 123, 40); break;

                default: placementLabel.ForeColor = Color.White; break;
                }
            }
            else
            {
                placementLabel.Text = "";
            }


            liveStatusImage.Image = null;
            if (user.Status == UserStatus.Forfeit || user.Status == UserStatus.Disqualified)
            {
                liveStatusImage.Image = Properties.Resources.f;
            }
            else if (user.IsLive || user.StreamOverride)
            {
                liveStatusImage.Image = Properties.Resources.live;
                if (user.Status == UserStatus.Ready || user.Status == UserStatus.Racing || user.Status == UserStatus.Finished)
                {
                    liveStatusImage.Image = Properties.Resources.live_and_ready;
                }
            }
            else if (user.TwitchChannel != null && !user.IsLive)
            {
                liveStatusImage.Image = Properties.Resources.not_live;
            }


            var finishtime = user.FinishedAt - raceStartingTime;

            if (user.Status == UserStatus.Disqualified || user.Status == UserStatus.Forfeit)
            {
                timeLabel.Text = "- - : - - : - -";
            }
            else if (user.HasFinished)
            {
                timeLabel.Text = string.Format("{0:hh\\:mm\\:ss}", finishtime);
            }
            else
            {
                timeLabel.Text = "";
            }
        }
 public void AddUser(RacetimeUser u, DateTime raceStartingTime)
 {
     if (u != null)
     {
         RacerControl rc = new RacerControl();
         rc.Update(u, raceStartingTime);
         userPanel.Controls.Add(rc);
     }
 }
Пример #3
0
        private void Channel_ChatUpdate(object sender, IEnumerable <ChatMessage> chatMessages)
        {
            if (formClosing)
            {
                return;
            }

            foreach (ChatMessage m in chatMessages)
            {
                if (m.Type == MessageType.Race)
                {
                    continue;
                }
                if (Channel.Race?.State == RaceState.Started && hideFinishesCheckBox.Checked && m is SystemMessage && ((SystemMessage)m).IsFinishingMessage)
                {
                    continue;
                }
                if (Channel.Race?.State == RaceState.Started && hideChatCheckBox.Checked && ((m.User.Role & (UserRole.ChannelCreator | UserRole.Monitor | UserRole.Bot | UserRole.Staff | UserRole.System)) == 0))
                {
                    continue;
                }

                chatBox.AppendText("\n");
                chatBox.AppendText(m.Posted.ToString("HH:mm"), Color.Silver, Color.White);
                chatBox.AppendText("  ");

                Color        col          = Color.White;
                RacetimeUser u            = RacetimeUser.Anonymous;
                bool         hideUsername = m.User == RacetimeUser.LiveSplit || m.User == RacetimeUser.System;

                if (m.User == RacetimeUser.Bot)
                {
                    col = Color.FromArgb(115, 100, 255);
                }
                else
                {
                    col = ColorList[Math.Abs(m.User.Class) % ColorList.Length];
                }

                if (!hideUsername)
                {
                    chatBox.AppendText(m is BotMessage ? "[" + (((BotMessage)m).BotName) + "]" : m.User.Name, col, Color.White, false, m.User == RacetimeUser.System);
                }
                else if (m.User == RacetimeUser.System)
                {
                    chatBox.AppendText("» ");
                }


                chatBox.AppendText("  ");

                string[] words     = m.Message.Split(' ');
                bool     firstWord = true;

                if (m.Highlight)
                {
                    chatBox.SelectionColor = PickHighlightColor(m);
                }
                else if (m.User == RacetimeUser.Bot)
                {
                    chatBox.SelectionColor = Color.FromArgb(170, 170, 255);
                }

                foreach (var word in words)
                {
                    if (TwitchEmoteResolver.IsEmote(word))
                    {
                        chatBox.AppendText((firstWord ? "" : " "));
                        var image      = TwitchEmoteResolver.Resolve(word);
                        var whiteImage = new Bitmap(image.Width, image.Height);
                        var g          = Graphics.FromImage(whiteImage);
                        g.FillRectangle(Brushes.White, 0, 0, image.Width, image.Height);
                        g.DrawImage(image, 0, 0, image.Width, image.Height);
                        Clipboard.SetDataObject(whiteImage);
                        chatBox.ReadOnly = false;
                        chatBox.Paste();
                        chatBox.ReadOnly = true;
                    }
                    else
                    {
                        chatBox.AppendText((firstWord ? "" : " ") + word);
                    }

                    firstWord = false;
                }

                if (m.Highlight)
                {
                    chatBox.SelectionColor = chatBox.ForeColor;
                }

                chatBox.SelectionStart = chatBox.Text.Length;
                chatBox.ScrollToCaret();
            }
        }