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 ( actorMap struct { RoomTypeList } ) func NewActorMap() *actorMap { return &actorMap{ RoomTypeList: newRoomTypeList(enum.ChatType_Map), } } func (p *actorMap) 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 *actorMap) AliasID() string { return nameActor.Chat_Map } func (p *actorMap) send(req *pb.ChatMsgList) { p.AddChatMsg(req) //路由到sendPlayer对应的mapNodeID push新消息 p.pushSend(req) } func (p *actorMap) pushSend(req *pb.ChatMsgList) { mapNodeID := req.List[0].Sender.MapNodeID sessions.PushMap(mapNodeID, nameRoute.PushChat_MsgList, req) } func (p *actorMap) 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.PushMap(msg.Sender.MapNodeID, nameRoute.PushChat_Delete, req) }