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); } }
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(); } }