package capturesheep import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/mgo" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson/primitive" ) //参数校验 func (this *apiComp) MatcheCheck(session comm.IUserSession, req *pb.CapturesheepMatcheReq) (errdata *pb.ErrorData) { return } ///匹配 func (this *apiComp) Matche(session comm.IUserSession, req *pb.CapturesheepMatcheReq) (errdata *pb.ErrorData) { var ( info *pb.DBCaptureSheep dragon *pb.DBDragon players []*pb.CaptureSheepRaceMember ais []*pb.CaptureSheepRaceMember err error ) if errdata = this.MatcheCheck(session, req); errdata != nil { return } if req.Rtype == pb.CaptureSheepRaceType_ranked { if !this.module.configure.isopen() { errdata = &pb.ErrorData{ Code: pb.ErrorCode_CapturesheepRankCloseed, Title: pb.ErrorCode_CapturesheepRankCloseed.ToString(), Message: "currTime is rank close", } return } } if info, err = this.module.modelCaptureSheep.queryInfo(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if info.Defmts == "" { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: "no dragon!", } return } if dragon, err = this.module.dragon.QueryDragonById(info.Uid, info.Defmts); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } players = append(players, &pb.CaptureSheepRaceMember{ Uid: info.Uid, Name: info.Name, Sex: info.Sex, Skin: info.Skin, Mount: dragon.Dragonid, Mlv: dragon.Lv, Maxhp: dragon.Property[comm.Dhp], Currhp: dragon.Property[comm.Dhp], Isai: false, }) // if players, err = this.module.modelCaptureSheep.matchePlayer(info.Uid, info.Dan, 6); err != nil && err != mgo.MongodbNil { // errdata = &pb.ErrorData{ // Code: pb.ErrorCode_DBError, // Title: pb.ErrorCode_DBError.ToString(), // Message: err.Error(), // } // return // } if len(players) < 6 { num := 6 - len(players) if ais, err = this.module.modelCaptureSheep.matcheAI(info.Dan, int32(num)); err != nil && err != mgo.MongodbNil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } players = append(players, ais...) } session.SendMsg(string(this.module.GetType()), "matche", &pb.CapturesheepMatcheResp{ Race: &pb.DBCaptureSheepRace{ Id: primitive.NewObjectID().Hex(), Rtype: req.Rtype, Trackid: req.Trackid, Redmember: players[0:3], Bulemember: players[3:], }, }) return }