92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
package hero
|
|
|
|
import (
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/pb"
|
|
)
|
|
|
|
//参数校验
|
|
func (this *Api_Comp) StrengthenUplv_Check(session comm.IUserSession, req *pb.Hero_StrengthenUplv_Req) (result map[string]interface{}, code comm.ErrorCode) {
|
|
if req.HeroObjID == "" {
|
|
code.Code = pb.ErrorCode_ReqParameterError
|
|
return
|
|
}
|
|
_hero, err := this.module.model_hero.moduleHero.GetHeroInfoByObjID(req.HeroObjID) // 校验升级的对象是否存在
|
|
if err != 0 {
|
|
code.Code = pb.ErrorCode_HeroNoExist
|
|
return
|
|
}
|
|
_expHero, err := this.module.model_hero.moduleHero.GetHeroInfoByObjID(req.ExpCardID) // 校验需要消耗经验卡牌的对象是否存在
|
|
if err != 0 {
|
|
code.Code = pb.ErrorCode_HeroNoExist
|
|
return
|
|
}
|
|
if req.Amount <= 0 { // 消耗数量校验
|
|
code.Code = pb.ErrorCode_HeroNoExist
|
|
return
|
|
}
|
|
curLv := _hero.Lv
|
|
curExp := _hero.Exp // 当前英雄的经验
|
|
var costGold int32 // 当前需要消耗金币的数量
|
|
var addExp int32 // 需要增加的经验
|
|
// 查询 本次消耗会获得多少经验
|
|
expConf := this.module.configure_comp.GetHeroExp(_expHero.HeroID)
|
|
if expConf != nil {
|
|
addExp = expConf.Heroexp * req.Amount
|
|
}
|
|
if _expHero.Count <= req.Amount { // 消耗经验卡片数量不足
|
|
code.Code = pb.ErrorCode_HeroNoEnough
|
|
return
|
|
}
|
|
// 校验当前能不能升级
|
|
|
|
if _hero.Lv >= _hero.Star*comm.HeroStarLvRatio { // 达到最大等级
|
|
code.Code = pb.ErrorCode_HeroMaxLv
|
|
return
|
|
}
|
|
if _data := this.module.configure_comp.GetHeroLv(curLv); _data != nil {
|
|
costGold += _data.Gold[0].N
|
|
curExp += addExp // 先把经验加上
|
|
// 当前升级需要消耗的经验
|
|
for { // 死循环判断一键升级
|
|
if _data.Heroexp[0].N <= curExp { // 升级操作
|
|
curExp = _data.Heroexp[0].N
|
|
if curExp >= 0 { // 大于下一级经验
|
|
curLv += 1 // 经验够了 那么等级+1
|
|
if _data := this.module.configure_comp.GetHeroLv(curLv); _data != nil {
|
|
if _data.Heroexp[0].N > curExp { // 经验不足则 直接返回
|
|
break
|
|
}
|
|
costGold += _data.Gold[0].N
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// 校验金币消耗
|
|
result = map[string]interface{}{
|
|
"costGold": costGold,
|
|
"curExp": curExp,
|
|
"curLv": curLv,
|
|
}
|
|
return
|
|
}
|
|
|
|
/// 英雄升级
|
|
func (this *Api_Comp) StrengthenUplv(session comm.IUserSession, agrs map[string]interface{}, req *pb.Hero_StrengthenUplv_Req) (code pb.ErrorCode) {
|
|
|
|
defer func() {
|
|
if code == pb.ErrorCode_Success {
|
|
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.Hero_StrengthenUplv_Resp{})
|
|
}
|
|
}()
|
|
|
|
return
|
|
}
|