go_dreamfactory/modules/gourmet/api_foodskilllv.go
2022-09-01 18:55:02 +08:00

71 lines
2.1 KiB
Go

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
}