go_dreamfactory/modules/reputation/configure.go
2023-04-23 10:17:56 +08:00

88 lines
1.7 KiB
Go

package reputation
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
)
const (
gameTalent = "game_talent.json"
gameCampLv = "game_camplv.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)
err = this.LoadMultiConfigure(map[string]interface{}{
gameTalent: cfg.NewGameTalent,
gameCampLv: cfg.NewGameCampLv,
})
return
}
// 天赋树配置
func (this *configureComp) getTalentCfg() (data *cfg.GameTalent, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameTalent); err != nil {
return
} else {
if data, ok = v.(*cfg.GameTalent); !ok {
err = fmt.Errorf("%T is *cfg.GameTalent", v)
return
}
}
return
}
func (this *configureComp) getTalentNodeCfgBy(id, nodeLv int32) (data *cfg.GameTalentData) {
gt, err := this.getTalentCfg()
if err != nil {
return
}
for _, v := range gt.GetDataList() {
if v.Node == id && v.NodeLv == nodeLv {
return v
}
}
return
}
func (this *configureComp) getCampCfg() (data *cfg.GameCampLv, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameCampLv); err != nil {
return
} else {
if data, ok = v.(*cfg.GameCampLv); !ok {
err = fmt.Errorf("%T is *cfg.GameCampLv", v)
return
}
}
return
}
func (this *configureComp) getCampBy(raceType, lv int32) (data *cfg.GameCampLvData) {
gcl, err := this.getCampCfg()
if err != nil {
return nil
}
for _, v := range gcl.GetDataList() {
if v.RaceType == raceType && v.ReputationLv == lv {
return v
}
}
return
}