上传机器人逻辑代码
This commit is contained in:
parent
f0b8f589be
commit
aa630dba11
@ -1,14 +1,12 @@
|
|||||||
package robot
|
package robot
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/lego/core"
|
"go_dreamfactory/lego/core"
|
||||||
"go_dreamfactory/lego/core/cbase"
|
"go_dreamfactory/lego/core/cbase"
|
||||||
"go_dreamfactory/lego/sys/log"
|
"go_dreamfactory/lego/sys/log"
|
||||||
"go_dreamfactory/sys/configure"
|
"go_dreamfactory/sys/configure"
|
||||||
cfg "go_dreamfactory/sys/configure/structs"
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
"sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -19,6 +17,7 @@ const (
|
|||||||
game_equip = "game_equip.json" //装备信息表
|
game_equip = "game_equip.json" //装备信息表
|
||||||
game_equipintensify = "game_equipintensify.json" //装备等级消耗表
|
game_equipintensify = "game_equipintensify.json" //装备等级消耗表
|
||||||
game_equipenchanting = "game_equipenchanting.json" //装备附魔
|
game_equipenchanting = "game_equipenchanting.json" //装备附魔
|
||||||
|
equip_suit = "game_equipsuit.json" //装备套装表
|
||||||
// gameWorldAll = "game_worldall.json"
|
// gameWorldAll = "game_worldall.json"
|
||||||
// gameburiedCond = "game_buriedcondi.json"
|
// gameburiedCond = "game_buriedcondi.json"
|
||||||
// gamerdtasknpc = "game_rdtasknpc.json"
|
// gamerdtasknpc = "game_rdtasknpc.json"
|
||||||
@ -32,8 +31,6 @@ const (
|
|||||||
type configureComp struct {
|
type configureComp struct {
|
||||||
cbase.ModuleCompBase
|
cbase.ModuleCompBase
|
||||||
module *RobotModule
|
module *RobotModule
|
||||||
hlock sync.RWMutex
|
|
||||||
_mapPagoda map[int32]*cfg.GamePagodaData
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||||
@ -45,7 +42,8 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
|||||||
configure.RegisterConfigure(game_mainstage, cfg.NewGameMainStage, nil)
|
configure.RegisterConfigure(game_mainstage, cfg.NewGameMainStage, nil)
|
||||||
configure.RegisterConfigure(game_equip, cfg.NewGameEquip, nil)
|
configure.RegisterConfigure(game_equip, cfg.NewGameEquip, nil)
|
||||||
configure.RegisterConfigure(game_equipintensify, cfg.NewGameEquipIntensify, nil)
|
configure.RegisterConfigure(game_equipintensify, cfg.NewGameEquipIntensify, nil)
|
||||||
configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, this.LoadPagoda)
|
configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, nil)
|
||||||
|
configure.RegisterConfigure(equip_suit, cfg.NewGameEquipSuit, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,26 +84,3 @@ func (this *configureComp) getGameWorldBattleData(confId int32) (conf *cfg.GameW
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (this *configureComp) LoadPagoda() {
|
|
||||||
if v, err := configure.GetConfigure(game_pagoda); err == nil {
|
|
||||||
if configure, ok := v.(*cfg.GamePagoda); ok {
|
|
||||||
this.hlock.Lock()
|
|
||||||
defer this.hlock.Unlock()
|
|
||||||
this._mapPagoda = make(map[int32]*cfg.GamePagodaData)
|
|
||||||
for _, value := range configure.GetDataList() {
|
|
||||||
key := value.Tab<<16 + value.LayerNum
|
|
||||||
this._mapPagoda[key] = value
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *configureComp) GetPagodaConfBytab(tab int32, ly int32) (data *cfg.GamePagoda, err error) {
|
|
||||||
if _, ok := this._mapPagoda[tab<<16+ly]; ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = comm.NewNotFoundConfErr("pagoda", game_pagoda, fmt.Errorf("tab %d ,ly %d not found", tab, ly))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
@ -31,6 +31,12 @@ func (this *ModuleRobot_Equipment) Receive(robot IRobot, stype string, message p
|
|||||||
this.equipments[v.Id] = v
|
this.equipments[v.Id] = v
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
case "upgrade":
|
||||||
|
resp := message.(*pb.EquipmentUpgradeResp)
|
||||||
|
for _, v := range resp.Equipment {
|
||||||
|
this.equipments[v.Id] = v
|
||||||
|
}
|
||||||
|
return
|
||||||
case "change":
|
case "change":
|
||||||
resp := message.(*pb.EquipmentChangePush)
|
resp := message.(*pb.EquipmentChangePush)
|
||||||
for _, v := range resp.Equipments {
|
for _, v := range resp.Equipments {
|
||||||
@ -117,6 +123,27 @@ func (this *ModuleRobot_Equipment) DoTask(robot IRobot, taskconf *cfg.GameWorldT
|
|||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("no fund can use equipments")
|
err = fmt.Errorf("no fund can use equipments")
|
||||||
}
|
}
|
||||||
|
case comm.Rtype169: //穿戴套装
|
||||||
|
var (
|
||||||
|
heromodule *ModuleRobot_Hero
|
||||||
|
hero string
|
||||||
|
equipments []string
|
||||||
|
)
|
||||||
|
heromodule = robot.GetModule(comm.ModuleHero).(*ModuleRobot_Hero)
|
||||||
|
hero = heromodule.getbattlehero()[0]
|
||||||
|
|
||||||
|
if equipments, err = this.findsuitEquipment(condconf.Filter[0]); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "equipment", "equip", &pb.EquipmentEquipReq{
|
||||||
|
HeroCardId: hero,
|
||||||
|
EquipmentId: equipments,
|
||||||
|
}); errdata != nil {
|
||||||
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
case comm.Rtype43, comm.Rtype92, comm.Rtype96: //强化
|
case comm.Rtype43, comm.Rtype92, comm.Rtype96: //强化
|
||||||
var (
|
var (
|
||||||
equipment *pb.DB_Equipment
|
equipment *pb.DB_Equipment
|
||||||
@ -200,6 +227,27 @@ func (this *ModuleRobot_Equipment) DoTask(robot IRobot, taskconf *cfg.GameWorldT
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//查询套装装备
|
||||||
|
func (this *ModuleRobot_Equipment) findsuitEquipment(sid int32) (equipments []string, err error) {
|
||||||
|
var (
|
||||||
|
econf *cfg.GameEquipData
|
||||||
|
)
|
||||||
|
equipments = make([]string, 8)
|
||||||
|
for _, equipment := range this.equipments {
|
||||||
|
if equipment.HeroId != "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if econf, err = this.getGameEquipData(equipment.CId); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if econf.Suittype == sid {
|
||||||
|
equipments[econf.Pos] = equipment.Id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//查询能穿戴的装备
|
//查询能穿戴的装备
|
||||||
func (this *ModuleRobot_Equipment) findcanEquipEquipment(hero *pb.DBHero, minstar int32) (equipments []string, change bool, err error) {
|
func (this *ModuleRobot_Equipment) findcanEquipEquipment(hero *pb.DBHero, minstar int32) (equipments []string, change bool, err error) {
|
||||||
var (
|
var (
|
||||||
@ -325,3 +373,20 @@ func (this *ModuleRobot_Equipment) getEquipenchantings() (confs []*cfg.GameEquip
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取装备套装配置
|
||||||
|
func (this *ModuleRobot_Equipment) getGameEquipSuitData(sid int32) (conf *cfg.GameEquipSuitData, err error) {
|
||||||
|
var (
|
||||||
|
v interface{}
|
||||||
|
ok bool
|
||||||
|
)
|
||||||
|
if v, err = configure.GetConfigure(equip_suit); err != nil {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
if conf, ok = v.(*cfg.GameEquipSuit).GetDataMap()[sid]; !ok {
|
||||||
|
err = comm.NewNotFoundConfErr("robot", equip_suit, sid)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -14,11 +14,23 @@ import (
|
|||||||
//爬塔模块 机器人
|
//爬塔模块 机器人
|
||||||
type ModuleRobot_Pagoda struct {
|
type ModuleRobot_Pagoda struct {
|
||||||
pagoda *pb.DBPagoda
|
pagoda *pb.DBPagoda
|
||||||
c *configureComp
|
_mapPagoda map[int32]*cfg.GamePagodaData
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *ModuleRobot_Pagoda) Init() (err error) {
|
func (this *ModuleRobot_Pagoda) Init() (err error) {
|
||||||
this.c = new(configureComp)
|
var (
|
||||||
|
v interface{}
|
||||||
|
)
|
||||||
|
if v, err = configure.GetConfigure(game_pagoda); err == nil {
|
||||||
|
if configure, ok := v.(*cfg.GamePagoda); ok {
|
||||||
|
this._mapPagoda = make(map[int32]*cfg.GamePagodaData)
|
||||||
|
for _, value := range configure.GetDataList() {
|
||||||
|
key := value.Tab<<16 + value.LayerNum
|
||||||
|
this._mapPagoda[key] = value
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ locp:
|
|||||||
module = comm.ModulePractice
|
module = comm.ModulePractice
|
||||||
case comm.Rtype61:
|
case comm.Rtype61:
|
||||||
module = comm.ModuleMainline
|
module = comm.ModuleMainline
|
||||||
case comm.Rtype5, comm.Rtype41, comm.Rtype43, comm.Rtype92, comm.Rtype94, comm.Rtype95, comm.Rtype96:
|
case comm.Rtype5, comm.Rtype41, comm.Rtype43, comm.Rtype92, comm.Rtype94, comm.Rtype95, comm.Rtype96, comm.Rtype169:
|
||||||
module = comm.ModuleEquipment
|
module = comm.ModuleEquipment
|
||||||
case comm.Rtype128, comm.Rtype129, comm.Rtype131:
|
case comm.Rtype128, comm.Rtype129, comm.Rtype131:
|
||||||
module = comm.ModuleArena
|
module = comm.ModuleArena
|
||||||
|
@ -170,7 +170,12 @@ func (this *Robot) SendTaskMessage(task, comdi int32, mtype, stype string, msg p
|
|||||||
messageresp = <-this.await //等待回应
|
messageresp = <-this.await //等待回应
|
||||||
resp = messageresp.resp
|
resp = messageresp.resp
|
||||||
errdata = messageresp.errdata
|
errdata = messageresp.errdata
|
||||||
|
if errdata == nil {
|
||||||
log.Debug("[机器人 Message]", log.Field{Key: "t", Value: time.Since(stime).Milliseconds()}, log.Field{Key: "Account", Value: this.account}, log.Field{Key: "Task", Value: fmt.Sprintf("[%d-%d]", task, comdi)}, log.Field{Key: "message", Value: fmt.Sprintf("%s.%s", mtype, stype)}, log.Field{Key: "errdata", Value: errdata == nil})
|
log.Debug("[机器人 Message]", log.Field{Key: "t", Value: time.Since(stime).Milliseconds()}, log.Field{Key: "Account", Value: this.account}, log.Field{Key: "Task", Value: fmt.Sprintf("[%d-%d]", task, comdi)}, log.Field{Key: "message", Value: fmt.Sprintf("%s.%s", mtype, stype)}, log.Field{Key: "errdata", Value: errdata == nil})
|
||||||
|
} else {
|
||||||
|
log.Error("[机器人 Message]", log.Field{Key: "t", Value: time.Since(stime).Milliseconds()}, log.Field{Key: "Account", Value: this.account}, log.Field{Key: "Task", Value: fmt.Sprintf("[%d-%d]", task, comdi)}, log.Field{Key: "message", Value: fmt.Sprintf("%s.%s", mtype, stype)}, log.Field{Key: "errdata", Value: errdata.String()})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user