package gourmet import ( "crypto/rand" "go_dreamfactory/comm" "go_dreamfactory/pb" "math/big" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) SkillLVCheck(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode) { if req.SkillType == 0 { code = pb.ErrorCode_ReqParameterError } return } ///美食城厨师技能升级 func (this *apiComp) SkillLV(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode, dat proto.Message) { var ( bSpecial bool // 是不是特殊技能 ) code = this.SkillLVCheck(session, req) if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 } _gourmet, err := this.module.modelGourmet.getGourmetList(session.GetUserId()) if err != nil { code = pb.ErrorCode_DBError return } skilllv, ok := _gourmet.Skill[req.SkillType] if !ok { // 校验技能存不存在 skilllv, ok = _gourmet.SpecialSkill[req.SkillType] if !ok { code = pb.ErrorCode_ReqParameterError return } bSpecial = true } if this.module.configure.GetGourmetConfigData(req.SkillType, skilllv+1) == nil { // 下一级是否存在 code = pb.ErrorCode_GourmetSkillMaxLv return } _skillCfg := this.module.configure.GetGourmetConfigData(req.SkillType, skilllv) // 获取技能配置 code = this.module.ConsumeRes(session, _skillCfg.SkillConsume, true) // 消耗检测 if code != pb.ErrorCode_Success { return } // 概率升级 n, _ := rand.Int(rand.Reader, big.NewInt(1000)) if n.Int64() < int64(_skillCfg.Probability) { // 可以升级 // 技能升级成功 if bSpecial { // 通用技能升级 _gourmet.SpecialSkill[req.SkillType] += 1 this.module.modelGourmet.CalculationSpecialSkillLv(session.GetUserId(), _gourmet, req.SkillType, _gourmet.SpecialSkill[req.SkillType]) } else { // 某一类型技能升级 _gourmet.Skill[req.SkillType] += 1 this.module.modelGourmet.CalculationGourmetbySkiiLv(session.GetUserId(), _gourmet, req.SkillType, _gourmet.Skill[req.SkillType]) } } session.SendMsg(string(this.module.GetType()), GourmetSkillLvResp, &pb.GourmetSkillLvResp{Data: _gourmet}) return }