94 lines
2.4 KiB
Go
94 lines
2.4 KiB
Go
package robot
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
"google.golang.org/protobuf/reflect/protoreflect"
|
|
)
|
|
|
|
//用户模块 机器人
|
|
type ModuleRobot_Friend struct {
|
|
friend *pb.DBFriend
|
|
applylist []*pb.FriendBase
|
|
}
|
|
|
|
func (this *ModuleRobot_Friend) Init() (err error) {
|
|
|
|
return
|
|
}
|
|
|
|
//接收到消息
|
|
func (this *ModuleRobot_Friend) Receive(robot IRobot, stype string, message proto.Message) (err error) {
|
|
switch stype {
|
|
case "list":
|
|
resp := message.(*pb.FriendListResp)
|
|
this.friend = resp.Friend
|
|
break
|
|
case "applylist":
|
|
resp := message.(*pb.FriendApplyListResp)
|
|
this.applylist = resp.List
|
|
break
|
|
}
|
|
return
|
|
}
|
|
func (this *ModuleRobot_Friend) OncePipeline(robot IRobot) (err error) {
|
|
var (
|
|
errdata *pb.ErrorData
|
|
)
|
|
if _, errdata = robot.SendMessage("friend", "list", &pb.FriendListReq{}); errdata != nil {
|
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
//机器人执行流
|
|
func (this *ModuleRobot_Friend) DoPipeline(robot IRobot) (err error) {
|
|
var (
|
|
resp protoreflect.ProtoMessage
|
|
errdata *pb.ErrorData
|
|
)
|
|
if _, errdata = robot.SendMessage("friend", "applylist", &pb.FriendApplyListReq{}); errdata != nil {
|
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
|
return
|
|
}
|
|
if this.applylist != nil && len(this.applylist) > 0 {
|
|
friendIds := make([]string, 0)
|
|
for _, v := range this.applylist {
|
|
friendIds = append(friendIds, v.UserId)
|
|
}
|
|
if _, errdata = robot.SendMessage("friend", "agree", &pb.FriendAgreeReq{
|
|
FriendIds: friendIds,
|
|
}); errdata != nil {
|
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
|
return
|
|
}
|
|
} else {
|
|
if resp, errdata = robot.SendMessage("friend", "randlist", &pb.FriendRandlistReq{}); errdata != nil {
|
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
|
return
|
|
}
|
|
for _, v := range resp.(*pb.FriendRandlistResp).List {
|
|
if _, errdata = robot.SendMessage("friend", "apply", &pb.FriendApplyReq{
|
|
FriendId: v.UserId,
|
|
}); errdata != nil {
|
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
|
return
|
|
}
|
|
break
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
//做任务
|
|
func (this *ModuleRobot_Friend) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
|
|
|
|
return
|
|
}
|