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 }