// Append list item private void AppendHistory(BiliLiveJsonParser.Item item) { if (!(item.GetType() == typeof(BiliLiveJsonParser.Danmaku) && ((BiliLiveJsonParser.Danmaku)item).Type != 0)) { ConfigManager.CurrentStatus.RecievedItems.Add(item); while (ConfigManager.CurrentStatus.RecievedItems.Count > ConfigManager.CurrentConfig.HistoryCapacity) { ConfigManager.CurrentStatus.RecievedItems.RemoveAt(0); } } }
// Listener recieved private void BiliLiveListener_JsonRecieved(Json.Value json) { Log += json.ToString() + "\r\n"; if (debugWindow != null) { debugWindow.AppendLog(json.ToString()); } BiliLiveJsonParser.Item item = BiliLiveJsonParser.Parse(json); AppendItem(item); AppendHistory(item); }
private void AppendItem(BiliLiveJsonParser.Item item) { if (item != null) { // If not Rhythm storm if (!(item.GetType() == typeof(BiliLiveJsonParser.Danmaku) && ((BiliLiveJsonParser.Danmaku)item).Type != 0)) { Dispatcher.Invoke(new Action(() => { if (item.GetType() == typeof(BiliLiveJsonParser.Danmaku) || item.GetType() == typeof(BiliLiveJsonParser.Welcome) || item.GetType() == typeof(BiliLiveJsonParser.WelcomeGuard) || item.GetType() == typeof(BiliLiveJsonParser.RoomBlock)) { while (DanmakuBox.Items.Count >= ConfigManager.CurrentConfig.ListCapacity) { RemoveFirstItem(DanmakuBox); } } else { while (GiftBox.Items.Count >= ConfigManager.CurrentConfig.ListCapacity) { RemoveFirstItem(GiftBox); } } })); } switch (item.Cmd) { case BiliLiveJsonParser.Item.Cmds.LIVE: case BiliLiveJsonParser.Item.Cmds.PREPARING: biliLiveInfo.UpdateInfo(ConfigManager.CurrentConfig.Timeout); break; case BiliLiveJsonParser.Item.Cmds.DANMU_MSG: AppendDanmaku((BiliLiveJsonParser.Danmaku)item); break; case BiliLiveJsonParser.Item.Cmds.SEND_GIFT: AppendGift((BiliLiveJsonParser.Gift)item); break; case BiliLiveJsonParser.Item.Cmds.COMBO_END: AppendGiftCombo((BiliLiveJsonParser.GiftCombo)item); break; case BiliLiveJsonParser.Item.Cmds.WELCOME: AppendWelcome((BiliLiveJsonParser.Welcome)item); break; case BiliLiveJsonParser.Item.Cmds.WELCOME_GUARD: AppendWelcomeGuard((BiliLiveJsonParser.WelcomeGuard)item); break; case BiliLiveJsonParser.Item.Cmds.ROOM_BLOCK_MSG: AppendRoomBlock((BiliLiveJsonParser.RoomBlock)item); break; case BiliLiveJsonParser.Item.Cmds.GUARD_BUY: AppendGuardBuy((BiliLiveJsonParser.GuardBuy)item); break; case BiliLiveJsonParser.Item.Cmds.UNKNOW: //AppendMessage(item.Json.ToString(), (Color)ColorConverter.ConvertFromString("#FFC8C83C")); break; default: break; } } }