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(fmt.Sprintf("code:%d message:%s", errdata.Code, 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(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message)) return } return }