Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
5a9a34816f
@ -102,11 +102,11 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m
|
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
||||||
session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero})
|
||||||
return
|
return
|
||||||
|
@ -114,22 +114,17 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
|
|||||||
// 返还对应初始星级的卡
|
// 返还对应初始星级的卡
|
||||||
for _, v := range resonConfig.Prize {
|
for _, v := range resonConfig.Prize {
|
||||||
if v.A == "hero" {
|
if v.A == "hero" {
|
||||||
// value, err := strconv.Atoi(v.T)
|
|
||||||
// if err != nil {
|
|
||||||
// code = pb.ErrorCode_ConfigurationException
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
|
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
|
||||||
this.module.modelHero.createOneHero(session.GetUserId(), v.T)
|
this.module.modelHero.createOneHero(session.GetUserId(), v.T)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m
|
|
||||||
changeHero = append(changeHero, _hero)
|
changeHero = append(changeHero, _hero)
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: changeHero})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: changeHero})
|
||||||
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
|
||||||
|
@ -81,11 +81,10 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson
|
|||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m
|
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
||||||
session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
|
session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
|
||||||
return
|
return
|
||||||
|
@ -67,11 +67,10 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, req *pb.HeroR
|
|||||||
}
|
}
|
||||||
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero, property)
|
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero, property)
|
||||||
|
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m
|
|
||||||
session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -131,11 +131,10 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_costHero}})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_costHero}})
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m
|
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
|
||||||
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
|
||||||
return
|
return
|
||||||
|
@ -153,11 +153,19 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
|
|||||||
this.module.Errorf("del hero err card:%s,count = %d", k, v)
|
this.module.Errorf("del hero err card:%s,count = %d", k, v)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
chanegCard = append(chanegCard, CostHeroObj[k])
|
|
||||||
|
}
|
||||||
|
if _hero.SameCount > 1 { //有堆叠的情况
|
||||||
|
// 克隆一个新的
|
||||||
|
_hero.SameCount -= 1
|
||||||
|
newHero := this.module.modelHero.CloneNewHero(_hero)
|
||||||
|
chanegCard = append(chanegCard, newHero)
|
||||||
}
|
}
|
||||||
_hero.Star += 1
|
_hero.Star += 1
|
||||||
|
_hero.SameCount = 1
|
||||||
_heroMap := map[string]interface{}{
|
_heroMap := map[string]interface{}{
|
||||||
"star": _hero.Star,
|
"star": _hero.Star,
|
||||||
|
"sameCount": 1,
|
||||||
"isOverlying": false,
|
"isOverlying": false,
|
||||||
}
|
}
|
||||||
// 触发星级任务
|
// 触发星级任务
|
||||||
@ -168,12 +176,11 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
|
|||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
this.module.Errorf("update hero skill failed:%v", err1)
|
this.module.Errorf("update hero skill failed:%v", err1)
|
||||||
}
|
}
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
code = pb.ErrorCode_Unknown
|
code = pb.ErrorCode_Unknown
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
_hero.Property = m // 更新属性变化
|
|
||||||
chanegCard = append(chanegCard, _hero)
|
chanegCard = append(chanegCard, _hero)
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
|
||||||
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
|
||||||
|
@ -150,7 +150,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
|
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
|
||||||
|
|
||||||
// 执行升级逻辑
|
// 执行升级逻辑
|
||||||
newhero, code := this.module.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
|
newhero, code := this.module.modelHero.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
|
||||||
if code != pb.ErrorCode_Success {
|
if code != pb.ErrorCode_Success {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -167,7 +167,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 删除经验卡
|
// 删除经验卡
|
||||||
|
|
||||||
for k, v := range _mapCost {
|
for k, v := range _mapCost {
|
||||||
err1 := this.module.modelHero.consumeHeroCard(session.GetUserId(), _costExpHero[k], v)
|
err1 := this.module.modelHero.consumeHeroCard(session.GetUserId(), _costExpHero[k], v)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
@ -178,12 +177,11 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
_changeHero = append(_changeHero, _costExpHero[k])
|
_changeHero = append(_changeHero, _costExpHero[k])
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
|
err1 := this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
this.module.Errorf("PushHeroProperty err!")
|
this.module.Errorf("ChangeHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
|
||||||
_hero.Property = m
|
|
||||||
_changeHero = append(_changeHero, _hero) // 升级后的英雄 hero id 不变
|
_changeHero = append(_changeHero, _hero) // 升级后的英雄 hero id 不变
|
||||||
if newhero != nil {
|
if newhero != nil {
|
||||||
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了
|
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了
|
||||||
|
@ -55,7 +55,7 @@ func (this *ModelHero) initHero(uid string, heroCfgId string) *pb.DBHero {
|
|||||||
Energy: make(map[int32]int32),
|
Energy: make(map[int32]int32),
|
||||||
Property: make(map[string]int32),
|
Property: make(map[string]int32),
|
||||||
}
|
}
|
||||||
newHero.Property = this.PropertyCompute(uid, newHero)
|
this.PropertyCompute(uid, newHero)
|
||||||
this.initHeroSkill(newHero)
|
this.initHeroSkill(newHero)
|
||||||
return newHero
|
return newHero
|
||||||
}
|
}
|
||||||
@ -102,6 +102,7 @@ func (this *ModelHero) CloneNewHero(hero *pb.DBHero) (newHero *pb.DBHero) {
|
|||||||
temp := *hero
|
temp := *hero
|
||||||
newHero = &temp
|
newHero = &temp
|
||||||
newHero.Id = primitive.NewObjectID().Hex()
|
newHero.Id = primitive.NewObjectID().Hex()
|
||||||
|
this.AddList(newHero.Uid, newHero.Id, newHero)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +218,7 @@ func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
|
|||||||
return hero
|
return hero
|
||||||
}
|
}
|
||||||
|
|
||||||
//消耗英雄卡 (只需要传heroid即可)
|
//消耗英雄卡
|
||||||
func (this *ModelHero) consumeHeroCard(uid string, hero *pb.DBHero, count int32) (err error) {
|
func (this *ModelHero) consumeHeroCard(uid string, hero *pb.DBHero, count int32) (err error) {
|
||||||
if count == 0 {
|
if count == 0 {
|
||||||
return
|
return
|
||||||
@ -308,18 +309,16 @@ func (this *ModelHero) setEquipment(hero *pb.DBHero) (newHero *pb.DBHero, err er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
//创建新卡
|
//创建新卡
|
||||||
newHero = this.CloneNewHero(hero)
|
|
||||||
// newHero, err = this.createOneHero(hero.Uid, hero.HeroID)
|
|
||||||
// if err != nil {
|
|
||||||
// this.moduleHero.Errorf("%v", err)
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
update1 := make(map[string]interface{})
|
|
||||||
|
|
||||||
update1["sameCount"] = curSameCount
|
newHero = this.CloneNewHero(hero)
|
||||||
update1["isoverlying"] = true
|
newHero.EquipID = make([]string, 6)
|
||||||
newHero.IsOverlying = true
|
newHero.IsOverlying = true
|
||||||
newHero.SameCount = curSameCount
|
newHero.SameCount = curSameCount
|
||||||
|
update1 := make(map[string]interface{})
|
||||||
|
update["equipID"] = newHero.EquipID
|
||||||
|
update1["sameCount"] = curSameCount
|
||||||
|
update1["isoverlying"] = true
|
||||||
|
|
||||||
this.ChangeList(newHero.Uid, newHero.Id, update1)
|
this.ChangeList(newHero.Uid, newHero.Id, update1)
|
||||||
} else {
|
} else {
|
||||||
update["equipID"] = hero.EquipID
|
update["equipID"] = hero.EquipID
|
||||||
@ -349,10 +348,6 @@ func (this *ModelHero) mergeMainProperty(uid string, hero *pb.DBHero, data map[s
|
|||||||
|
|
||||||
//合并附加属性
|
//合并附加属性
|
||||||
func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[string]int32) {
|
func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[string]int32) {
|
||||||
//hero := this.getOneHero(uid, heroId)
|
|
||||||
if hero == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
hero.AddProperty = data
|
hero.AddProperty = data
|
||||||
|
|
||||||
if err := this.ChangeList(uid, hero.Id, map[string]interface{}{
|
if err := this.ChangeList(uid, hero.Id, map[string]interface{}{
|
||||||
@ -364,36 +359,36 @@ func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[st
|
|||||||
|
|
||||||
//属性计算 - 暂时放在modelHero里实现
|
//属性计算 - 暂时放在modelHero里实现
|
||||||
//英雄基础属性 + 英雄等级基础属性 * 英雄成长系数 + 英雄星级对应等级属性 * 英雄品质系数
|
//英雄基础属性 + 英雄等级基础属性 * 英雄成长系数 + 英雄星级对应等级属性 * 英雄品质系数
|
||||||
func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]int32 {
|
func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) {
|
||||||
|
|
||||||
//英雄等级基础属性levelup
|
//英雄等级基础属性levelup
|
||||||
heroLvCfg := this.moduleHero.configure.GetHeroLv(hero.Lv)
|
heroLvCfg := this.moduleHero.configure.GetHeroLv(hero.Lv)
|
||||||
if heroLvCfg == nil {
|
if heroLvCfg == nil {
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//英雄基础配置 newhero
|
//英雄基础配置 newhero
|
||||||
heroCfg := this.moduleHero.configure.GetHero(hero.HeroID)
|
heroCfg := this.moduleHero.configure.GetHero(hero.HeroID)
|
||||||
if heroCfg == nil {
|
if heroCfg == nil {
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//品质系数
|
//品质系数
|
||||||
stargrowCfg := this.moduleHero.configure.GetHeroStar(heroCfg.Star)
|
stargrowCfg := this.moduleHero.configure.GetHeroStar(heroCfg.Star)
|
||||||
if stargrowCfg == nil {
|
if stargrowCfg == nil {
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//英雄星级对应等级属性
|
//英雄星级对应等级属性
|
||||||
heroStarCfg := this.moduleHero.configure.GetHeroLv(stargrowCfg.Level)
|
heroStarCfg := this.moduleHero.configure.GetHeroLv(stargrowCfg.Level)
|
||||||
if heroStarCfg == nil {
|
if heroStarCfg == nil {
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//成长系数
|
//成长系数
|
||||||
lvGrow := this.moduleHero.configure.GetHeroLvgrow(hero.HeroID)
|
lvGrow := this.moduleHero.configure.GetHeroLvgrow(hero.HeroID)
|
||||||
if lvGrow == nil {
|
if lvGrow == nil {
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
curHp := hero.Property[comm.Hp]
|
curHp := hero.Property[comm.Hp]
|
||||||
@ -411,7 +406,7 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
|
|||||||
(curDef + lvGrow.Def), heroLvCfg.Def, lvGrow.Defgrow, heroStarCfg.Def, stargrowCfg.StarupDef)
|
(curDef + lvGrow.Def), heroLvCfg.Def, lvGrow.Defgrow, heroStarCfg.Def, stargrowCfg.StarupDef)
|
||||||
def, _ := mengine.ParseAndExec(exprDef)
|
def, _ := mengine.ParseAndExec(exprDef)
|
||||||
|
|
||||||
return map[string]int32{
|
hero.Property = map[string]int32{
|
||||||
comm.Hp: int32(math.Floor(hp)),
|
comm.Hp: int32(math.Floor(hp)),
|
||||||
comm.Atk: int32(math.Floor(atk)),
|
comm.Atk: int32(math.Floor(atk)),
|
||||||
comm.Def: int32(math.Floor(def)),
|
comm.Def: int32(math.Floor(def)),
|
||||||
@ -419,18 +414,18 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
|
|||||||
}
|
}
|
||||||
|
|
||||||
//重新计算英雄属性
|
//重新计算英雄属性
|
||||||
func (this *ModelHero) PushHeroProperty(session comm.IUserSession, hero *pb.DBHero) (m map[string]int32, err error) {
|
func (this *ModelHero) ChangeHeroProperty(session comm.IUserSession, hero *pb.DBHero) (err error) {
|
||||||
m = this.PropertyCompute(session.GetUserId(), hero)
|
this.PropertyCompute(session.GetUserId(), hero) //重新计算 property 的值
|
||||||
update := map[string]interface{}{
|
update := map[string]interface{}{
|
||||||
"property": m,
|
"property": hero.Property,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil {
|
if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil {
|
||||||
this.moduleHero.Errorf("PushHeroProperty err:%v", err)
|
this.moduleHero.Errorf("ChangeHeroProperty err:%v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return //session.SendMsg("hero", "property", &pb.HeroPropertyPush{Property: m})
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *ModelHero) cleanData(uid string) {
|
func (this *ModelHero) cleanData(uid string) {
|
||||||
@ -441,3 +436,78 @@ func (this *ModelHero) cleanData(uid string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
|
||||||
|
var (
|
||||||
|
curExp int32
|
||||||
|
curLv int32
|
||||||
|
update map[string]interface{} // 属性变化
|
||||||
|
)
|
||||||
|
if hero == nil {
|
||||||
|
code = pb.ErrorCode_HeroNoExist
|
||||||
|
return
|
||||||
|
}
|
||||||
|
update = make(map[string]interface{}, 0)
|
||||||
|
curExp = hero.Exp
|
||||||
|
curLv = hero.Lv
|
||||||
|
|
||||||
|
var maxLv int32 // 校验等级达到上限
|
||||||
|
maxLv = hero.Star * comm.HeroStarLvRatio
|
||||||
|
_data := this.moduleHero.configure.GetHeroLv(curLv)
|
||||||
|
if _data != nil {
|
||||||
|
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
|
||||||
|
code = pb.ErrorCode_HeroMaxLv
|
||||||
|
return
|
||||||
|
}
|
||||||
|
curExp += exp // 先把经验加上
|
||||||
|
for { // 死循环判断一键升级
|
||||||
|
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
|
||||||
|
curLv = maxLv
|
||||||
|
curExp = _data.Heroexp[0].N
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
|
||||||
|
break
|
||||||
|
} else { // 升级操作
|
||||||
|
curExp -= _data.Heroexp[0].N
|
||||||
|
curLv += 1 // 经验够了 那么等级+1
|
||||||
|
_data = this.moduleHero.configure.GetHeroLv(curLv)
|
||||||
|
if _data == nil { // 等级加失败了 回到原来的等级
|
||||||
|
curLv -= 1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
curCount := hero.SameCount - 1
|
||||||
|
if curCount != 0 { // 有叠加的情况
|
||||||
|
// 克隆一个英雄
|
||||||
|
newhero = this.CloneNewHero(hero)
|
||||||
|
update := map[string]interface{}{
|
||||||
|
"sameCount": curCount,
|
||||||
|
}
|
||||||
|
newhero.SameCount = curCount
|
||||||
|
if err := this.ChangeList(uid, newhero.Id, update); err != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update["lv"] = curLv
|
||||||
|
update["exp"] = curExp
|
||||||
|
update["isOverlying"] = false
|
||||||
|
update["sameCount"] = 1
|
||||||
|
|
||||||
|
hero.Lv = curLv
|
||||||
|
hero.Exp = curExp
|
||||||
|
hero.IsOverlying = false
|
||||||
|
hero.SameCount = 1
|
||||||
|
|
||||||
|
if err := this.ChangeList(uid, hero.Id, update); err != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
code = pb.ErrorCode_HeroNoExist
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -102,97 +102,6 @@ func (this *Hero) QueryHeroAmount(uId string, heroCfgId string) (amount uint32)
|
|||||||
return amount
|
return amount
|
||||||
}
|
}
|
||||||
|
|
||||||
// 给指定英雄加经验
|
|
||||||
func (this *Hero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
|
|
||||||
var (
|
|
||||||
curExp int32
|
|
||||||
curLv int32
|
|
||||||
err1 error
|
|
||||||
update map[string]interface{} // 属性变化
|
|
||||||
)
|
|
||||||
if hero == nil {
|
|
||||||
code = pb.ErrorCode_HeroNoExist
|
|
||||||
return
|
|
||||||
}
|
|
||||||
update = make(map[string]interface{}, 0)
|
|
||||||
curExp = hero.Exp
|
|
||||||
curLv = hero.Lv
|
|
||||||
|
|
||||||
var maxLv int32 // 校验等级达到上限
|
|
||||||
maxLv = hero.Star * comm.HeroStarLvRatio
|
|
||||||
_data := this.configure.GetHeroLv(curLv)
|
|
||||||
if _data != nil {
|
|
||||||
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
|
|
||||||
code = pb.ErrorCode_HeroMaxLv
|
|
||||||
return
|
|
||||||
}
|
|
||||||
curExp += exp // 先把经验加上
|
|
||||||
for { // 死循环判断一键升级
|
|
||||||
|
|
||||||
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
|
|
||||||
curLv = maxLv
|
|
||||||
curExp = _data.Heroexp[0].N
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
|
|
||||||
break
|
|
||||||
} else { // 升级操作
|
|
||||||
curExp -= _data.Heroexp[0].N
|
|
||||||
curLv += 1 // 经验够了 那么等级+1
|
|
||||||
_data = this.configure.GetHeroLv(curLv)
|
|
||||||
if _data == nil { // 等级加失败了 回到原来的等级
|
|
||||||
curLv -= 1
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检测等级有变化
|
|
||||||
if curLv != hero.Lv {
|
|
||||||
//data := make(map[string]int32, 0)
|
|
||||||
preConfig := this.configure.GetHeroLv(hero.Lv)
|
|
||||||
nowConfig := this.configure.GetHeroLv(curLv)
|
|
||||||
update[comm.Hp] = int32(nowConfig.Hp - preConfig.Hp)
|
|
||||||
update[comm.Atk] = int32(nowConfig.Atk - preConfig.Atk)
|
|
||||||
update[comm.Def] = int32(nowConfig.Def - preConfig.Def)
|
|
||||||
//this.modelHero.mergeMainProperty(uid, hero.Id, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
curCount := hero.SameCount - 1
|
|
||||||
if curCount != 0 { // 有叠加的情况
|
|
||||||
newhero, err1 = this.modelHero.createOneHero(uid, hero.HeroID)
|
|
||||||
if err1 != nil {
|
|
||||||
code = pb.ErrorCode_DBError
|
|
||||||
}
|
|
||||||
update := map[string]interface{}{
|
|
||||||
"sameCount": curCount,
|
|
||||||
}
|
|
||||||
newhero.SameCount = curCount
|
|
||||||
if err := this.modelHero.ChangeList(uid, newhero.Id, update); err != nil {
|
|
||||||
code = pb.ErrorCode_DBError
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
update["lv"] = curLv
|
|
||||||
update["exp"] = curExp
|
|
||||||
update["isOverlying"] = false
|
|
||||||
update["sameCount"] = 1
|
|
||||||
|
|
||||||
hero.Lv = curLv
|
|
||||||
hero.Exp = curExp
|
|
||||||
hero.IsOverlying = false
|
|
||||||
hero.SameCount = 1
|
|
||||||
|
|
||||||
if err := this.modelHero.ChangeList(uid, hero.Id, update); err != nil {
|
|
||||||
code = pb.ErrorCode_DBError
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
code = pb.ErrorCode_HeroNoExist
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除指定卡牌
|
// 删除指定卡牌
|
||||||
func (this *Hero) DelCard(udi string, hero *pb.DBHero, amount int32) (code pb.ErrorCode) {
|
func (this *Hero) DelCard(udi string, hero *pb.DBHero, amount int32) (code pb.ErrorCode) {
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user