package dreamwarorder import ( "fmt" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" "sync" ) const ( game_passcheck = "game_passcheck.json" game_passcheckexp = "game_passcheckexp.json" game_passchecktask = "game_passchecktask.json" ) type configureComp struct { modules.MCompConfigure module *DreamWarorder lock sync.RWMutex order []*cfg.GamePassCheckData //战令 } func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { err = this.MCompConfigure.Init(service, module, comp, options) this.module = module.(*DreamWarorder) this.order = make([]*cfg.GamePassCheckData, 0) err = this.LoadConfigure(game_passcheckexp, cfg.NewGamePassCheckExp) err = this.LoadConfigure(game_passchecktask, cfg.NewGamePassCheckTask) configure.RegisterConfigure(game_passcheck, cfg.NewGamePassCheck, this.updateconfigure) return } func (this *configureComp) getorder() (results []*cfg.GamePassCheckData) { this.lock.RLock() defer this.lock.RUnlock() return this.order } // 读取任务配置表 func (this *configureComp) getPassCheckCfg() (data *cfg.GamePassCheck, err error) { var ( v interface{} ok bool ) if v, err = this.GetConfigure(game_passcheck); err != nil { return } else { if data, ok = v.(*cfg.GamePassCheck); !ok { err = fmt.Errorf("%T is *cfg.GameWorldTask", v) return } } return } // 更新任务配置表 func (this *configureComp) updateconfigure() { gwt, err := this.getPassCheckCfg() if err != nil { this.module.Error("世界任务配置表异常!") return } orderConf := make([]*cfg.GamePassCheckData, 0) for _, v := range gwt.GetDataList() { if v.PasscheckType == 4 { orderConf = append(orderConf, v) } } this.lock.Lock() this.order = orderConf this.lock.Unlock() } // 读取任务配置表 func (this *configureComp) getGamePassCheckTask() (confs []*cfg.GamePassCheckTaskData, err error) { var ( v interface{} ) if v, err = this.GetConfigure(game_passchecktask); err != nil { return } else { confs = v.(*cfg.GamePassCheckTask).GetDataList() } return }