private void AppendRhythmStorm(BiliLiveJsonParser.Danmaku danmaku) { rhythmStormCount++; Dispatcher.Invoke(new Action(() => { RhythmStormTextBox.Text = danmaku.Content; RhythmStormCountBox.Text = " x" + rhythmStormCount; RhythmStormBox.Visibility = Visibility.Visible; ((Storyboard)Resources["ShowRhythmStorm"]).Begin(); })); lastRhythmTime = DateTime.Now; if (rhythmStormThread == null) { rhythmStormThread = new Thread(delegate() { while (true) { if (DateTime.Now > lastRhythmTime.AddSeconds(ConfigManager.CurrentConfig.IntegrationTime / 1000)) { rhythmStormCount = 0; rhythmStormThread = null; break; } Thread.Sleep(1); } }); rhythmStormThread.Start(); } }
private void SpeakDanmaku(BiliLiveJsonParser.Danmaku item) { if (speechProcessor.IsAvalable) { string ssmlDoc = SsmlHelper.Danmaku(item.Sender.Name, item.Message); speechProcessor.Speak(ssmlDoc); } }
private void AppendDanmaku(BiliLiveJsonParser.Danmaku danmaku) { if (danmaku.Type != 0) { AppendRhythmStorm(danmaku); return; } Dispatcher.Invoke(new Action(() => { TextBlock textBlock = new TextBlock() { TextWrapping = TextWrapping.Wrap }; Run user = new Run() { Text = danmaku.Sender.Name, Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFADBCD9")), Tag = danmaku.Sender.Id }; user.MouseLeftButtonDown += User_MouseLeftButtonDown; textBlock.Inlines.Add(user); textBlock.Inlines.Add(new Run() { Text = " : ", Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF818181")) }); Run content = new Run() { Text = danmaku.Content, Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFFFF")), Tag = danmaku.Sender.Name + " : " }; content.MouseLeftButtonDown += Content_MouseLeftButtonDown; textBlock.Inlines.Add(content); ListBoxItem listBoxItem = new ListBoxItem() { Content = textBlock, HorizontalContentAlignment = HorizontalAlignment.Left, VerticalContentAlignment = VerticalAlignment.Center }; listBoxItem.MouseRightButtonUp += ListBoxItem_MouseRightButtonUp; listBoxItem.MouseLeftButtonUp += ListBoxItem_MouseLeftButtonUp; listBoxItem.MouseLeave += ListBoxItem_MouseLeave; listBoxItem.Loaded += ListBoxItem_Loaded; DanmakuBox.Items.Add(listBoxItem); RefreshScroll(DanmakuBox); })); }
public void AppendDanmaku(BiliLiveJsonParser.Danmaku item) { Dispatcher.Invoke(() => { DanmakuPanel.Children.Add(new Danmaku(item)); if (!DanmakuScrollViewer.IsMouseOver) { DanmakuScrollViewer.ScrollToBottom(); } CleanDanmakuTime = DateTime.UtcNow.AddSeconds(0.2); }); if (CleanDanmakuTask == null || CleanDanmakuTask.IsCompleted) { CleanDanmakuTask = Task.Factory.StartNew(CleanPanel); } }
public Danmaku(BiliLiveJsonParser.Danmaku danmaku) { InitializeComponent(); SenderBox.Text = danmaku.Sender.Name; MessageBox.Text = danmaku.Message; UserId = danmaku.Sender.Id; FaceImage.Source = null; //BitmapImage bitmapImage = FaceLoader.LoadFormCache(UserId); //FaceImage.Source = bitmapImage; //if (!FaceLoader.LoadFormCache(this)) // //SetFace(bitmapImage); // //if(bitmapImage == null) // FaceLoader.Enqueue(this); FaceLoader.LoadFace(this); }
public void ProcessItem(BiliLiveJsonParser.IItem item) { switch (item.Cmd) { case BiliLiveJsonParser.Cmds.DANMU_MSG: BiliLiveJsonParser.Danmaku danmaku = (BiliLiveJsonParser.Danmaku)item; if (danmaku.Type == 0) { if (OptionDict[DanmakuSpeechConfig.SpeechFilterOptions.DanmakuSpeech]) { SpeakDanmaku(danmaku); } } break; case BiliLiveJsonParser.Cmds.SUPER_CHAT_MESSAGE: BiliLiveJsonParser.SuperChat superChat = (BiliLiveJsonParser.SuperChat)item; if (OptionDict[DanmakuSpeechConfig.SpeechFilterOptions.SuperChatSpeech]) { SpeakSuperChat(superChat); } break; case BiliLiveJsonParser.Cmds.SEND_GIFT: BiliLiveJsonParser.Gift gift = (BiliLiveJsonParser.Gift)item; if (!giftCacheManager.AppendToExist(gift)) { giftCacheManager.AppendCache(gift); } break; case BiliLiveJsonParser.Cmds.COMBO_SEND: BiliLiveJsonParser.ComboSend comboSend = (BiliLiveJsonParser.ComboSend)item; if (OptionDict[DanmakuSpeechConfig.SpeechFilterOptions.ComboSendSpeech]) { SpeakComboSend(comboSend); } break; } }
public void AppendRythmStorm(BiliLiveJsonParser.Danmaku item) { Dispatcher.Invoke(() => { RythmStormPanel.Children.Add(new Danmaku(item)); if (!RythmStormScrollViewer.IsMouseOver) { RythmStormScrollViewer.ScrollToBottom(); } CleanRythmStormTime = DateTime.UtcNow.AddSeconds(0.2); HideRythmStormTime = DateTime.UtcNow.AddSeconds(5); }); if (CleanRythmStormTask == null || CleanRythmStormTask.IsCompleted) { CleanRythmStormTask = Task.Factory.StartNew(CleanRythmStorm); } if (ShowRythmStormTask == null || ShowRythmStormTask.IsCompleted) { ShowRythmStormTask = Task.Factory.StartNew(ShowRythmStorm); } }
public void ProcessItem(BiliLiveJsonParser.IItem item) { if (Window == null) { return; } switch (item.Cmd) { case BiliLiveJsonParser.Cmds.DANMU_MSG: BiliLiveJsonParser.Danmaku danmaku = (BiliLiveJsonParser.Danmaku)item; if (danmaku.Type == 0) { if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.Danmaku]) { Window.AppendDanmaku(danmaku); } } else if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.RythmStorm]) { Window.AppendRythmStorm(danmaku); } break; case BiliLiveJsonParser.Cmds.SUPER_CHAT_MESSAGE: BiliLiveJsonParser.SuperChat superChat = (BiliLiveJsonParser.SuperChat)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.SuperChat]) { Window.AppendSuperChat(superChat); } break; case BiliLiveJsonParser.Cmds.SEND_GIFT: BiliLiveJsonParser.Gift gift = (BiliLiveJsonParser.Gift)item; if (!giftCacheManager.AppendToExist(gift)) { GiftCacheManager.GiftCache giftCache = giftCacheManager.AppendCache(gift); if (gift.CoinType == "gold" && OptionDict[DanmakuShowConfig.DisplayFilterOptions.GoldenGift]) { Window.AppendGift(giftCache); } else if (gift.CoinType == "silver" && OptionDict[DanmakuShowConfig.DisplayFilterOptions.SilverGift]) { Window.AppendGift(giftCache); } } break; case BiliLiveJsonParser.Cmds.COMBO_SEND: BiliLiveJsonParser.ComboSend comboSend = (BiliLiveJsonParser.ComboSend)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.ComboSend]) { Window.AppendComboSend(comboSend); } break; case BiliLiveJsonParser.Cmds.WELCOME: BiliLiveJsonParser.Welcome welcome = (BiliLiveJsonParser.Welcome)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.Welcome]) { Window.AppendWelcome(welcome); } break; case BiliLiveJsonParser.Cmds.WELCOME_GUARD: BiliLiveJsonParser.WelcomeGuard welcomeGuard = (BiliLiveJsonParser.WelcomeGuard)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.WelcomeGuard]) { Window.AppendWelcomeGuard(welcomeGuard); } break; case BiliLiveJsonParser.Cmds.GUARD_BUY: BiliLiveJsonParser.GuardBuy guardBuy = (BiliLiveJsonParser.GuardBuy)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.GuardBuy]) { Window.AppendGuardBuy(guardBuy); } break; case BiliLiveJsonParser.Cmds.INTERACT_WORD: BiliLiveJsonParser.InteractWord interactWord = (BiliLiveJsonParser.InteractWord)item; if (interactWord.MessageType == BiliLiveJsonParser.InteractWord.MessageTypes.Entry && OptionDict[DanmakuShowConfig.DisplayFilterOptions.InteractEntry]) { Window.AppendInteractWord(interactWord); } else if (interactWord.MessageType == BiliLiveJsonParser.InteractWord.MessageTypes.Attention && OptionDict[DanmakuShowConfig.DisplayFilterOptions.InteractAttention]) { Window.AppendInteractWord(interactWord); } else if (interactWord.MessageType == BiliLiveJsonParser.InteractWord.MessageTypes.Share && OptionDict[DanmakuShowConfig.DisplayFilterOptions.InteractShare]) { Window.AppendInteractWord(interactWord); } else if (interactWord.MessageType == BiliLiveJsonParser.InteractWord.MessageTypes.SpecialAttention && OptionDict[DanmakuShowConfig.DisplayFilterOptions.InteractSpecialAttention]) { Window.AppendInteractWord(interactWord); } else if (interactWord.MessageType == BiliLiveJsonParser.InteractWord.MessageTypes.MutualAttention && OptionDict[DanmakuShowConfig.DisplayFilterOptions.InteractMutualAttention]) { Window.AppendInteractWord(interactWord); } break; case BiliLiveJsonParser.Cmds.ROOM_BLOCK_MSG: BiliLiveJsonParser.RoomBlock roomBlock = (BiliLiveJsonParser.RoomBlock)item; if (OptionDict[DanmakuShowConfig.DisplayFilterOptions.RoomBlock]) { Window.AppendRoomBlock(roomBlock); } break; } }