//Msg类型数据处理方法map
var Msg_map = map[string]func(replyF, string) {
+ "TRADING_SCORE":nil,//每日任务
"MATCH_ROOM_CONF":nil,//赛事房间配置
"HOT_ROOM_NOTIFY":nil,//热点房间
"MATCH_TEAM_GIFT_RANK":nil,//赛事人气比拼
"PREPARING":replyF.preparing,//下播
"LIVE":replyF.live,//开播
"SUPER_CHAT_ENTRANCE":nil,//SC入口
+ "SUPER_CHAT_MESSAGE_DELETE":nil,//SC删除
"SUPER_CHAT_MESSAGE":nil,//replyF.super_chat_message,//SC
"SUPER_CHAT_MESSAGE_JPN":replyF.super_chat_message,//SC
"PANEL":replyF.panel,//排行榜
var gtkGetList = list.New()
var imgbuf = make(map[string](*gdk.Pixbuf))
-var keep int
-var keep_s int
+var keep_list = list.New()
+
var keep_key = map[string]int{
"face/0default":0,
"face/0room":0,
- "face/0buyguide":8,
+ "face/0buyguide":9,
"face/0gift":8,
"face/0jiezou":8,
"face/0level1":5,
- "face/0level2":5,
- "face/0level3":5,
+ "face/0level2":3,
+ "face/0level3":2,
"face/0superchat":13,
}
var (
}
{
loc := int(grid0.Container.GetChildren().Length())/2;
-
- if sec,ok := keep_key[img_src];ok && sec != 0 {
+ sec := 0
+ if tsec,ok := keep_key[img_src];ok && tsec != 0 {
+ sec = tsec
if sty,e := tmp_list.text.GetStyleContext();e == nil{
sty.AddClass("view")
sty.AddProvider(pro_style,gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
}else{{log.Println(e)}}
-
- grid0.InsertRow(loc);
- grid0.Attach(tmp_list.img, 0, loc, 1, 1)
- grid0.Attach(tmp_list.text, 1, loc, 1, 1)
- keep += 1
- keep_s += sec
- if keep_s > 20 {keep_s = 20}
-
- glib.TimeoutAdd(uint(keep_s * 1000),func()(o bool){
- o = false
- keep -= 1
- return
- })
- }else{
- grid0.InsertRow(loc - keep);
- grid0.Attach(tmp_list.img, 0, loc - keep, 1, 1)
- grid0.Attach(tmp_list.text, 1, loc - keep, 1, 1)
+
+ }
+ /*
+ front
+ |
+ back index:0
+ */
+ var InsertIndex int = keep_list.Len()
+ if sec != 0 {
+ var cu_To = time.Now().Add(time.Second * time.Duration(sec))
+ var hasInsert bool
+ for el := keep_list.Front(); el != nil; el = el.Next(){
+ if cu_To.After(el.Value.(time.Time)) {InsertIndex -= 1;continue}
+ keep_list.InsertBefore(cu_To,el)
+ hasInsert = true
+ break
+ }
+ if !hasInsert {
+ keep_list.PushBack(cu_To)
+ }
}
+ grid0.InsertRow(loc - InsertIndex);
+ grid0.Attach(tmp_list.img, 0, loc - InsertIndex, 1, 1)
+ grid0.Attach(tmp_list.text, 1, loc - InsertIndex, 1, 1)
loc = int(grid0.Container.GetChildren().Length())/2;
for loc > max {
loc -= 1
}
}
-
- go func(){
- for{
- time.Sleep(time.Second)
- if keep_s > 0 {keep_s -= 1}
- }
- }()
glib.TimeoutAdd(uint(3000), func()(o bool){
o = true
application.Connect("activate", func() {
log.Println("application activate")
- glib.TimeoutAdd(uint(300),func()(o bool){
- o = true
- var tmax int = max
- for len(Gtk_danmuChan) != 0 {
- tmax -= 1
- if tmax <= 0 {return}
- y(<-Gtk_danmuChan,load_face(<-Gtk_danmuChan_uid))
+ go func(){
+ for{
+ time.Sleep(time.Second)
+ for el := keep_list.Front(); el != nil && time.Now().After(el.Value.(time.Time));el = el.Next() {
+ keep_list.Remove(el)
+ }
+ if len(Gtk_danmuChan) == 0 {continue}
+ glib.TimeoutAdd(uint(1000 / (len(Gtk_danmuChan) + 1)),func()(bool){
+ if len(Gtk_danmuChan) == 0 {return false}
+ y(<-Gtk_danmuChan,load_face(<-Gtk_danmuChan_uid))
+ return true
+ })
}
- return
- })
-
+ }()
})
application.Connect("shutdown", func() {
func load_face(uid string) (loc string) {
loc = Gtk_img_path + `/` + "0default"
if uid == "" {return}
- if _,ok := keep_key[uid];ok{
+ if _,ok := keep_key[Gtk_img_path + `/` + uid];ok{
loc = Gtk_img_path + `/` + uid
return
}
--- /dev/null
+{
+ "cmd": "SUPER_CHAT_MESSAGE_JPN",
+ "data": {
+ "id": "771519",
+ "uid": "17572451",
+ "price": 30,
+ "rate": 1000,
+ "message": "\u7406\u89e3\u7406\u89e3\uff0c\u5927\u5c0f\u59d0\u662f\u77e5\u9053\u6211\u559c\u6b22\u7684\u662f\u4eba\u59bb\u624d\u8fd9\u6837\u505a\u7684",
+ "message_jpn": "\u7406\u89e3\u3067\u304d\u307e\u3059\u3002\u304a\u5b22\u3055\u3093\u306f\u79c1\u304c\u597d\u304d\u306a\u306e\u306f\u4eba\u59bb\u3060\u3068\u77e5\u3063\u3066\u3044\u307e\u3059\u3002",
+ "is_ranked": 1,
+ "background_image": "https:\/\/i0.hdslb.com\/bfs\/live\/a712efa5c6ebc67bafbe8352d3e74b820a00c13e.png",
+ "background_color": "#EDF5FF",
+ "background_icon": "",
+ "background_price_color": "#7497CD",
+ "background_bottom_color": "#2A60B2",
+ "ts": 1603590464,
+ "token": "47BF2F57",
+ "medal_info": {
+ "icon_id": 0,
+ "target_id": 434662713,
+ "special": "",
+ "anchor_uname": "NoWorld_Official",
+ "anchor_roomid": 21448649,
+ "medal_level": 27,
+ "medal_name": "NO\u6c11",
+ "medal_color": "#6154c"
+ },
+ "user_info": {
+ "uname": "\u5c4a\u304b\u306a\u3044\u9ebb\u7f8e\u306e\u5f8c\u8f29",
+ "face": "http:\/\/i1.hdslb.com\/bfs\/face\/152b7547d6a00f4417d710bb0fbf8c86db51c321.jpg",
+ "face_frame": "http:\/\/i0.hdslb.com\/bfs\/live\/9b3cfee134611c61b71e38776c58ad67b253c40a.png",
+ "guard_level": 2,
+ "user_level": 21,
+ "level_color": "#5896de",
+ "is_vip": 0,
+ "is_svip": 0,
+ "is_main_vip": 1,
+ "title": "0",
+ "manager": 0
+ },
+ "time": 59,
+ "start_time": 1603590463,
+ "end_time": 1603590523,
+ "gift": {
+ "num": 1,
+ "gift_id": 12000,
+ "gift_name": "\u9192\u76ee\u7559\u8a00"
+ }
+ },
+ "roomid": "21448649"
+}
\ No newline at end of file