package chat import ( "f1-game/internal/component/redis" "f1-game/internal/enum" nameActor "f1-game/internal/name/actor" nameRemote "f1-game/internal/name/remote" nameRoute "f1-game/internal/name/route" "f1-game/internal/pb" ctime "github.com/cherry-game/cherry/extend/time" ) type ( actorLeague struct { RoomTypeList } ) func NewActorLeague() *actorLeague { return &actorLeague{ RoomTypeList: newRoomTypeList(enum.ChatType_League), } } func (p *actorLeague) OnInit() { p.Remote().Register(nameRemote.Chat_Send, p.send) p.Remote().Register(nameRemote.Chat_Push, p.Push) p.Remote().Register(nameRemote.Chat_Destory, p.Destory) p.Remote().Register(nameRemote.Chat_DelMsg, p.DelMsg) p.initCleanRoomTimer() } func (p *actorLeague) AliasID() string { return nameActor.Chat_League } func (p *actorLeague) send(req *pb.ChatMsgList) { chatRoom := p.GetChatRoom(req.ChatID) p.flushPlayerIDList(chatRoom) p.AddChatMsg(req) p.Broadcast2Client(chatRoom, nameRoute.PushChat_MsgList, req) // update last send time chatRoom.LastSendTime = ctime.Now() } // 联盟每一秒钟刷新一次玩家列表 func (p *actorLeague) flushPlayerIDList(chatRoom *ChatRoom) { if chatRoom.LastSendTime.NowDiffSecond() < 1 { return } chatRoom.PlayerIDList = redis.Chat.GetLeagueMembers(chatRoom.ChatID) }