game_model.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. httpParamMutex sync.RWMutex
  18. HttpNodeParam *baseserver.ServiceParam
  19. )
  20. type GameUpdate struct {
  21. rocommon.UpdateModule //eventqueue.go
  22. initTime uint64
  23. }
  24. //定义初始化模块,比方说角色管理模块,任务模块等,然后通过update来处理定时器相关的处理
  25. func (this *GameUpdate) Init() {
  26. this.initTime = util.GetTimeMilliseconds() + 2*1000
  27. RoleMag = NewRoleManager()
  28. ArenaSeasonMag = newArenaSeasonManager()
  29. CompetitionMag = newCompetitionSeasonManager()
  30. ActivitiesMag = newActivitiesMag()
  31. RuneShopMag = NewRuneShopExploreManager()
  32. CrossMag = newCrossMag()
  33. updateList = append(updateList,
  34. RoleMag,
  35. ArenaSeasonMag,
  36. CompetitionMag,
  37. ActivitiesMag,
  38. RuneShopMag,
  39. CrossMag,
  40. )
  41. }
  42. func (this *GameUpdate) Update(ms uint64) {
  43. defer func() {
  44. //打印奔溃信息
  45. if err := recover(); err != nil {
  46. util.FatalF("onError data=%v \n%s\n", err, string(debug.Stack()))
  47. }
  48. }()
  49. if ms < this.initTime {
  50. return
  51. }
  52. RoleMag.UpdateWithTimeWheel(ms)
  53. //对管理器进行更新操作
  54. for _, data := range updateList {
  55. data.(rocommon.UpdateLogic).Update(ms)
  56. }
  57. }
  58. func GetHttpNodeParam() baseserver.ServiceParam {
  59. httpParamMutex.RLock()
  60. defer httpParamMutex.RUnlock()
  61. return *HttpNodeParam
  62. }
  63. func SetHttpNodeParam(param *baseserver.ServiceParam) {
  64. httpParamMutex.Lock()
  65. defer httpParamMutex.Unlock()
  66. HttpNodeParam = param
  67. }