go_dreamfactory/modules/robot/modulerobot_pagoda.go
2023-08-24 15:23:20 +08:00

100 lines
2.3 KiB
Go

package robot
import (
"errors"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
)
//爬塔模块 机器人
type ModuleRobot_Pagoda struct {
pagoda *pb.DBPagoda
}
func (this *ModuleRobot_Pagoda) Init() (err error) {
return
}
//接收到消息
func (this *ModuleRobot_Pagoda) Receive(robot IRobot, stype string, message proto.Message) (err error) {
switch stype {
case "challengeover":
//resp := message.(*pb.PagodaChallengeOverResp)
break
case "getlist":
resp := message.(*pb.PagodaGetListResp)
this.pagoda = resp.Data
break
}
return
}
//机器人执行流
func (this *ModuleRobot_Pagoda) DoPipeline(robot IRobot) (err error) {
var (
errdata *pb.ErrorData
)
// 获取爬塔信息
if _, errdata = robot.SendMessage("pagoda", "getlist", &pb.PagodaGetListReq{}); errdata != nil {
err = errors.New(errdata.Message)
return
}
//创角
if _, errdata = robot.SendMessage("pagoda", "challengeover", &pb.PagodaChallengeOverReq{
Cid: 1,
Report: &pb.BattleReport{},
}); errdata != nil {
if errdata.Code == pb.ErrorCode_RoleCreated { //已创角
err = nil
} else {
err = errors.New(errdata.Message)
}
return
}
return
}
//做任务
func (this *ModuleRobot_Pagoda) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
var (
errdata *pb.ErrorData
conf *cfg.GamePagodaData
)
switch comm.TaskType(condconf.Type) {
case comm.Rtype168: //完成功夫大师挑战塔第X层
var (
heromodule *ModuleRobot_Hero
heros []string
resp proto.Message
)
heromodule = robot.GetModule(comm.ModuleHero).(*ModuleRobot_Hero)
heros = heromodule.getbattlehero()
if resp, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "pagoda", "challenge", &pb.PagodaChallengeReq{
Cid: conf.Key,
Battle: &pb.BattleFormation{
Format: heros,
}}); errdata != nil {
err = errors.New(errdata.Message)
return
}
if _, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "pagoda", "challengeover", &pb.PagodaChallengeOverReq{
Cid: conf.Key,
Report: &pb.BattleReport{
Info: resp.(*pb.PagodaChallengeResp).Info,
WinSide: 1,
}}); errdata != nil {
err = errors.New(errdata.Message)
return
}
break
}
return
}