package model import ( "rocommon" "rocommon/util" "roserver/baseserver" "runtime/debug" "sync" ) var ( updateList []interface{} RoleMag *RoleManager ArenaSeasonMag *ArenaSeasonManager CompetitionMag *CompetitionSeasonManager ActivitiesMag *ActivitiesManager RuneShopMag *StRuneShopExploreManager CrossMag *CrossManager TowerMag *TowerManager httpParamMutex sync.RWMutex HttpNodeParam *baseserver.ServiceParam ) type GameUpdate struct { rocommon.UpdateModule //eventqueue.go initTime uint64 } // 定义初始化模块,比方说角色管理模块,任务模块等,然后通过update来处理定时器相关的处理 func (this *GameUpdate) Init() { this.initTime = util.GetTimeMilliseconds() + 2*1000 RoleMag = NewRoleManager() ArenaSeasonMag = newArenaSeasonManager() CompetitionMag = newCompetitionSeasonManager() ActivitiesMag = newActivitiesMag() RuneShopMag = NewRuneShopExploreManager() CrossMag = newCrossMag() TowerMag = newTowerMag() updateList = append(updateList, RoleMag, ArenaSeasonMag, CompetitionMag, ActivitiesMag, RuneShopMag, CrossMag, TowerMag, ) } func (this *GameUpdate) Update(ms uint64) { defer func() { //打印奔溃信息 if err := recover(); err != nil { util.FatalF("onError data=%v \n%s\n", err, string(debug.Stack())) } }() if ms < this.initTime { return } RoleMag.UpdateWithTimeWheel(ms) //对管理器进行更新操作 for _, data := range updateList { data.(rocommon.UpdateLogic).Update(ms) } } func GetHttpNodeParam() baseserver.ServiceParam { httpParamMutex.RLock() defer httpParamMutex.RUnlock() return *HttpNodeParam } func SetHttpNodeParam(param *baseserver.ServiceParam) { httpParamMutex.Lock() defer httpParamMutex.Unlock() HttpNodeParam = param }