go_dreamfactory/modules/task/config.go
2022-09-09 11:52:38 +08:00

202 lines
4.3 KiB
Go

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, err error) {
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
}