404 lines
10 KiB
Go
404 lines
10 KiB
Go
package hero
|
|
|
|
import (
|
|
"fmt"
|
|
"go_dreamfactory/modules"
|
|
"go_dreamfactory/sys/configure"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
|
|
"go_dreamfactory/lego/core"
|
|
)
|
|
|
|
const (
|
|
new_hero = "game_hero.json" //英雄
|
|
hero_stargrow = "game_herostargrow.json" //英雄品质系数
|
|
hero_levelgrow = "game_herolevelgrow.json" //英雄成长系数
|
|
hero_starup = "game_herostarup.json" // 升星
|
|
hero_levelup = "game_herolevelup.json" //英雄等级基础属性
|
|
hero_exp = "game_heroexp.json" // 升级
|
|
hero_skillup = "game_heroskilllevel.json" // 英雄技能升级
|
|
game_skillatk = "game_skillatk.json" // 英雄技能
|
|
hero_resonance = "game_heroresonance.json" // 英雄共鸣
|
|
hero_comatn = "game_comatn.json" // 英雄共鸣重置
|
|
hero_awaken = "game_heroawaken.json" // 英雄觉醒
|
|
hero_drawcard = "game_drawcard.json" // 抽卡
|
|
hero_drawupdraw = "game_drawupdraw.json" // 抽卡概率调整
|
|
hero_drawcost = "game_drawcost.json" // 抽卡消耗
|
|
)
|
|
|
|
///配置管理组件
|
|
type configureComp struct {
|
|
modules.MCompConfigure
|
|
drawCardCfg map[string]map[int32][]*cfg.GamedrawCardData // 第一个key 卡池id 第二个key 星级
|
|
//map["base_pool1"]map[3]*cfg.Game_drawCardData
|
|
}
|
|
|
|
//组件初始化接口
|
|
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{}{
|
|
new_hero: cfg.NewGamehero,
|
|
hero_stargrow: cfg.NewGameheroStargrow,
|
|
hero_levelgrow: cfg.NewGameheroLevelgrow,
|
|
hero_starup: cfg.NewGameheroStarup,
|
|
hero_levelup: cfg.NewGameheroLevelup,
|
|
hero_exp: cfg.NewGameheroExp,
|
|
hero_skillup: cfg.NewGameheroSkillLevel,
|
|
game_skillatk: cfg.NewGameskillAtk,
|
|
hero_resonance: cfg.NewGameheroResonance,
|
|
hero_comatn: cfg.NewGamecomAtn,
|
|
hero_awaken: cfg.NewGameheroAwaken,
|
|
hero_drawcard: cfg.NewGamedrawCard,
|
|
hero_drawupdraw: cfg.NewGame_drawUpdraw,
|
|
//hero_drawcost: cfg.NewGamedrawCost,
|
|
})
|
|
this.drawCardCfg = make(map[string]map[int32][]*cfg.GamedrawCardData, 0)
|
|
|
|
configure.RegisterConfigure(hero_drawcard, cfg.NewGamedrawCard, func() {
|
|
this.SetHeroDrawConfig()
|
|
})
|
|
return
|
|
}
|
|
|
|
// 抽卡配置表
|
|
func (this *configureComp) SetHeroDrawConfig() (err error) {
|
|
var (
|
|
v interface{}
|
|
)
|
|
if v, err = this.GetConfigure(hero_drawcard); err == nil {
|
|
if _configure, ok := v.(*cfg.GamedrawCard); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.Game_drawCard", v)
|
|
return
|
|
} else {
|
|
for _, v := range _configure.GetDataList() {
|
|
if _, ok := this.drawCardCfg[v.CardPoolType]; !ok {
|
|
this.drawCardCfg[v.CardPoolType] = make(map[int32][]*cfg.GamedrawCardData, 0)
|
|
}
|
|
if _, ok := this.drawCardCfg[v.CardPoolType][v.Star]; !ok {
|
|
this.drawCardCfg[v.CardPoolType][v.Star] = make([]*cfg.GamedrawCardData, 0)
|
|
}
|
|
this.drawCardCfg[v.CardPoolType][v.Star] = append(this.drawCardCfg[v.CardPoolType][v.Star], v)
|
|
}
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.Game_drawCard", v)
|
|
}
|
|
|
|
return
|
|
}
|
|
func (this *configureComp) GetPollByType(poosType string) map[int32][]*cfg.GamedrawCardData {
|
|
return this.drawCardCfg[poosType]
|
|
}
|
|
|
|
//获取英雄配置数据
|
|
func (this *configureComp) getHeroConfigure() (configure *cfg.Gamehero, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
|
|
if v, err = this.GetConfigure(new_hero); err != nil {
|
|
return
|
|
} else {
|
|
if configure, ok = v.(*cfg.Gamehero); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.Gamehero", v)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取英雄强化增加属性配置数据
|
|
func (this *configureComp) GetHeroStargrowConfig() (configure *cfg.GameheroStargrow, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_stargrow); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroStargrow); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.Gamehero", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.Gamehero", v)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 获取英雄升级属性变化相关配置数据
|
|
func (this *configureComp) GetHeroLevelgrowConfig() (configure *cfg.GameheroLevelgrow, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_levelgrow); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroLevelgrow); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroLevelgrow", v)
|
|
return
|
|
}
|
|
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取英雄升星相关配置数据
|
|
func (this *configureComp) GetHeroStarupConfig() (configure *cfg.GameheroStarup, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_starup); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroStarup); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroStarup", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroStarup", v)
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取英雄升级相关配置数据
|
|
func (this *configureComp) GetHeroLevelUpConfig() (configure *cfg.GameheroLevelup, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_levelup); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroLevelup); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroLevelup", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroLevelup", v)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (this *configureComp) GetHeroExpConfig() (configure *cfg.GameheroExp, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_exp); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroExp); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroExp", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroExp", v)
|
|
}
|
|
return
|
|
}
|
|
func (this *configureComp) GetHeroExp(hid string) *cfg.GameheroExpData {
|
|
|
|
if v, err := this.GetConfigure(hero_exp); err == nil {
|
|
if configure, ok := v.(*cfg.GameheroExp); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroExp", v)
|
|
return nil
|
|
} else {
|
|
return configure.Get(hid)
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroExp", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//英雄等级基础属性
|
|
func (this *configureComp) GetHeroLevelup() (configure *cfg.GameheroLevelup, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_levelup); err != nil {
|
|
return
|
|
} else {
|
|
if configure, ok = v.(*cfg.GameheroLevelup); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroLevelup", v)
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//英雄品质系数
|
|
func (this *configureComp) GetHeroStargrow() (configure *cfg.GameheroStargrow, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_stargrow); err != nil {
|
|
return
|
|
} else {
|
|
if configure, ok = v.(*cfg.GameheroStargrow); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroStargrow", v)
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//获取英雄配置
|
|
func (this *configureComp) GetHero(heroCfgId string) *cfg.GameheroData {
|
|
cfg, err := this.getHeroConfigure()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
if v, ok := cfg.GetDataMap()[heroCfgId]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//获取英雄星级配置
|
|
func (this *configureComp) GetHeroStar(star int32) *cfg.GameheroStargrowData {
|
|
cfg, err := this.GetHeroStargrow()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
if v, ok := cfg.GetDataMap()[star]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//获取英雄等级配置
|
|
func (this *configureComp) GetHeroLv(lv int32) *cfg.GameheroLevelupData {
|
|
cfg, err := this.GetHeroLevelup()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
if v, ok := cfg.GetDataMap()[lv]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 英雄成长系数
|
|
func (this *configureComp) GetHeroLevelgrow() (configure *cfg.GameheroLevelgrow, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_levelgrow); err != nil {
|
|
return
|
|
} else {
|
|
if configure, ok = v.(*cfg.GameheroLevelgrow); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroLevelgrow", v)
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//英雄成长配置
|
|
func (this *configureComp) GetHeroLvgrow(heroId string) *cfg.GameheroLevelgrowData {
|
|
cfg, err := this.GetHeroLevelgrow()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
if v, ok := cfg.GetDataMap()[heroId]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 获取英雄技能升级相关信息
|
|
func (this *configureComp) GetHeroSkillUpConfig(skillid int32) (data *cfg.GameheroSkillLevelData) {
|
|
|
|
if v, err := this.GetConfigure(hero_skillup); err == nil {
|
|
if conf, ok := v.(*cfg.GameheroSkillLevel); ok {
|
|
data = conf.Get(skillid)
|
|
return
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 获取英雄技能最大等级
|
|
func (this *configureComp) GetHeroSkillMaxLvConfig(skillId uint32) int32 {
|
|
|
|
if v, err := this.GetConfigure(game_skillatk); err == nil {
|
|
if configure, ok := v.(*cfg.GameskillAtk); ok {
|
|
return configure.Get(int32(skillId)).MaxLV
|
|
}
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
// 通过英雄配置ID获取共鸣配置信息
|
|
func (this *configureComp) GetHeroResonanceConfig(cardConfigID string) (data *cfg.GameheroResonanceData, err error) {
|
|
var (
|
|
v interface{}
|
|
)
|
|
if v, err = this.GetConfigure(hero_resonance); err == nil {
|
|
if configure, ok := v.(*cfg.GameheroResonance); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroResonance", v)
|
|
return
|
|
} else {
|
|
data = configure.Get(cardConfigID)
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroResonance", v)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (this *configureComp) GetHeroResonanceRestConfig() (data *cfg.GamecomAtnData, err error) {
|
|
var (
|
|
v interface{}
|
|
)
|
|
if v, err = this.GetConfigure(hero_comatn); err == nil {
|
|
if configure, ok := v.(*cfg.GamecomAtn); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GamecomAtn", v)
|
|
return
|
|
} else {
|
|
data = configure.Get("hero_reset")
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.game_comatn", v)
|
|
}
|
|
|
|
return
|
|
}
|
|
func (this *configureComp) GetHeroAwakenConfig() (configure *cfg.GameheroAwaken, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_awaken); err == nil {
|
|
if configure, ok = v.(*cfg.GameheroAwaken); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroAwaken", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.GameheroAwaken", v)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 抽卡概率提高
|
|
func (this *configureComp) GetDrawUpDrawConfig() (configure *cfg.Game_drawUpdraw, err error) {
|
|
var (
|
|
v interface{}
|
|
ok bool
|
|
)
|
|
if v, err = this.GetConfigure(hero_drawupdraw); err == nil {
|
|
if configure, ok = v.(*cfg.Game_drawUpdraw); !ok {
|
|
err = fmt.Errorf("%T no is *cfg.Game_drawUpdraw", v)
|
|
return
|
|
}
|
|
} else {
|
|
err = fmt.Errorf("%T no is *cfg.Game_drawUpdraw", v)
|
|
}
|
|
|
|
return
|
|
}
|