actor_game.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package chat
  2. import (
  3. "f1-game/internal/component/redis"
  4. "f1-game/internal/enum"
  5. nameActor "f1-game/internal/name/actor"
  6. nameRemote "f1-game/internal/name/remote"
  7. nameRoute "f1-game/internal/name/route"
  8. "f1-game/internal/pb"
  9. "f1-game/internal/sessions"
  10. )
  11. type (
  12. actorGame struct {
  13. RoomTypeList
  14. }
  15. )
  16. func NewActorGame() *actorGame {
  17. return &actorGame{
  18. RoomTypeList: newRoomTypeList(enum.ChatType_Game),
  19. }
  20. }
  21. func (p *actorGame) OnInit() {
  22. p.Remote().Register(nameRemote.Chat_Send, p.send)
  23. p.Remote().Register(nameRemote.Chat_Push, p.Push)
  24. p.Remote().Register(nameRemote.Chat_Destory, p.Destory)
  25. p.Remote().Register(nameRemote.Chat_DelMsg, p.delMsg)
  26. }
  27. func (p *actorGame) AliasID() string {
  28. return nameActor.Chat_Game
  29. }
  30. func (p *actorGame) send(req *pb.ChatMsgList) {
  31. p.AddChatMsg(req)
  32. //路由到sendPlayer对应的gameNodeID push新消息
  33. p.pushSend(req)
  34. }
  35. func (p *actorGame) pushSend(req *pb.ChatMsgList) {
  36. gameNodeID := req.List[0].Sender.GameNodeID
  37. sessions.PushGame(gameNodeID, nameRoute.PushChat_MsgList, req)
  38. }
  39. func (p *actorGame) delMsg(req *pb.I64I64) {
  40. var (
  41. chatID = req.Key
  42. msgID = req.Value
  43. )
  44. msg := redis.Chat.GetChatMsg(p.chatType, chatID, msgID)
  45. if msg == nil {
  46. return
  47. }
  48. redis.Chat.DelMsgByMsgID(p.chatType, chatID, msgID)
  49. sessions.PushGame(msg.Sender.GameNodeID, nameRoute.PushChat_Delete, req)
  50. }