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" "f1-game/internal/sessions" ) type ( actorGame struct { RoomTypeList } ) func NewActorGame() *actorGame { return &actorGame{ RoomTypeList: newRoomTypeList(enum.ChatType_Game), } } func (p *actorGame) 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) } func (p *actorGame) AliasID() string { return nameActor.Chat_Game } func (p *actorGame) send(req *pb.ChatMsgList) { p.AddChatMsg(req) //路由到sendPlayer对应的gameNodeID push新消息 p.pushSend(req) } func (p *actorGame) pushSend(req *pb.ChatMsgList) { gameNodeID := req.List[0].Sender.GameNodeID sessions.PushGame(gameNodeID, nameRoute.PushChat_MsgList, req) } func (p *actorGame) delMsg(req *pb.I64I64) { var ( chatID = req.Key msgID = req.Value ) msg := redis.Chat.GetChatMsg(p.chatType, chatID, msgID) if msg == nil { return } redis.Chat.DelMsgByMsgID(p.chatType, chatID, msgID) sessions.PushGame(msg.Sender.GameNodeID, nameRoute.PushChat_Delete, req) }