上传战斗模块表调整
This commit is contained in:
parent
ada9d59d29
commit
1b0c92ae7e
@ -175,6 +175,8 @@ type (
|
|||||||
|
|
||||||
//战斗系统
|
//战斗系统
|
||||||
IBattle interface {
|
IBattle interface {
|
||||||
|
//创建怪物阵营
|
||||||
|
CreateMasterRoles(wheel int, fid int32) (captain int32, roles []*pb.BattleRole, code pb.ErrorCode)
|
||||||
///创建pve战斗
|
///创建pve战斗
|
||||||
CreatePveBattle(session IUserSession, req *pb.BattlePVEReq) (code pb.ErrorCode, record *pb.DBBattleRecord)
|
CreatePveBattle(session IUserSession, req *pb.BattlePVEReq) (code pb.ErrorCode, record *pb.DBBattleRecord)
|
||||||
///创建pvb战斗
|
///创建pvb战斗
|
||||||
|
@ -23,9 +23,11 @@ const (
|
|||||||
///竞技场配置管理组件
|
///竞技场配置管理组件
|
||||||
type configureComp struct {
|
type configureComp struct {
|
||||||
modules.MCompConfigure
|
modules.MCompConfigure
|
||||||
module *Arena
|
module *Arena
|
||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
ais map[int32][]*cfg.GameArenaRobotData
|
ais map[int32][]*cfg.GameArenaRobotData
|
||||||
|
mformatlock sync.RWMutex
|
||||||
|
mformat map[int32][]*cfg.GameMonsterFormatData //怪物阵营表
|
||||||
}
|
}
|
||||||
|
|
||||||
//组件初始化接口
|
//组件初始化接口
|
||||||
@ -38,7 +40,24 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
|||||||
this.LoadConfigure(game_arenarankreward, cfg.NewGameArenaRankReward)
|
this.LoadConfigure(game_arenarankreward, cfg.NewGameArenaRankReward)
|
||||||
this.LoadConfigure(game_arenachallengenpc, cfg.NewGameArenaChallengeNpc)
|
this.LoadConfigure(game_arenachallengenpc, cfg.NewGameArenaChallengeNpc)
|
||||||
|
|
||||||
this.LoadConfigure(game_monsterformat, cfg.NewGameMonsterFormat)
|
configure.RegisterConfigure(game_monsterformat, cfg.NewGameMonsterFormat, func() {
|
||||||
|
this.mformatlock.Lock()
|
||||||
|
if v, err := this.GetConfigure(game_monsterformat); err != nil {
|
||||||
|
this.module.Errorf("err:%v", err)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.mformat = make(map[int32][]*cfg.GameMonsterFormatData)
|
||||||
|
for _, v := range v.(*cfg.GameMonsterFormat).GetDataList() {
|
||||||
|
if this.mformat[v.Id] == nil {
|
||||||
|
this.mformat[v.Id] = make([]*cfg.GameMonsterFormatData, 5)
|
||||||
|
}
|
||||||
|
if v.Monster != -1 {
|
||||||
|
this.mformat[v.Id][v.Pos-1] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.mformatlock.Unlock()
|
||||||
|
})
|
||||||
this.LoadConfigure(game_monster, cfg.NewGameMonster)
|
this.LoadConfigure(game_monster, cfg.NewGameMonster)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -124,19 +143,18 @@ func (this *configureComp) getArenaRobot(dan int32) (result []*cfg.GameArenaRobo
|
|||||||
}
|
}
|
||||||
|
|
||||||
//查询阵容表
|
//查询阵容表
|
||||||
func (this *configureComp) getMonsterFormat(id int32) (result *cfg.GameMonsterFormatData, err error) {
|
//查询阵容表
|
||||||
|
func (this *configureComp) getMonsterFormat(id int32) (result []*cfg.GameMonsterFormatData, err error) {
|
||||||
|
this.mformatlock.RLock()
|
||||||
|
defer this.mformatlock.RUnlock()
|
||||||
var (
|
var (
|
||||||
v interface{}
|
|
||||||
ok bool
|
ok bool
|
||||||
)
|
)
|
||||||
if v, err = this.GetConfigure(game_monsterformat); err != nil {
|
if result, ok = this.mformat[id]; ok {
|
||||||
this.module.Errorln(err)
|
return
|
||||||
} else {
|
|
||||||
if result, ok = v.(*cfg.GameMonsterFormat).GetDataMap()[id]; !ok {
|
|
||||||
err = fmt.Errorf("on found MonsterFormat:%d", id)
|
|
||||||
this.module.Errorln(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
err = fmt.Errorf("GetMonsterFormat no found :%d", id)
|
||||||
|
this.module.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err
|
|||||||
var (
|
var (
|
||||||
active *cfg.GameArenaActiveRewardData
|
active *cfg.GameArenaActiveRewardData
|
||||||
ais []*cfg.GameArenaRobotData
|
ais []*cfg.GameArenaRobotData
|
||||||
mFormat *cfg.GameMonsterFormatData
|
formats []*cfg.GameMonsterFormatData
|
||||||
monst *cfg.GameMonsterData
|
monst *cfg.GameMonsterData
|
||||||
rank []int32
|
rank []int32
|
||||||
targets []int32
|
targets []int32
|
||||||
@ -198,7 +198,7 @@ func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err
|
|||||||
results = make([]*pb.ArenaPlayer, num)
|
results = make([]*pb.ArenaPlayer, num)
|
||||||
for i, v := range targets {
|
for i, v := range targets {
|
||||||
aiconf := ais[v]
|
aiconf := ais[v]
|
||||||
if mFormat, err = this.module.configure.getMonsterFormat(aiconf.MonsterformatId); err != nil {
|
if formats, err = this.module.configure.getMonsterFormat(aiconf.MonsterformatId); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -210,25 +210,29 @@ func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err
|
|||||||
Isai: true,
|
Isai: true,
|
||||||
Mformatid: aiconf.MonsterformatId,
|
Mformatid: aiconf.MonsterformatId,
|
||||||
Defend: &pb.DBPlayerBattleFormt{
|
Defend: &pb.DBPlayerBattleFormt{
|
||||||
Leadpos: mFormat.CaptainId,
|
Leadpos: 0,
|
||||||
Formt: make([]*pb.DBHero, len(mFormat.MonsterList)),
|
Formt: make([]*pb.DBHero, len(formats)),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for i1, v1 := range mFormat.MonsterList {
|
|
||||||
if v1 == -1 {
|
for i1, v1 := range formats {
|
||||||
|
if v1 == nil {
|
||||||
results[i].Defend.Formt[i1] = nil
|
results[i].Defend.Formt[i1] = nil
|
||||||
} else {
|
} else {
|
||||||
if monst, err = this.module.configure.getMonster(v1); err != nil {
|
if v1.CaptainId == 1 {
|
||||||
|
results[i].Defend.Leadpos = int32(i1)
|
||||||
|
}
|
||||||
|
if monst, err = this.module.configure.getMonster(v1.Monster); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
}
|
}
|
||||||
hero := &pb.DBHero{}
|
hero := &pb.DBHero{}
|
||||||
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, mFormat.Lv); hero == nil {
|
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, v1.Lv); hero == nil {
|
||||||
err = fmt.Errorf("CreateMonster 失败")
|
err = fmt.Errorf("CreateMonster 失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hero.Property[comm.Hp] = int32(float32(hero.Property[comm.Hp]) * mFormat.Hppro)
|
hero.Property[comm.Hp] = int32(float32(hero.Property[comm.Hp]) * v1.Hppro)
|
||||||
hero.Property[comm.Atk] = int32(float32(hero.Property[comm.Atk]) * mFormat.Atkpro)
|
hero.Property[comm.Atk] = int32(float32(hero.Property[comm.Atk]) * v1.Atkpro)
|
||||||
hero.Property[comm.Def] = int32(float32(hero.Property[comm.Def]) * mFormat.Defpro)
|
hero.Property[comm.Def] = int32(float32(hero.Property[comm.Def]) * v1.Defpro)
|
||||||
hero.SuiteId = monst.Equip4
|
hero.SuiteId = monst.Equip4
|
||||||
hero.SuiteExtId = monst.Equip2
|
hero.SuiteExtId = monst.Equip2
|
||||||
results[i].Defend.Formt[i1] = hero
|
results[i].Defend.Formt[i1] = hero
|
||||||
@ -293,10 +297,10 @@ func (this *modelArena) randUserName() string {
|
|||||||
|
|
||||||
func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) {
|
func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) {
|
||||||
var (
|
var (
|
||||||
mFormat *cfg.GameMonsterFormatData
|
formats []*cfg.GameMonsterFormatData
|
||||||
monst *cfg.GameMonsterData
|
monst *cfg.GameMonsterData
|
||||||
)
|
)
|
||||||
if mFormat, err = this.module.configure.getMonsterFormat(mformatId); err != nil {
|
if formats, err = this.module.configure.getMonsterFormat(mformatId); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -305,25 +309,25 @@ func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) {
|
|||||||
Isai: true,
|
Isai: true,
|
||||||
Mformatid: mformatId,
|
Mformatid: mformatId,
|
||||||
Defend: &pb.DBPlayerBattleFormt{
|
Defend: &pb.DBPlayerBattleFormt{
|
||||||
Leadpos: mFormat.CaptainId,
|
Leadpos: 0,
|
||||||
Formt: make([]*pb.DBHero, len(mFormat.MonsterList)),
|
Formt: make([]*pb.DBHero, len(formats)),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for i1, v1 := range mFormat.MonsterList {
|
for i1, v1 := range formats {
|
||||||
if v1 == -1 {
|
if v1 == nil {
|
||||||
ai.Defend.Formt[i1] = nil
|
ai.Defend.Formt[i1] = nil
|
||||||
} else {
|
} else {
|
||||||
if monst, err = this.module.configure.getMonster(v1); err != nil {
|
if monst, err = this.module.configure.getMonster(v1.Monster); err != nil {
|
||||||
this.module.Errorln(err)
|
this.module.Errorln(err)
|
||||||
}
|
}
|
||||||
hero := &pb.DBHero{}
|
hero := &pb.DBHero{}
|
||||||
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, mFormat.Lv); hero == nil {
|
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, v1.Lv); hero == nil {
|
||||||
err = fmt.Errorf("CreateMonster 失败")
|
err = fmt.Errorf("CreateMonster 失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hero.Property[comm.Hp] = int32(float32(hero.Property[comm.Hp]) * mFormat.Hppro)
|
hero.Property[comm.Hp] = int32(float32(hero.Property[comm.Hp]) * v1.Hppro)
|
||||||
hero.Property[comm.Atk] = int32(float32(hero.Property[comm.Atk]) * mFormat.Atkpro)
|
hero.Property[comm.Atk] = int32(float32(hero.Property[comm.Atk]) * v1.Atkpro)
|
||||||
hero.Property[comm.Def] = int32(float32(hero.Property[comm.Def]) * mFormat.Defpro)
|
hero.Property[comm.Def] = int32(float32(hero.Property[comm.Def]) * v1.Defpro)
|
||||||
hero.SuiteId = monst.Equip4
|
hero.SuiteId = monst.Equip4
|
||||||
hero.SuiteExtId = monst.Equip2
|
hero.SuiteExtId = monst.Equip2
|
||||||
ai.Defend.Formt[i1] = hero
|
ai.Defend.Formt[i1] = hero
|
||||||
|
@ -23,6 +23,8 @@ const (
|
|||||||
type configureComp struct {
|
type configureComp struct {
|
||||||
modules.MCompConfigure
|
modules.MCompConfigure
|
||||||
module *Battle
|
module *Battle
|
||||||
|
mformatlock sync.RWMutex
|
||||||
|
mformat map[int32][]*cfg.GameMonsterFormatData //怪物阵营表
|
||||||
skillatklock sync.RWMutex
|
skillatklock sync.RWMutex
|
||||||
skillatk map[int32]map[int32]*cfg.GameSkillAtkData //主动技能表
|
skillatk map[int32]map[int32]*cfg.GameSkillAtkData //主动技能表
|
||||||
}
|
}
|
||||||
@ -33,7 +35,24 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
|||||||
this.module = module.(*Battle)
|
this.module = module.(*Battle)
|
||||||
this.LoadConfigure(game_equipsuit, cfg.NewGameEquipSuit)
|
this.LoadConfigure(game_equipsuit, cfg.NewGameEquipSuit)
|
||||||
this.LoadConfigure(game_monster, cfg.NewGameMonster)
|
this.LoadConfigure(game_monster, cfg.NewGameMonster)
|
||||||
this.LoadConfigure(game_monsterformat, cfg.NewGameMonsterFormat)
|
configure.RegisterConfigure(game_monsterformat, cfg.NewGameMonsterFormat, func() {
|
||||||
|
this.mformatlock.Lock()
|
||||||
|
if v, err := this.GetConfigure(game_monsterformat); err != nil {
|
||||||
|
this.module.Errorf("err:%v", err)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.mformat = make(map[int32][]*cfg.GameMonsterFormatData)
|
||||||
|
for _, v := range v.(*cfg.GameMonsterFormat).GetDataList() {
|
||||||
|
if this.mformat[v.Id] == nil {
|
||||||
|
this.mformat[v.Id] = make([]*cfg.GameMonsterFormatData, 5)
|
||||||
|
}
|
||||||
|
if v.Monster != -1 {
|
||||||
|
this.mformat[v.Id][v.Pos-1] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.mformatlock.Unlock()
|
||||||
|
})
|
||||||
configure.RegisterConfigure(game_skillatk, cfg.NewGameSkillAtk, func() {
|
configure.RegisterConfigure(game_skillatk, cfg.NewGameSkillAtk, func() {
|
||||||
this.skillatklock.Lock()
|
this.skillatklock.Lock()
|
||||||
if v, err := this.GetConfigure(game_skillatk); err != nil {
|
if v, err := this.GetConfigure(game_skillatk); err != nil {
|
||||||
@ -57,19 +76,17 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
|||||||
}
|
}
|
||||||
|
|
||||||
//查询阵容表
|
//查询阵容表
|
||||||
func (this *configureComp) GetMonsterFormat(id int32) (result *cfg.GameMonsterFormatData, err error) {
|
func (this *configureComp) GetMonsterFormat(id int32) (result []*cfg.GameMonsterFormatData, err error) {
|
||||||
|
this.mformatlock.RLock()
|
||||||
|
defer this.mformatlock.RUnlock()
|
||||||
var (
|
var (
|
||||||
v interface{}
|
|
||||||
ok bool
|
ok bool
|
||||||
)
|
)
|
||||||
if v, err = this.GetConfigure(game_monsterformat); err != nil {
|
if result, ok = this.mformat[id]; ok {
|
||||||
this.module.Errorln(err)
|
return
|
||||||
} else {
|
|
||||||
if result, ok = v.(*cfg.GameMonsterFormat).GetDataMap()[id]; !ok {
|
|
||||||
err = fmt.Errorf("on found MonsterFormat:%d", id)
|
|
||||||
this.module.Errorln(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
err = fmt.Errorf("GetMonsterFormat no found :%d", id)
|
||||||
|
this.module.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"go_dreamfactory/lego/sys/log"
|
"go_dreamfactory/lego/sys/log"
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
"go_dreamfactory/sys/db"
|
"go_dreamfactory/sys/db"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -55,63 +56,26 @@ func (this *modelBattleComp) createeve(session comm.IUserSession, conn *db.DBCon
|
|||||||
BlueCompId: "",
|
BlueCompId: "",
|
||||||
Buleflist: make([]*pb.DBBattleFormt, len(req.Buleformat)),
|
Buleflist: make([]*pb.DBBattleFormt, len(req.Buleformat)),
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
|
captain int32
|
||||||
|
masters []*pb.BattleRole
|
||||||
|
)
|
||||||
for i, v := range req.Redformat {
|
for i, v := range req.Redformat {
|
||||||
if mf, err := this.module.configure.GetMonsterFormat(v); err != nil {
|
if captain, masters, code = this.createMasterRoles(i, v); code != pb.ErrorCode_Success {
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
return
|
||||||
} else {
|
}
|
||||||
record.Buleflist[i] = &pb.DBBattleFormt{
|
record.Redflist[i] = &pb.DBBattleFormt{
|
||||||
Leadpos: mf.CaptainId,
|
Leadpos: captain,
|
||||||
Team: make([]*pb.BattleRole, len(mf.MonsterList)),
|
Team: masters,
|
||||||
}
|
}
|
||||||
for i1, v1 := range mf.MonsterList {
|
}
|
||||||
if v1 == -1 {
|
for i, v := range req.Buleformat {
|
||||||
record.Buleflist[i].Team[i1] = nil
|
if captain, masters, code = this.createMasterRoles(i, v); code != pb.ErrorCode_Success {
|
||||||
} else {
|
return
|
||||||
if monst, err := this.module.configure.GetMonster(v1); err != nil {
|
}
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
record.Buleflist[i] = &pb.DBBattleFormt{
|
||||||
} else {
|
Leadpos: captain,
|
||||||
hero := &pb.DBHero{}
|
Team: masters,
|
||||||
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, mf.Lv); hero == nil {
|
|
||||||
log.Error("on found battle req data", log.Field{Key: "HeroId", Value: monst.HeroId})
|
|
||||||
code = pb.ErrorCode_ReqParameterError
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1] = &pb.BattleRole{
|
|
||||||
Tid: int32(200 + i*10 + i1),
|
|
||||||
Oid: hero.Id,
|
|
||||||
HeroID: hero.HeroID,
|
|
||||||
Pos: int32(i1),
|
|
||||||
Star: hero.Star,
|
|
||||||
Lv: hero.Lv,
|
|
||||||
CaptainSkill: hero.CaptainSkill,
|
|
||||||
NormalSkill: hero.NormalSkill,
|
|
||||||
Property: hero.Property,
|
|
||||||
}
|
|
||||||
if monst.Equip4 != 0 {
|
|
||||||
if suit, err := this.module.configure.Getequipsuit(monst.Equip4); err != nil {
|
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1].MainSuitSkill = suit.Skill
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if monst.Equip2 != 0 {
|
|
||||||
if suit, err := this.module.configure.Getequipsuit(monst.Equip2); err != nil {
|
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1].SubSuitSkill = suit.Skill
|
|
||||||
}
|
|
||||||
}
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Hp] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Hp]) * mf.Hppro)
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Atk] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Atk]) * mf.Atkpro)
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Def] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Def]) * mf.Defpro)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -184,63 +148,17 @@ func (this *modelBattleComp) createpve(session comm.IUserSession, conn *db.DBCon
|
|||||||
record.Redflist[0].Team[i].Ishelp = true
|
record.Redflist[0].Team[i].Ishelp = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
|
captain int32
|
||||||
|
masters []*pb.BattleRole
|
||||||
|
)
|
||||||
for i, v := range req.Mformat {
|
for i, v := range req.Mformat {
|
||||||
if mf, err := this.module.configure.GetMonsterFormat(v); err != nil {
|
if captain, masters, code = this.createMasterRoles(i, v); code != pb.ErrorCode_Success {
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
return
|
||||||
} else {
|
}
|
||||||
record.Buleflist[i] = &pb.DBBattleFormt{
|
record.Buleflist[i] = &pb.DBBattleFormt{
|
||||||
Leadpos: mf.CaptainId,
|
Leadpos: captain,
|
||||||
Team: make([]*pb.BattleRole, len(mf.MonsterList)),
|
Team: masters,
|
||||||
}
|
|
||||||
for i1, v1 := range mf.MonsterList {
|
|
||||||
if v1 == -1 {
|
|
||||||
record.Buleflist[i].Team[i1] = nil
|
|
||||||
} else {
|
|
||||||
if monst, err := this.module.configure.GetMonster(v1); err != nil {
|
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
} else {
|
|
||||||
hero := &pb.DBHero{}
|
|
||||||
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, mf.Lv); hero == nil {
|
|
||||||
log.Error("on found battle req data", log.Field{Key: "HeroId", Value: monst.HeroId})
|
|
||||||
code = pb.ErrorCode_ReqParameterError
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1] = &pb.BattleRole{
|
|
||||||
Tid: int32(200 + i*10 + i1),
|
|
||||||
Oid: hero.Id,
|
|
||||||
HeroID: hero.HeroID,
|
|
||||||
Pos: int32(i1),
|
|
||||||
Star: hero.Star,
|
|
||||||
Lv: hero.Lv,
|
|
||||||
CaptainSkill: hero.CaptainSkill,
|
|
||||||
NormalSkill: hero.NormalSkill,
|
|
||||||
Property: hero.Property,
|
|
||||||
}
|
|
||||||
if monst.Equip4 != 0 {
|
|
||||||
if suit, err := this.module.configure.Getequipsuit(monst.Equip4); err != nil {
|
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1].MainSuitSkill = suit.Skill
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if monst.Equip2 != 0 {
|
|
||||||
if suit, err := this.module.configure.Getequipsuit(monst.Equip2); err != nil {
|
|
||||||
code = pb.ErrorCode_ConfigNoFound
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
record.Buleflist[i].Team[i1].SubSuitSkill = suit.Skill
|
|
||||||
}
|
|
||||||
}
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Hp] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Hp]) * mf.Hppro)
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Atk] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Atk]) * mf.Atkpro)
|
|
||||||
record.Buleflist[i].Team[i1].Property[comm.Def] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Def]) * mf.Defpro)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -341,3 +259,65 @@ func (this *modelBattleComp) createBattleRole(hero *pb.DBHero, tid, pos int) (ro
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//创建怪物阵营
|
||||||
|
func (this *modelBattleComp) createMasterRoles(wheel int, fid int32) (captain int32, roles []*pb.BattleRole, code pb.ErrorCode) {
|
||||||
|
var (
|
||||||
|
result []*cfg.GameMonsterFormatData
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
if result, err = this.module.configure.GetMonsterFormat(fid); err != nil {
|
||||||
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
|
return
|
||||||
|
}
|
||||||
|
roles = make([]*pb.BattleRole, len(result))
|
||||||
|
for i, v := range result {
|
||||||
|
if v != nil {
|
||||||
|
if v.CaptainId == 1 {
|
||||||
|
captain = int32(i)
|
||||||
|
}
|
||||||
|
if monst, err := this.module.configure.GetMonster(v.Monster); err != nil {
|
||||||
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
|
} else {
|
||||||
|
hero := &pb.DBHero{}
|
||||||
|
if hero = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, v.Lv); hero == nil {
|
||||||
|
this.module.Error("on found battle req data", log.Field{Key: "HeroId", Value: monst.HeroId})
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
roles[i] = &pb.BattleRole{
|
||||||
|
Tid: int32(200 + wheel*10 + i),
|
||||||
|
Oid: hero.Id,
|
||||||
|
HeroID: hero.HeroID,
|
||||||
|
Pos: int32(i),
|
||||||
|
Star: hero.Star,
|
||||||
|
Lv: hero.Lv,
|
||||||
|
CaptainSkill: hero.CaptainSkill,
|
||||||
|
NormalSkill: hero.NormalSkill,
|
||||||
|
Property: hero.Property,
|
||||||
|
}
|
||||||
|
if monst.Equip4 != 0 {
|
||||||
|
if suit, err := this.module.configure.Getequipsuit(monst.Equip4); err != nil {
|
||||||
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
roles[i].MainSuitSkill = suit.Skill
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if monst.Equip2 != 0 {
|
||||||
|
if suit, err := this.module.configure.Getequipsuit(monst.Equip2); err != nil {
|
||||||
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
roles[i].SubSuitSkill = suit.Skill
|
||||||
|
}
|
||||||
|
}
|
||||||
|
roles[i].Property[comm.Hp] = int32(float32(roles[i].Property[comm.Hp]) * v.Hppro)
|
||||||
|
roles[i].Property[comm.Atk] = int32(float32(roles[i].Property[comm.Atk]) * v.Atkpro)
|
||||||
|
roles[i].Property[comm.Def] = int32(float32(roles[i].Property[comm.Def]) * v.Defpro)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -72,6 +72,10 @@ func (this *Battle) QueryBattleRecord(oid string) (code pb.ErrorCode, record *pb
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *Battle) CreateMasterRoles(wheel int, fid int32) (captain int32, roles []*pb.BattleRole, code pb.ErrorCode) {
|
||||||
|
return this.modelBattle.createMasterRoles(wheel, fid)
|
||||||
|
}
|
||||||
|
|
||||||
//创建pve战斗
|
//创建pve战斗
|
||||||
func (this *Battle) CreateEveBattle(session comm.IUserSession, req *pb.BattleEVEReq) (code pb.ErrorCode, record *pb.DBBattleRecord) {
|
func (this *Battle) CreateEveBattle(session comm.IUserSession, req *pb.BattleEVEReq) (code pb.ErrorCode, record *pb.DBBattleRecord) {
|
||||||
var (
|
var (
|
||||||
|
@ -9,34 +9,26 @@
|
|||||||
package cfg
|
package cfg
|
||||||
|
|
||||||
type GameMonsterFormat struct {
|
type GameMonsterFormat struct {
|
||||||
_dataMap map[int32]*GameMonsterFormatData
|
|
||||||
_dataList []*GameMonsterFormatData
|
_dataList []*GameMonsterFormatData
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGameMonsterFormat(_buf []map[string]interface{}) (*GameMonsterFormat, error) {
|
func NewGameMonsterFormat(_buf []map[string]interface{}) (*GameMonsterFormat, error) {
|
||||||
_dataList := make([]*GameMonsterFormatData, 0, len(_buf))
|
_dataList := make([]*GameMonsterFormatData, 0, len(_buf))
|
||||||
dataMap := make(map[int32]*GameMonsterFormatData)
|
|
||||||
for _, _ele_ := range _buf {
|
for _, _ele_ := range _buf {
|
||||||
if _v, err2 := DeserializeGameMonsterFormatData(_ele_); err2 != nil {
|
if _v, err2 := DeserializeGameMonsterFormatData(_ele_); err2 != nil {
|
||||||
return nil, err2
|
return nil, err2
|
||||||
} else {
|
} else {
|
||||||
_dataList = append(_dataList, _v)
|
_dataList = append(_dataList, _v)
|
||||||
dataMap[_v.Id] = _v
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &GameMonsterFormat{_dataList:_dataList, _dataMap:dataMap}, nil
|
return &GameMonsterFormat{_dataList:_dataList}, nil
|
||||||
}
|
|
||||||
|
|
||||||
func (table *GameMonsterFormat) GetDataMap() map[int32]*GameMonsterFormatData {
|
|
||||||
return table._dataMap
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *GameMonsterFormat) GetDataList() []*GameMonsterFormatData {
|
func (table *GameMonsterFormat) GetDataList() []*GameMonsterFormatData {
|
||||||
return table._dataList
|
return table._dataList
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *GameMonsterFormat) Get(key int32) *GameMonsterFormatData {
|
func (table *GameMonsterFormat) Get(index int) *GameMonsterFormatData {
|
||||||
return table._dataMap[key]
|
return table._dataList[index]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,12 +12,14 @@ import "errors"
|
|||||||
|
|
||||||
type GameMonsterFormatData struct {
|
type GameMonsterFormatData struct {
|
||||||
Id int32
|
Id int32
|
||||||
|
Pos int32
|
||||||
CaptainId int32
|
CaptainId int32
|
||||||
MonsterList []int32
|
Monster int32
|
||||||
Lv int32
|
Lv int32
|
||||||
Hppro float32
|
Hppro float32
|
||||||
Atkpro float32
|
Atkpro float32
|
||||||
Defpro float32
|
Defpro float32
|
||||||
|
Modelsize float32
|
||||||
}
|
}
|
||||||
|
|
||||||
const TypeId_GameMonsterFormatData = 1141351615
|
const TypeId_GameMonsterFormatData = 1141351615
|
||||||
@ -28,25 +30,14 @@ func (*GameMonsterFormatData) GetTypeId() int32 {
|
|||||||
|
|
||||||
func (_v *GameMonsterFormatData)Deserialize(_buf map[string]interface{}) (err error) {
|
func (_v *GameMonsterFormatData)Deserialize(_buf map[string]interface{}) (err error) {
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id"].(float64); !_ok_ { err = errors.New("Id error"); return }; _v.Id = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id"].(float64); !_ok_ { err = errors.New("Id error"); return }; _v.Id = int32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["pos"].(float64); !_ok_ { err = errors.New("pos error"); return }; _v.Pos = int32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["captainId"].(float64); !_ok_ { err = errors.New("captainId error"); return }; _v.CaptainId = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["captainId"].(float64); !_ok_ { err = errors.New("captainId error"); return }; _v.CaptainId = int32(_tempNum_) }
|
||||||
{
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["monster"].(float64); !_ok_ { err = errors.New("monster error"); return }; _v.Monster = int32(_tempNum_) }
|
||||||
var _arr_ []interface{}
|
|
||||||
var _ok_ bool
|
|
||||||
if _arr_, _ok_ = _buf["monsterList"].([]interface{}); !_ok_ { err = errors.New("monsterList error"); return }
|
|
||||||
|
|
||||||
_v.MonsterList = make([]int32, 0, len(_arr_))
|
|
||||||
|
|
||||||
for _, _e_ := range _arr_ {
|
|
||||||
var _list_v_ int32
|
|
||||||
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
|
|
||||||
_v.MonsterList = append(_v.MonsterList, _list_v_)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["lv"].(float64); !_ok_ { err = errors.New("lv error"); return }; _v.Lv = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["lv"].(float64); !_ok_ { err = errors.New("lv error"); return }; _v.Lv = int32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hppro"].(float64); !_ok_ { err = errors.New("hppro error"); return }; _v.Hppro = float32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hppro"].(float64); !_ok_ { err = errors.New("hppro error"); return }; _v.Hppro = float32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["atkpro"].(float64); !_ok_ { err = errors.New("atkpro error"); return }; _v.Atkpro = float32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["atkpro"].(float64); !_ok_ { err = errors.New("atkpro error"); return }; _v.Atkpro = float32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["defpro"].(float64); !_ok_ { err = errors.New("defpro error"); return }; _v.Defpro = float32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["defpro"].(float64); !_ok_ { err = errors.New("defpro error"); return }; _v.Defpro = float32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["modelsize"].(float64); !_ok_ { err = errors.New("modelsize error"); return }; _v.Modelsize = float32(_tempNum_) }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,10 @@ type GameMonsterData struct {
|
|||||||
Star int32
|
Star int32
|
||||||
Equip2 int32
|
Equip2 int32
|
||||||
Equip4 int32
|
Equip4 int32
|
||||||
|
Skill1 int32
|
||||||
|
Skill2 int32
|
||||||
|
Skill3 int32
|
||||||
|
Speed int32
|
||||||
}
|
}
|
||||||
|
|
||||||
const TypeId_GameMonsterData = 31965864
|
const TypeId_GameMonsterData = 31965864
|
||||||
@ -32,6 +36,10 @@ func (_v *GameMonsterData)Deserialize(_buf map[string]interface{}) (err error) {
|
|||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip2"].(float64); !_ok_ { err = errors.New("equip2 error"); return }; _v.Equip2 = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip2"].(float64); !_ok_ { err = errors.New("equip2 error"); return }; _v.Equip2 = int32(_tempNum_) }
|
||||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip4"].(float64); !_ok_ { err = errors.New("equip4 error"); return }; _v.Equip4 = int32(_tempNum_) }
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip4"].(float64); !_ok_ { err = errors.New("equip4 error"); return }; _v.Equip4 = int32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill1"].(float64); !_ok_ { err = errors.New("skill1 error"); return }; _v.Skill1 = int32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill2"].(float64); !_ok_ { err = errors.New("skill2 error"); return }; _v.Skill2 = int32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill3"].(float64); !_ok_ { err = errors.New("skill3 error"); return }; _v.Skill3 = int32(_tempNum_) }
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["speed"].(float64); !_ok_ { err = errors.New("speed error"); return }; _v.Speed = int32(_tempNum_) }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user