go_dreamfactory/modules/jielong/configure.go
2023-10-20 11:11:29 +08:00

89 lines
2.2 KiB
Go

package jielong
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
)
const (
game_fast = "game_gamefast.json"
)
type configureComp struct {
modules.MCompConfigure
module *Jielong
hlock sync.RWMutex
tyep1 map[int32]*cfg.GameGameFastData
tyep2 map[int32]*cfg.GameGameFastData
}
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.(*Jielong)
// err = this.LoadMultiConfigure(map[string]interface{}{
// game_fast: cfg.NewGameGameFast,
// })
configure.RegisterConfigure(game_fast, cfg.NewGameGameFast, func() {
if v, err := this.GetConfigure(game_fast); err == nil {
this.hlock.Lock()
defer this.hlock.Unlock()
this.tyep1 = make(map[int32]*cfg.GameGameFastData)
this.tyep2 = make(map[int32]*cfg.GameGameFastData)
if _configure, ok := v.(*cfg.GameGameFast); ok {
for _, v := range _configure.GetDataList() {
if v.Type == 1 {
this.tyep1[v.Condition] = v
} else if v.Type == 2 {
this.tyep2[v.Condition] = v
}
}
return
}
} else {
err = fmt.Errorf("%T no is *cfg.GameGameFastData", v)
}
})
return
}
func (this *configureComp) getGameFastDataByType(itype int32) (conf map[int32]*cfg.GameGameFastData, err error) {
this.hlock.RLock()
defer this.hlock.RUnlock()
if itype == 1 {
conf = this.tyep1
} else if itype == 2 {
conf = this.tyep2
}
if conf == nil {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_fast, itype)
return
}
return
}
//读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name)
}
func (this *configureComp) getGameFastData(id int32) (conf *cfg.GameGameFastData, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(game_fast); err != nil {
return
}
if conf, ok = v.(*cfg.GameGameFast).GetDataMap()[id]; !ok {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_fast, id)
this.module.Errorln(err)
return
}
return
}