package task import ( "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" cfg "go_dreamfactory/sys/configure/structs" "sort" ) const ( gameActiveReward = "game_taskactivereward.json" gameTaskRound = "game_taskround.json" ) type configureComp struct { modules.MCompConfigure } 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.LoadMultiConfigure(map[string]interface{}{ gameTaskRound: cfg.NewGameTaskRound, gameActiveReward: cfg.NewGameActiveReward, }) return } //获取活跃度奖励配置 func (this *configureComp) getActiveRewardCfg() (data *cfg.GameActiveReward, err error) { var ( v interface{} ok bool ) if v, err = this.GetConfigure(gameActiveReward); err != nil { return } else { if data, ok = v.(*cfg.GameActiveReward); !ok { err = fmt.Errorf("%T no is *cfg.Game_ActiveReward", v) return } } return } //获取任务配置 func (this *configureComp) getTaskRoundCfg() (data *cfg.GameTaskRound, err error) { var ( v interface{} ok bool ) if v, err = this.GetConfigure(gameTaskRound); err != nil { return } else { if data, ok = v.(*cfg.GameTaskRound); !ok { err = fmt.Errorf("%T no is *cfg.Game_taskRound", v) return } } return } //根据taskId获取配置 func (this *configureComp) getTaskById(taskId int32) (data *cfg.GameTaskRoundData) { cfg, err := this.getTaskRoundCfg() if err != nil { log.Errorf("%v", err) return nil } if cfg != nil { data = cfg.GetDataMap()[taskId] } return } //是否第一个成就任务 func (this *configureComp) isFirstTask(taskId int32) bool { data := this.getTaskByTag(int32(comm.TASK_ACHIEVE)) for _, v := range data { if taskId == v.IdAfter { return false } else { continue } } return true } // 上一个任务 func (this *configureComp) getPreTask(preTaskId int32) *cfg.GameTaskRoundData { data := this.getTaskByTag(int32(comm.TASK_ACHIEVE)) for _, v := range data { if v.IdAfter == preTaskId { return v } } return nil } //获取任务配置列表 func (this *configureComp) getTaskList() (data []*cfg.GameTaskRoundData, err error) { cfg, err := this.getTaskRoundCfg() if err != nil { log.Errorf("%v", err) return data, err } if cfg != nil { data = cfg.GetDataList() } return } //根据任务类型获取任务列表 func (this *configureComp) getTasks(taskType int32) (data []*cfg.GameTaskRoundData, err error) { list, err := this.getTaskList() if err != nil { log.Errorf("%v", err) return data, err } for _, d := range list { if d.TypeId == taskType { data = append(data, d) } } return } //任务列表 正序 func (this *configureComp) getSortedTasks(taskType int32) (data []*cfg.GameTaskRoundData, err error) { if data, err = this.getTasks(taskType); err != nil { return nil, err } sort.SliceStable(data, func(i, j int) bool { return data[i].IdList > data[j].IdList }) return } //获取任务配置 条件 tasktag func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.GameTaskRoundData) { list, err := this.getTaskList() if err != nil { log.Errorf("%v", err) return data } for _, d := range list { if d.IdTag == taskTag { data = append(data, d) } } return } func (this *configureComp) getTaskActiveList() (data []*cfg.GameActiveRewardData) { conf, err := this.getActiveRewardCfg() if err != nil { log.Errorf("get conf err:%v", err) return } if conf != nil { data = conf.GetDataList() } return } //获取活跃度奖励list func (this *configureComp) getTaskActiveByTag(taskTag int32) (data []*cfg.GameActiveRewardData) { conf, err := this.getActiveRewardCfg() if err != nil { log.Errorf("get conf err:%v", err) return } if conf != nil { for _, v := range conf.GetDataList() { if v.IdTag == taskTag { data = append(data, v) } } } return } // 获取活跃度配置map func (this *configureComp) getTaskActiveById(id int32) (data *cfg.GameActiveRewardData) { conf, err := this.getActiveRewardCfg() if err != nil { log.Errorf("get conf err:%v", err) return } if conf != nil { if v, ok := conf.GetDataMap()[id]; ok { return v } } return }