game_model.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package model
  2. import (
  3. "rocommon"
  4. "rocommon/util"
  5. "roserver/baseserver"
  6. "runtime/debug"
  7. "sync"
  8. )
  9. var (
  10. updateList []interface{}
  11. RoleMag *RoleManager
  12. ArenaSeasonMag *ArenaSeasonManager
  13. CompetitionMag *CompetitionSeasonManager
  14. ActivitiesMag *ActivitiesManager
  15. RuneShopMag *StRuneShopExploreManager
  16. CrossMag *CrossManager
  17. TowerMag *TowerManager
  18. httpParamMutex sync.RWMutex
  19. HttpNodeParam *baseserver.ServiceParam
  20. )
  21. type GameUpdate struct {
  22. rocommon.UpdateModule //eventqueue.go
  23. initTime uint64
  24. }
  25. // 定义初始化模块,比方说角色管理模块,任务模块等,然后通过update来处理定时器相关的处理
  26. func (this *GameUpdate) Init() {
  27. this.initTime = util.GetTimeMilliseconds() + 2*1000
  28. RoleMag = NewRoleManager()
  29. ArenaSeasonMag = newArenaSeasonManager()
  30. CompetitionMag = newCompetitionSeasonManager()
  31. ActivitiesMag = newActivitiesMag()
  32. RuneShopMag = NewRuneShopExploreManager()
  33. CrossMag = newCrossMag()
  34. TowerMag = newTowerMag()
  35. updateList = append(updateList,
  36. RoleMag,
  37. ArenaSeasonMag,
  38. CompetitionMag,
  39. ActivitiesMag,
  40. RuneShopMag,
  41. CrossMag,
  42. TowerMag,
  43. )
  44. }
  45. func (this *GameUpdate) Update(ms uint64) {
  46. defer func() {
  47. //打印奔溃信息
  48. if err := recover(); err != nil {
  49. util.FatalF("onError data=%v \n%s\n", err, string(debug.Stack()))
  50. }
  51. }()
  52. if ms < this.initTime {
  53. return
  54. }
  55. RoleMag.UpdateWithTimeWheel(ms)
  56. //对管理器进行更新操作
  57. for _, data := range updateList {
  58. data.(rocommon.UpdateLogic).Update(ms)
  59. }
  60. }
  61. func GetHttpNodeParam() baseserver.ServiceParam {
  62. httpParamMutex.RLock()
  63. defer httpParamMutex.RUnlock()
  64. return *HttpNodeParam
  65. }
  66. func SetHttpNodeParam(param *baseserver.ServiceParam) {
  67. httpParamMutex.Lock()
  68. defer httpParamMutex.Unlock()
  69. HttpNodeParam = param
  70. }