124 lines
2.9 KiB
Go
124 lines
2.9 KiB
Go
package robot
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
//用户模块 机器人
|
|
type ModuleRobot_Practice struct {
|
|
Info *pb.DBPracticeRoom
|
|
}
|
|
|
|
func (this *ModuleRobot_Practice) Init() (err error) {
|
|
return
|
|
}
|
|
|
|
//接收到消息
|
|
func (this *ModuleRobot_Practice) Receive(robot IRobot, stype string, message proto.Message) (err error) {
|
|
switch stype {
|
|
case "info":
|
|
resp := message.(*pb.PracticeInfoResp)
|
|
this.Info = resp.Info
|
|
break
|
|
}
|
|
return
|
|
}
|
|
|
|
//机器人执行流
|
|
func (this *ModuleRobot_Practice) DoPipeline(robot IRobot) (err error) {
|
|
|
|
return
|
|
}
|
|
|
|
//做任务
|
|
func (this *ModuleRobot_Practice) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
|
|
var (
|
|
errdata *pb.ErrorData
|
|
)
|
|
if _, errdata = robot.SendMessage("practice", "info", &pb.PracticeInfoReq{}); errdata != nil {
|
|
err = errors.New(errdata.Message)
|
|
return
|
|
}
|
|
switch comm.TaskType(condconf.Type) {
|
|
case comm.Rtype149:
|
|
for i := 1; i < 4; i++ {
|
|
if err = this.practice(taskconf.Key, condconf.Id, robot, int32(i)); err == nil {
|
|
break
|
|
}
|
|
}
|
|
case comm.Rtype152:
|
|
for i := 1; i <= int(condconf.Value); i++ {
|
|
if err = this.unlock(taskconf.Key, condconf.Id, robot, int32(i)); err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//练功
|
|
func (this *ModuleRobot_Practice) unlock(tid, cid int32, robot IRobot, index int32) (err error) {
|
|
var (
|
|
sysmodule *ModuleRobot_Sys
|
|
)
|
|
sysmodule = robot.GetModule(comm.ModuleSys).(*ModuleRobot_Sys)
|
|
switch index {
|
|
case 1:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar1")
|
|
break
|
|
case 2:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar2")
|
|
break
|
|
case 3:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar3")
|
|
break
|
|
default:
|
|
err = fmt.Errorf("no found pillar:%d", index)
|
|
}
|
|
return
|
|
}
|
|
|
|
//练功
|
|
func (this *ModuleRobot_Practice) practice(tid, cid int32, robot IRobot, index int32) (err error) {
|
|
var (
|
|
errdata *pb.ErrorData
|
|
sysmodule *ModuleRobot_Sys
|
|
heromodule *ModuleRobot_Hero
|
|
hero string
|
|
)
|
|
sysmodule = robot.GetModule(comm.ModuleSys).(*ModuleRobot_Sys)
|
|
switch index {
|
|
case 1:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar1")
|
|
break
|
|
case 2:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar2")
|
|
break
|
|
case 3:
|
|
err = sysmodule.funcactivate(tid, cid, robot, "practice_ pillar3")
|
|
break
|
|
default:
|
|
err = fmt.Errorf("no found pillar:%d", index)
|
|
}
|
|
if err != nil {
|
|
return
|
|
}
|
|
heromodule = robot.GetModule(comm.ModuleHero).(*ModuleRobot_Hero)
|
|
hero = heromodule.getpracticehero()
|
|
if hero == "" {
|
|
err = fmt.Errorf("no found can practice hero")
|
|
return
|
|
}
|
|
if _, errdata = robot.SendTaskMessage(tid, cid, "practice", "practice", &pb.PracticePracticeReq{Index: index, Hero: hero}); errdata != nil {
|
|
err = errors.New(errdata.Message)
|
|
return
|
|
}
|
|
return
|
|
}
|