package action import ( "fmt" "github.com/golang/protobuf/proto" "pro2d/common" "pro2d/common/components" "pro2d/common/db/redisproxy" "pro2d/common/logger" "pro2d/models" "pro2d/pb" ) func HeartRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) { //msg.Conn.SetLastHeartCheckTime() return 0, nil } func getRandomName() string { name := "" for { name = common.RandomName(common.DefaultName) if name == "" { continue } relay, err := redisproxy.SETNX(fmt.Sprintf(common.NickNames, name), "1") if err != nil { continue } if relay.(int64) == 1 { break } } return name } func CreateRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) { req := pb.CreateReq{} if err := proto.Unmarshal(msg.GetData(), &req); err != nil { logger.Error("CreateRpc err: %v", err) return 1, err } role := models.RoleExistByUid(req.Token) if role != nil { return 2, "role exists" } roleId, err := common.GetNextRoleId() if err != nil { return 3, err } role = models.NewRole(roleId) role.Role.Uid = req.Token role.Role.Nick = getRandomName() if err := role.Create(); err != nil { logger.Error("CreateRpc role create err: %v", err) return 3, nil } role.InitRole() return 0, nil } func LoginRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) { //logger.Debug("11111111cmd: %v, msg: %s", msg.GetHeader().GetMsgID(), msg.GetData()) req := pb.LoginReq{} if err := proto.Unmarshal(msg.GetData(), &req); err != nil { logger.Error("loginRpc err: %v", err) return 1, nil } role := models.RoleExistByUid(req.Token) if role == nil { return 2, nil } role.SetProperty("Device", req.Device) protoMsg := &pb.RoleRsp{ Role: role.Role, Hero: role.GetAllHero(), Team: role.GetAllTeam(), } //登录成功,存储agent role agent.SetSchema(role) return 0, protoMsg } func GoIntoBattleRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) { req := pb.GoIntoBattleReq{} if err := proto.Unmarshal(msg.GetData(), &req); err != nil { logger.Error("loginRpc err: %v", err) return 1, nil } role := agent.GetSchema().(*models.RoleModel) if role == nil { return 2, nil } role.UpdateTeam(req.Team) return 0, nil }