actor.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package rank
  2. import (
  3. "f1-game/internal/data"
  4. nameActor "f1-game/internal/name/actor"
  5. "f1-game/internal/pb"
  6. cstring "github.com/cherry-game/cherry/extend/string"
  7. cfacade "github.com/cherry-game/cherry/facade"
  8. clog "github.com/cherry-game/cherry/logger"
  9. cactor "github.com/cherry-game/cherry/net/actor"
  10. )
  11. type actor struct {
  12. cactor.Base
  13. //workerSize int64
  14. }
  15. func NewActor() *actor {
  16. return &actor{}
  17. }
  18. func (p *actor) AliasID() string {
  19. return nameActor.Map_Rank
  20. }
  21. func (p *actor) OnInit() {
  22. var childList []cfacade.IActorHandler
  23. childList = append(childList, &actorPlayerPrestige{})
  24. childList = append(childList, &actorPlayerGlory{})
  25. childList = append(childList, &actorPlayerSeasonScore{})
  26. childList = append(childList, &actorLeaguePrestige{})
  27. childList = append(childList, &actorLeagueSeasonScore{})
  28. for _, child := range childList {
  29. p.Child().Create(child.AliasID(), child)
  30. }
  31. }
  32. // map.rank.playerList/leagueList
  33. func (p *actor) OnLocalReceived(m *cfacade.Message) (next bool, invoke bool) {
  34. argBytes, ok := m.Args.([]uint8)
  35. if !ok {
  36. clog.Warnf("OnLocalReceived args is not *pb.I32. m=%+v", m)
  37. return false, false
  38. }
  39. var req pb.I32
  40. err := p.App().Serializer().Unmarshal(argBytes, &req)
  41. if err != nil {
  42. clog.Warnf("OnLocalReceived args unmarshal failed. err=%v, m=%+v", err, m)
  43. return false, false
  44. }
  45. // 判断排行榜是否存在
  46. rankID := req.Value
  47. _, found := data.Rank.GetByRankID(rankID)
  48. if !found {
  49. clog.Warnf("OnLocalReceived rankID is not found. rankID=%d", rankID)
  50. return false, false
  51. }
  52. childActor, found := p.Child().Get(cstring.ToString(rankID))
  53. if !found {
  54. clog.Warnf("OnLocalReceived rankID actor not register. rankID=%d", rankID)
  55. return false, false
  56. }
  57. childActor.PostLocal(m)
  58. return false, false
  59. }