package actorRemote import ( cherryApp "f1-game/internal/cherry_app" "f1-game/internal/enum" nameActor "f1-game/internal/name/actor" nameRemote "f1-game/internal/name/remote" "f1-game/internal/pb" cfacade "github.com/cherry-game/cherry/facade" ) type chat struct { } func newChat() *chat { return &chat{} } func (p *chat) Push(chatType enum.ChatType, playerID int64, chatID int64) int32 { targetPath := p.targetPath(chatType, chatID) return cherryApp.Call(targetPath, nameRemote.Chat_Push, &pb.I64I64{ Key: playerID, Value: chatID, }) } func (p *chat) Send(req *pb.ChatMsgList) int32 { targetPath := p.targetPath(enum.ChatType(req.ChatType), req.ChatID) return cherryApp.Call(targetPath, nameRemote.Chat_Send, req) } func (p *chat) Destory(chatType enum.ChatType, chatID int64) int32 { targetPath := p.targetPath(chatType, chatID) return cherryApp.Call(targetPath, nameRemote.Chat_Destory, &pb.I64{ Value: chatID, }) } // 删除消息,供admin后台使用 func (p *chat) DelMsg(chatType enum.ChatType, chatID int64, msgID int64) int32 { targetPath := p.targetPath(chatType, chatID) return cherryApp.Call(targetPath, nameRemote.Chat_DelMsg, &pb.I64I64{ Key: chatID, Value: msgID, }) } func (p *chat) GroupJoin(chatID int64, playerID int64) int32 { targetPath := p.targetPath(enum.ChatType_Group, chatID) req := &pb.I64I64{ Key: chatID, Value: playerID, } return cherryApp.CallWait(targetPath, nameRemote.Chat_GroupJoin, req, nil) } func (p *chat) GroupPlayerChange(req *pb.ChatGroupPlayerChange) int32 { targetPath := p.targetPath(enum.ChatType_Group, req.ChatID) return cherryApp.Call(targetPath, nameRemote.Chat_GroupPlayerChange, req) } func (p *chat) GroupQuit(chatID int64, playerID int64) int32 { targetPath := p.targetPath(enum.ChatType_Group, chatID) return cherryApp.Call(targetPath, nameRemote.Chat_GroupQuit, &pb.I64I64{ Key: chatID, Value: playerID, }) } func (p *chat) targetPath(chatType enum.ChatType, chatID int64) string { chatNodeID := chatNodeID(chatID) actorID := p.getActorID(chatType) return cfacade.NewPath(chatNodeID, actorID) } func (p *chat) getActorID(chatType enum.ChatType) string { switch chatType { case enum.ChatType_Game: return nameActor.Chat_Game case enum.ChatType_League: return nameActor.Chat_League case enum.ChatType_Map: return nameActor.Chat_Map case enum.ChatType_Group: return nameActor.Chat_Group } return "" }