go_dreamfactory/modules/caravan/comp_configure.go
2023-04-24 20:35:03 +08:00

186 lines
4.9 KiB
Go

package caravan
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
)
const (
game_trollgoods = "game_trollgoods.json"
game_trollcoefficient = "game_trollcoefficient.json"
game_trolltrain = "game_trolltrain.json"
game_trollrule = "game_trollrule.json"
game_trolllv = "game_trolllv.json"
)
///配置管理基础组件
type configureComp struct {
hlock sync.RWMutex
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.LoadConfigure(game_trollgoods, cfg.NewGameTrollGoods)
this.LoadConfigure(game_trollcoefficient, cfg.NewGameTrollCoefficient)
this.LoadConfigure(game_trolltrain, cfg.NewGameTrollTrain)
this.LoadConfigure(game_trollrule, cfg.NewGameTrollRule)
this.LoadConfigure(game_trolllv, cfg.NewGameTrollLv)
return
}
//加载多个配置文件
func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) {
for k, v := range confs {
err = configure.RegisterConfigure(k, v, nil)
if err != nil {
log.Errorf("配置文件:%s解析失败!", k)
break
}
}
return
}
//读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name)
}
// 获取列车货物信息
func (this *configureComp) GetTrollGoods(itemId int32) (data *cfg.GameTrollGoodsData) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
data = configure.Get(itemId)
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}
// 获取商人位置信息
func (this *configureComp) GetTrollTrain(id int32) (data *cfg.GameTrollTrainData) {
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return
}
// 获取基本规则
func (this *configureComp) GetTrollRule(id int32) int32 {
if v, err := this.GetConfigure(game_trollrule); err == nil {
if configure, ok := v.(*cfg.GameTrollRule); ok {
return configure.Get(id).Quantity
}
}
log.Errorf("get GetTrollRule conf err:%d", id)
return 1
}
func (this *configureComp) GetTrollCoefficient(id int32) (data *cfg.GameTrollCoefficientData) {
if v, err := this.GetConfigure(game_trollcoefficient); err == nil {
if configure, ok := v.(*cfg.GameTrollCoefficient); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollCoefficientData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollLv(id int32) (data *cfg.GameTrollLvData) {
if v, err := this.GetConfigure(game_trolllv); err == nil {
if configure, ok := v.(*cfg.GameTrollLv); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollCoefficientData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollAllTrain() (data []int32) {
data = make([]int32, 0)
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
for _, v := range configure.GetDataList() {
time := v.Time
data = append(data, time)
}
return
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollMaxCoefficientNux() int32 {
if v, err := this.GetConfigure(game_trollcoefficient); err == nil {
if configure, ok := v.(*cfg.GameTrollCoefficient); ok {
return int32(len(configure.GetDataList()))
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return 0
}
// 获取车站的数量
func (this *configureComp) GetTrollMaxTraintNum() int32 {
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
return int32(len(configure.GetDataList()))
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return 1 // 至少有1个车站
}
func (this *configureComp) GetTrollAllGoods() (data []*cfg.GameTrollGoodsData) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
data = configure.GetDataList()
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}
// 返回商人货物信息
func (this *configureComp) GetTrollGoodsFor(trainID int32) (data []int32) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
for _, v := range configure.GetDataList() {
if v.Goodsfor == trainID {
data = append(data, v.Id)
}
}
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}