rank_model.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package model
  2. import (
  3. "rocommon"
  4. "rocommon/rpc"
  5. "rocommon/util"
  6. "roserver/baseserver/model"
  7. "roserver/serverproto"
  8. "runtime/debug"
  9. )
  10. var (
  11. updateList []interface{}
  12. CompetitionMag *CompetitionManager
  13. TowerMag *TowerRankManger
  14. CardCollectMag *CardCollectManager
  15. ArenaMag *ArenaRankManger
  16. DaoChang100Mag *DaoChang100Manager
  17. MapScoreMag *MapScoreManger
  18. KeepSakeMag *KeepSakeCollectManager
  19. PetRankMag *PetRankManger
  20. SkillRankMag *SkillRankManger
  21. )
  22. type RankUpdate struct {
  23. rocommon.UpdateModule //eventqueue.go
  24. initTime uint64
  25. }
  26. func (this *RankUpdate) Init() {
  27. this.initTime = util.GetTimeMilliseconds() + 2*1000
  28. CompetitionMag = newCompetitionManager()
  29. updateList = append(updateList, CompetitionMag)
  30. TowerMag = newTowerRankManger()
  31. updateList = append(updateList, TowerMag)
  32. ArenaMag = newArenaRankManger()
  33. updateList = append(updateList, ArenaMag)
  34. CardCollectMag = newCardCollectManager()
  35. updateList = append(updateList, CardCollectMag)
  36. DaoChang100Mag = newDaoChang100Manager()
  37. updateList = append(updateList, DaoChang100Mag)
  38. MapScoreMag = newMapScoreManger()
  39. updateList = append(updateList, MapScoreMag)
  40. KeepSakeMag = newKeepSakeCollectManager()
  41. updateList = append(updateList, KeepSakeMag)
  42. PetRankMag = newPetRankManger()
  43. updateList = append(updateList, PetRankMag)
  44. SkillRankMag = newSkillRankManger()
  45. updateList = append(updateList, SkillRankMag)
  46. }
  47. func (this *RankUpdate) Update(ms uint64) {
  48. defer func() {
  49. //打印奔溃信息
  50. if err := recover(); err != nil {
  51. util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
  52. }
  53. }()
  54. if ms < this.initTime {
  55. return
  56. }
  57. //对管理器进行更新操作
  58. for _, data := range updateList {
  59. data.(rocommon.UpdateLogic).Update(ms)
  60. }
  61. }
  62. func SendSocial(msg interface{}) bool {
  63. data, meta, err := rpc.EncodeMessage(msg)
  64. if err != nil {
  65. util.InfoF("[SendSocial] EncodeMessage err:%v %v", err, msg)
  66. return false
  67. }
  68. socialNode := model.SelectServiceNode(model.SERVICE_NODE_TYPE_SOCIAL_STR, 0)
  69. if socialNode == "" {
  70. util.InfoF("[SendSocial] social node not exist msg:%v", msg)
  71. return false
  72. }
  73. socialSess := model.GetServiceNode(socialNode)
  74. if socialSess == nil {
  75. util.ErrorF("[SendSocial] social session not exist:%v", socialSess)
  76. } else {
  77. //如果玩家信息存在,ClientId中存放的是玩家ID,否则存放的是玩家的gate sessionId
  78. socialSess.Send(&serverproto.ServiceTransmitAck{
  79. MsgId: uint32(meta.ID),
  80. MsgData: data,
  81. })
  82. }
  83. return true
  84. }
  85. func SendToAllGame(msg interface{}) {
  86. data, info, err := rpc.EncodeMessage(msg)
  87. if err != nil {
  88. util.InfoF("[SendGame]EncodeMessage err:%v %v", err, msg)
  89. return
  90. }
  91. sendMsg := &serverproto.ServiceTransmitAck{
  92. MsgId: uint32(info.ID),
  93. MsgData: data,
  94. }
  95. serviceList := model.GetAllServiceNodeByName(model.SERVICE_NODE_TYPE_GAME_STR)
  96. if len(serviceList) > 0 {
  97. for _, node := range serviceList {
  98. gameSess := model.GetServiceNode(node)
  99. if gameSess != nil {
  100. gameSess.Send(sendMsg)
  101. }
  102. }
  103. }
  104. }