配置锁

This commit is contained in:
meixiongfeng 2023-02-06 16:30:20 +08:00
parent 904e59475d
commit 3f9eace9d8
2 changed files with 9 additions and 6 deletions

View File

@ -6,6 +6,7 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"sync"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/utils" "go_dreamfactory/utils"
@ -39,9 +40,9 @@ const (
///配置管理组件 ///配置管理组件
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
hlock sync.RWMutex
drawCardCfg map[string]map[int32][]*cfg.GameDrawCardData // 第一个key 卡池id 第二个key 星级 drawCardCfg map[string]map[int32][]*cfg.GameDrawCardData // 第一个key 卡池id 第二个key 星级
//map["base_pool1"]map[3]*cfg.Game_drawCardData awakenMap map[int64]*cfg.GameHeroAwakenData
awakenMap map[int64]*cfg.GameHeroAwakenData
starMap map[int64]*cfg.GameHeroStarupData starMap map[int64]*cfg.GameHeroStarupData
module *Hero module *Hero
@ -76,6 +77,8 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
this.awakenMap = make(map[int64]*cfg.GameHeroAwakenData, 0) this.awakenMap = make(map[int64]*cfg.GameHeroAwakenData, 0)
configure.RegisterConfigure(hero_awaken, cfg.NewGameHeroAwaken, func() { configure.RegisterConfigure(hero_awaken, cfg.NewGameHeroAwaken, func() {
if v, err := this.GetConfigure(hero_awaken); err == nil { if v, err := this.GetConfigure(hero_awaken); err == nil {
this.hlock.Lock()
defer this.hlock.Unlock()
if _configure, ok := v.(*cfg.GameHeroAwaken); ok { if _configure, ok := v.(*cfg.GameHeroAwaken); ok {
for _, v := range _configure.GetDataList() { for _, v := range _configure.GetDataList() {
this.awakenMap[int64(utils.ToInt32(v.Hid)<<8)+int64(v.Phase)] = v this.awakenMap[int64(utils.ToInt32(v.Hid)<<8)+int64(v.Phase)] = v
@ -93,6 +96,8 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
configure.RegisterConfigure(hero_starup, cfg.NewGameHeroStarup, func() { configure.RegisterConfigure(hero_starup, cfg.NewGameHeroStarup, func() {
if v, err := this.GetConfigure(hero_starup); err == nil { if v, err := this.GetConfigure(hero_starup); err == nil {
if _configure, ok := v.(*cfg.GameHeroStarup); ok { if _configure, ok := v.(*cfg.GameHeroStarup); ok {
this.hlock.Lock()
defer this.hlock.Unlock()
for _, v := range _configure.GetDataList() { for _, v := range _configure.GetDataList() {
this.starMap[int64(utils.ToInt32(v.Id)<<8)+int64(v.Star)] = v this.starMap[int64(utils.ToInt32(v.Id)<<8)+int64(v.Star)] = v
} }
@ -115,8 +120,8 @@ func (this *configureComp) GetHeroStarupConfig(hid string, star int32) *cfg.Game
// 获取当前英雄最高星级 // 获取当前英雄最高星级
func (this *configureComp) GetHeroMaxStar(hid string, curStar int32) int32 { func (this *configureComp) GetHeroMaxStar(hid string, curStar int32) int32 {
var star int32 var star int32
for star = curStar; ; star++ { for star = curStar; star < 100; star++ {
if _, ok := this.starMap[int64(utils.ToInt32(hid)<<8)+int64(star)]; !ok { if _, ok := this.starMap[int64(utils.ToInt32(hid)<<8)+int64(star+1)]; !ok {
return star return star
} }
} }

View File

@ -5,7 +5,6 @@ import (
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"sync"
) )
const ( const (
@ -18,7 +17,6 @@ const (
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
module *Mline module *Mline
hlock sync.RWMutex
} }
//组件初始化接口 //组件初始化接口