check 校验 模块名称修改
This commit is contained in:
parent
56307b8956
commit
fac442d1c7
@ -1,7 +1,6 @@
|
||||
package hero
|
||||
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/modules"
|
||||
)
|
||||
@ -9,8 +8,7 @@ import (
|
||||
type apiComp struct {
|
||||
modules.MCompGate
|
||||
service core.IService
|
||||
moduleHero *Hero
|
||||
user comm.IUser
|
||||
module *Hero
|
||||
}
|
||||
|
||||
const ( //消息回复的头名称
|
||||
@ -29,7 +27,7 @@ const ( //消息回复的头名称
|
||||
//组件初始化接口
|
||||
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||
err = this.MCompGate.Init(service, module, comp, options)
|
||||
this.moduleHero = module.(*Hero)
|
||||
this.module = module.(*Hero)
|
||||
this.service = service
|
||||
return
|
||||
}
|
||||
@ -37,12 +35,5 @@ func (this *apiComp) Init(service core.IService, module core.IModule, comp core.
|
||||
func (this *apiComp) Start() (err error) {
|
||||
err = this.MCompGate.Start()
|
||||
|
||||
var module core.IModule
|
||||
|
||||
if module, err = this.service.GetModule(comm.ModuleUser); err != nil {
|
||||
return
|
||||
}
|
||||
this.user = module.(comm.IUser)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ import (
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) AwakenCheck(session comm.IUserSession, req *pb.HeroAwakenReq) (code comm.ErrorCode) {
|
||||
func (this *apiComp) AwakenCheck(session comm.IUserSession, req *pb.HeroAwakenReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
|
||||
@ -29,13 +29,13 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
)
|
||||
costRes = make(map[string]int32, 0)
|
||||
bCheckOk = true
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID)
|
||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID)
|
||||
|
||||
if err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
AwakenConfig, err1 := this.moduleHero.configure.GetHeroAwakenConfig()
|
||||
AwakenConfig, err1 := this.module.configure.GetHeroAwakenConfig()
|
||||
if err1 != nil {
|
||||
code = pb.ErrorCode_ConfigNoFound
|
||||
return
|
||||
@ -53,7 +53,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
// 参数校验
|
||||
for _, v := range awakenData.Phaseneed {
|
||||
if v.A == "attr" { // 消耗玩家身上资源
|
||||
curGold := this.user.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
curGold := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if curGold < v.N {
|
||||
bCheckOk = false
|
||||
break
|
||||
@ -62,7 +62,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
} else if v.A == "item" { //消耗道具
|
||||
itemid, err := strconv.Atoi(v.T)
|
||||
if err != nil {
|
||||
curCount := this.moduleHero.items.QueryItemAmount(nil, session.GetUserId(), int32(itemid))
|
||||
curCount := this.module.items.QueryItemAmount(nil, session.GetUserId(), int32(itemid))
|
||||
if curCount < uint32(v.N) {
|
||||
bCheckOk = false
|
||||
break
|
||||
@ -80,14 +80,14 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), StrengthenUplv, &pb.HeroAwakenResp{Hero: _hero})
|
||||
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroAwakenResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
|
||||
for _, v := range awakenData.Phaseneed {
|
||||
if v.A == "attr" { // 消耗玩家身上资源
|
||||
if _data, ok := costRes[v.T]; ok {
|
||||
code = this.user.AddAttributeValue(session.GetUserId(), v.T, _data)
|
||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), v.T, _data)
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
@ -96,7 +96,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
} else if v.A == "item" { //消耗道具
|
||||
itemid, err := strconv.Atoi(v.T)
|
||||
if err != nil {
|
||||
code = this.moduleHero.items.AddItem(nil, session.GetUserId(), int32(itemid), -v.N)
|
||||
code = this.module.items.AddItem(nil, session.GetUserId(), int32(itemid), -v.N)
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
@ -104,7 +104,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, agrs map[string]interface
|
||||
}
|
||||
}
|
||||
|
||||
err1 = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
|
@ -5,39 +5,48 @@ import (
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
"strconv"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) ResonanceCheck(session comm.IUserSession, req *pb.HeroResonanceReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
func (this *apiComp) ResonanceCheck(session comm.IUserSession, req *pb.HeroResonanceReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" || req.CostObjID == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
var (
|
||||
bCheckOk bool
|
||||
)
|
||||
bCheckOk = false
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄共鸣
|
||||
func (this *apiComp) Resonance(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
bCheckOk := true
|
||||
_hero, code := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
_costHero, err := this.moduleHero.GetHero(session.GetUserId(), req.CostObjID) // 查询消耗卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
_costHero, code := this.module.GetHero(session.GetUserId(), req.CostObjID) // 查询消耗卡是否存在
|
||||
if code != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_HeroNoEnough
|
||||
return
|
||||
}
|
||||
if _costHero.SameCount < req.Amount { // 消耗卡数量不足
|
||||
code.Code = pb.ErrorCode_HeroNoEnough
|
||||
code = pb.ErrorCode_HeroNoEnough
|
||||
}
|
||||
// 共鸣次数判断
|
||||
resonConfig, errr := this.moduleHero.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
resonConfig, errr := this.module.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
if errr != nil {
|
||||
code.Code = pb.ErrorCode_ConfigNoFound
|
||||
code = pb.ErrorCode_ConfigNoFound
|
||||
return
|
||||
}
|
||||
if resonConfig.Maxnum >= _hero.ResonateNum {
|
||||
code.Code = pb.ErrorCode_HeroMaxResonate // 共鸣次数已满
|
||||
code = pb.ErrorCode_HeroMaxResonate // 共鸣次数已满
|
||||
return
|
||||
}
|
||||
|
||||
@ -45,7 +54,7 @@ func (this *apiComp) ResonanceCheck(session comm.IUserSession, req *pb.HeroReson
|
||||
for _, v := range resonConfig.Need {
|
||||
if v.A == "hero" && v.T == strconv.Itoa(int(_costHero.HeroID)) {
|
||||
if req.Amount != v.N {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
} else {
|
||||
bCheckOk = true
|
||||
@ -54,60 +63,37 @@ func (this *apiComp) ResonanceCheck(session comm.IUserSession, req *pb.HeroReson
|
||||
}
|
||||
}
|
||||
if !bCheckOk { // 配置校验不通过
|
||||
code.Code = pb.ErrorCode_HeroNoEnough
|
||||
code = pb.ErrorCode_HeroNoEnough
|
||||
return
|
||||
}
|
||||
bCheckOk = false
|
||||
bCheckOk = true
|
||||
// 金币校验
|
||||
for _, v := range resonConfig.Need {
|
||||
if v.A == "attr" { // 查询玩家身上资源是否满足
|
||||
value := this.user.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if value >= v.N {
|
||||
bCheckOk = true // 财富校验通过
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if !bCheckOk { // 配置校验不通过
|
||||
code.Code = pb.ErrorCode_ResNoEnough
|
||||
value := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if value < v.N {
|
||||
code = pb.ErrorCode_ResNoEnough
|
||||
return
|
||||
}
|
||||
result = map[string]interface{}{
|
||||
"heroObj": _hero,
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
/// 英雄共鸣
|
||||
func (this *apiComp) Resonance(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceReq) (code pb.ErrorCode) {
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
if _hero == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
log.Errorf("not find card:%s,", req.HeroObjID)
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
|
||||
code = this.moduleHero.DelCard(req.CostObjID, req.Amount)
|
||||
if code != 0 {
|
||||
code = this.module.DelCard(req.CostObjID, req.Amount)
|
||||
if code != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_DBError
|
||||
return
|
||||
}
|
||||
|
||||
resonConfig, err1 := this.moduleHero.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
resonConfig, err1 := this.module.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
if err1 != nil {
|
||||
code = pb.ErrorCode_ConfigNoFound
|
||||
return
|
||||
}
|
||||
for _, v := range resonConfig.Need {
|
||||
if v.A == "attr" { // 查询玩家身上资源是否满足
|
||||
value := this.user.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
value := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if value >= v.N { // 直接删除财富
|
||||
code = this.user.AddAttributeValue(session.GetUserId(), v.T, value-v.N) // 扣除资源
|
||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), v.T, value-v.N) // 扣除资源
|
||||
break
|
||||
} else {
|
||||
code = pb.ErrorCode_ResNoEnough
|
||||
@ -118,9 +104,9 @@ func (this *apiComp) Resonance(session comm.IUserSession, agrs map[string]interf
|
||||
_heroMap := map[string]interface{}{
|
||||
"resonateNum": _hero.ResonateNum + resonConfig.Energy,
|
||||
}
|
||||
err := this.moduleHero.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err != nil {
|
||||
log.Errorf("update hero skill failed:%v", err)
|
||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err1 != nil {
|
||||
log.Errorf("update hero skill failed:%v", err1)
|
||||
}
|
||||
// 返还对应初始星级的卡
|
||||
for _, v := range resonConfig.Prize {
|
||||
@ -131,12 +117,12 @@ func (this *apiComp) Resonance(session comm.IUserSession, agrs map[string]interf
|
||||
return
|
||||
}
|
||||
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
|
||||
this.moduleHero.hero.createOneHero(session.GetUserId(), int32(value))
|
||||
this.module.hero.createOneHero(session.GetUserId(), int32(value))
|
||||
}
|
||||
}
|
||||
}
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
@ -4,75 +4,66 @@ import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
cfg "go_dreamfactory/sys/configure/structs"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) ResonanceResetCheck(session comm.IUserSession, req *pb.HeroResonanceResetReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
func (this *apiComp) ResonanceResetCheck(session comm.IUserSession, req *pb.HeroResonanceResetReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
if _hero.ResonateNum <= 0 { // 没有共鸣 不允许重置
|
||||
code.Code = pb.ErrorCode_HeroNoResonate
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
|
||||
// 共鸣次数判断
|
||||
resonConfig, errr := this.moduleHero.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
if errr != nil {
|
||||
code.Code = pb.ErrorCode_ConfigNoFound
|
||||
return
|
||||
}
|
||||
|
||||
if _hero.ResonateNum*resonConfig.Energy >= _hero.DistributionResonate {
|
||||
code.Code = pb.ErrorCode_HeroNotNeedResonate // 已经是重置状态
|
||||
return
|
||||
}
|
||||
|
||||
_costConfig, err1 := this.moduleHero.configure.GetHeroResonanceRestConfig()
|
||||
if err1 != nil {
|
||||
code.Code = pb.ErrorCode_ConfigNoFound // 没找到配置消耗
|
||||
return
|
||||
}
|
||||
for _, v := range _costConfig.Var {
|
||||
if v.A == "attr" {
|
||||
value := this.user.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if value < v.N {
|
||||
code.Code = pb.ErrorCode_ResNoEnough // 资源不足
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
result = map[string]interface{}{
|
||||
"resonateNum": _hero.ResonateNum * resonConfig.Energy,
|
||||
"heroObj": _hero,
|
||||
"_costConfig": _costConfig,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄共鸣
|
||||
func (this *apiComp) ResonanceReset(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceResetReq) (code pb.ErrorCode) {
|
||||
|
||||
restResonance := agrs["resonateNum"].(int32)
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
_costConfig := agrs["heroObj"].(cfg.Game_comAtnData)
|
||||
func (this *apiComp) ResonanceReset(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceResetReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
_hero, code := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
if _hero.ResonateNum <= 0 { // 没有共鸣 不允许重置
|
||||
code = pb.ErrorCode_HeroNoResonate
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
|
||||
session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
|
||||
}
|
||||
}()
|
||||
// 共鸣次数判断
|
||||
resonConfig, errr := this.module.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||
if errr != nil {
|
||||
code = pb.ErrorCode_ConfigNoFound
|
||||
return
|
||||
}
|
||||
|
||||
if _hero.ResonateNum*resonConfig.Energy >= _hero.DistributionResonate {
|
||||
code = pb.ErrorCode_HeroNotNeedResonate // 已经是重置状态
|
||||
return
|
||||
}
|
||||
|
||||
_costConfig, err1 := this.module.configure.GetHeroResonanceRestConfig()
|
||||
if err1 != nil {
|
||||
code = pb.ErrorCode_ConfigNoFound // 没找到配置消耗
|
||||
return
|
||||
}
|
||||
for _, v := range _costConfig.Var {
|
||||
if v.A == "attr" {
|
||||
value := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), v.T)
|
||||
if value < v.N {
|
||||
code = pb.ErrorCode_ResNoEnough // 资源不足
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, v := range _costConfig.Var {
|
||||
if v.A == "attr" {
|
||||
code = this.user.AddAttributeValue(session.GetUserId(), v.T, -v.N) // 扣资源
|
||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), v.T, -v.N) // 扣资源
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,16 +71,16 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, agrs map[string]i
|
||||
delete(_hero.Energy, k)
|
||||
}
|
||||
_heroMap := map[string]interface{}{
|
||||
"DistributionResonate": restResonance,
|
||||
"DistributionResonate": _hero.ResonateNum * resonConfig.Energy,
|
||||
"Energy": _hero.Energy,
|
||||
}
|
||||
|
||||
err := this.moduleHero.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err != nil {
|
||||
log.Errorf("update hero skill failed:%v", err)
|
||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err1 != nil {
|
||||
log.Errorf("update hero skill failed:%v", err1)
|
||||
}
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
@ -4,42 +4,35 @@ import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) ResonanceUseEnergyCheck(session comm.IUserSession, req *pb.HeroResonanceUseEnergyReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
func (this *apiComp) ResonanceUseEnergyCheck(session comm.IUserSession, req *pb.HeroResonanceUseEnergyReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" || req.UseEnergy <= 0 || req.UseType < 0 {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
if _hero.DistributionResonate < req.UseEnergy { // 能量点数不够
|
||||
code.Code = pb.ErrorCode_HeroNoEnergy
|
||||
return
|
||||
}
|
||||
result = map[string]interface{}{
|
||||
"heroObj": _hero,
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceUseEnergyReq) (code pb.ErrorCode) {
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroResonanceUseEnergyReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
_hero, code := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
|
||||
session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
|
||||
if _hero == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
|
||||
if _hero.DistributionResonate < req.UseEnergy { // 能量点数不够
|
||||
code = pb.ErrorCode_HeroNoEnergy
|
||||
return
|
||||
}
|
||||
|
||||
_hero.Energy[req.UseType] += req.UseEnergy
|
||||
|
||||
_heroMap := map[string]interface{}{
|
||||
@ -47,14 +40,14 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, agrs map[stri
|
||||
"Energy": _hero.Energy,
|
||||
}
|
||||
|
||||
err := this.moduleHero.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err != nil {
|
||||
err1 := this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err1 != nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
log.Errorf("update hero skill failed:%v", err)
|
||||
log.Errorf("update hero skill failed:%v", err1)
|
||||
}
|
||||
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
@ -6,77 +6,67 @@ import (
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
"math/big"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) StrengthenUpSkillCheck(session comm.IUserSession, req *pb.HeroStrengthenUpSkillReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
func (this *apiComp) StrengthenUpSkillCheck(session comm.IUserSession, req *pb.HeroStrengthenUpSkillReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" || req.CostCardObj == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
tagColor int32 // 目标卡品质
|
||||
costColor int32 // 消耗卡品质
|
||||
)
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
_costHero, err := this.moduleHero.GetHero(session.GetUserId(), req.CostCardObj) // 查询消耗卡是否存在
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
// 查询配置表 找出原始品质
|
||||
tmp := this.moduleHero.configure.GetHero(_hero.HeroID)
|
||||
if tmp == nil {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
tagColor = tmp.Color
|
||||
tmp = this.moduleHero.configure.GetHero(_costHero.HeroID)
|
||||
if tmp == nil {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
costColor = tmp.Color
|
||||
if costColor != tagColor {
|
||||
code.Code = pb.ErrorCode_HeroColorErr
|
||||
return
|
||||
}
|
||||
result = map[string]interface{}{
|
||||
"heroObj": _hero,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄技能升级
|
||||
func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUpSkillReq) (code pb.ErrorCode) {
|
||||
func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUpSkillReq) (code pb.ErrorCode, data proto.Message) {
|
||||
var (
|
||||
tmpUpSkillID map[int32]*pb.SkillData // 即将要升级的技能id
|
||||
probability map[int32]int32 // 即将升级技能的权重
|
||||
upSkillPos int32 // 升级的技能位置
|
||||
totalprobability int32 // 所有技能总权重
|
||||
tmpValue int32 // 临时对象 存放累加权重
|
||||
tagColor int32 // 目标卡品质
|
||||
costColor int32 // 消耗卡品质
|
||||
)
|
||||
tmpUpSkillID = make(map[int32]*pb.SkillData, 0)
|
||||
probability = make(map[int32]int32, 0)
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
if _hero == nil {
|
||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在
|
||||
if err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
log.Errorf("not find card:%s,", req.HeroObjID)
|
||||
return
|
||||
}
|
||||
_costHero, err := this.module.GetHero(session.GetUserId(), req.CostCardObj) // 查询消耗卡是否存在
|
||||
if err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
// 查询配置表 找出原始品质
|
||||
tmp := this.module.configure.GetHero(_hero.HeroID)
|
||||
if tmp == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
tagColor = tmp.Color
|
||||
tmp = this.module.configure.GetHero(_costHero.HeroID)
|
||||
if tmp == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
costColor = tmp.Color
|
||||
if costColor != tagColor {
|
||||
code = pb.ErrorCode_HeroColorErr
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
|
||||
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
|
||||
config, err := this.moduleHero.configure.GetHeroSkillUpConfig()
|
||||
if err != nil {
|
||||
config, err1 := this.module.configure.GetHeroSkillUpConfig()
|
||||
if err1 != nil {
|
||||
return
|
||||
}
|
||||
// 先随机一个没有升满
|
||||
@ -85,7 +75,7 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, agrs map[strin
|
||||
}
|
||||
|
||||
for index, skill := range _hero.NormalSkill {
|
||||
skillMaxLv := this.moduleHero.configure.GetHeroSkillMaxLvConfig(uint32(skill.SkillID))
|
||||
skillMaxLv := this.module.configure.GetHeroSkillMaxLvConfig(uint32(skill.SkillID))
|
||||
if skill.SkillLv < skillMaxLv { // 找到没有满级的技能id
|
||||
tmpUpSkillID[int32(index)] = skill
|
||||
}
|
||||
@ -126,18 +116,18 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, agrs map[strin
|
||||
_heroMap := map[string]interface{}{
|
||||
"normalSkill": _hero.NormalSkill,
|
||||
}
|
||||
err = this.moduleHero.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err != nil {
|
||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||
if err1 != nil {
|
||||
log.Errorf("update hero skill failed:%v", err)
|
||||
}
|
||||
// 扣除材料
|
||||
code = this.moduleHero.DelCard(req.CostCardObj, 1)
|
||||
if code != 0 {
|
||||
code = this.module.DelCard(req.CostCardObj, 1)
|
||||
if code != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_DBError
|
||||
return
|
||||
}
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
@ -5,67 +5,79 @@ import (
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
cfg "go_dreamfactory/sys/configure/structs"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) StrengthenUpStarCheck(session comm.IUserSession, req *pb.HeroStrengthenUpStarReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
if req.HeroObjID == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
func (this *apiComp) StrengthenUpStarCheck(session comm.IUserSession, req *pb.HeroStrengthenUpStarReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" || len(req.Hero) == 0 || len(req.HeroRace) == 0 {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄升星
|
||||
func (this *apiComp) StrengthenUpStar(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUpStarReq) (code pb.ErrorCode, data proto.Message) {
|
||||
var (
|
||||
curLv int32
|
||||
target *cfg.Game_heroStarupData // 配置表目标升星英雄信息
|
||||
raceHero *pb.DBHero // 消耗的阵容英雄
|
||||
costRaceCount int32
|
||||
curGold int32
|
||||
)
|
||||
tagHero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID)
|
||||
if err != 0 {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID)
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
if err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
curLv = tagHero.Lv
|
||||
log.Debugf("curLv:%d", curLv)
|
||||
// 校验指定英雄
|
||||
tagHeroConfig, err1 := this.moduleHero.configure.GetHeroStarupConfig()
|
||||
tagHeroConfig, err1 := this.module.configure.GetHeroStarupConfig()
|
||||
if err1 != nil {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
|
||||
for _, value := range tagHeroConfig.GetDataList() {
|
||||
if tagHero.HeroID == value.Id && tagHero.Star == value.Star && tagHero.Lv == value.Maxlevel { // 找到了 满足升星条件
|
||||
if _hero.HeroID == value.Id && _hero.Star == value.Star && _hero.Lv == value.Maxlevel { // 找到了 满足升星条件
|
||||
target = value
|
||||
break
|
||||
}
|
||||
}
|
||||
if target == nil {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
// 指定英雄消耗校验
|
||||
for _, v := range req.Hero {
|
||||
if tagHero, err := this.moduleHero.GetHero(session.GetUserId(), v.CostCardObj); err != 0 {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
if tagHero, err := this.module.GetHero(session.GetUserId(), v.CostCardObj); err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
} else {
|
||||
if tagHero.SameCount < v.Amount { // 校验数量
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
// 校验ID
|
||||
if tagHero.HeroID != target.Needhero && tagHero.Star != target.Needherostar && tagHero.SameCount < target.Needheronum {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
// 校验阵容英雄消耗
|
||||
for _, v := range req.HeroRace {
|
||||
if raceHero, err = this.moduleHero.GetHero(session.GetUserId(), v.CostCardObj); err != 0 {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
if raceHero, err = this.module.GetHero(session.GetUserId(), v.CostCardObj); err != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
} else {
|
||||
// 校验阵容信息
|
||||
if raceHero.Star != target.Needracestar {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
bFind := false
|
||||
@ -76,7 +88,7 @@ func (this *apiComp) StrengthenUpStarCheck(session comm.IUserSession, req *pb.He
|
||||
}
|
||||
}
|
||||
if !bFind {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -84,51 +96,27 @@ func (this *apiComp) StrengthenUpStarCheck(session comm.IUserSession, req *pb.He
|
||||
costRaceCount += v.Amount
|
||||
}
|
||||
if costRaceCount != target.Needracenum { // 数量不匹配
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
// 金币消耗判断
|
||||
curGold = this.user.QueryAttributeValue(session.GetUserId(), "gold")
|
||||
curGold = this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), "gold")
|
||||
if curGold < target.Gold { // 金币不足
|
||||
code.Code = pb.ErrorCode_GoldNoEnough
|
||||
code = pb.ErrorCode_GoldNoEnough
|
||||
return
|
||||
}
|
||||
|
||||
result = map[string]interface{}{
|
||||
"costGold": target.Gold,
|
||||
"heroObj": tagHero,
|
||||
"curGold": curGold,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄升星
|
||||
func (this *apiComp) StrengthenUpStar(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUpStarReq) (code pb.ErrorCode) {
|
||||
|
||||
costGold := agrs["costGold"].(int32)
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
curGold := agrs["curGold"].(int32)
|
||||
if _hero == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
|
||||
// 消耗道具
|
||||
code = this.user.AddAttributeValue(session.GetUserId(), "gold", curGold-costGold) // 减少金币
|
||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), "gold", curGold-target.Gold) // 减少金币
|
||||
if code != pb.ErrorCode_Success {
|
||||
log.Errorf("cost gold failed ,count = %d", costGold)
|
||||
log.Errorf("cost gold failed ,count = %d", target.Gold)
|
||||
code = pb.ErrorCode_GoldNoEnough
|
||||
return
|
||||
}
|
||||
// 消耗指定英雄
|
||||
for _, v := range req.Hero {
|
||||
code = this.moduleHero.DelCard(v.CostCardObj, v.Amount)
|
||||
if code != 0 {
|
||||
code = this.module.DelCard(v.CostCardObj, v.Amount)
|
||||
if code != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_DBError
|
||||
log.Errorf("del hero err card:%s,count = %d", v.CostCardObj, v.Amount)
|
||||
return
|
||||
@ -137,8 +125,8 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, agrs map[string
|
||||
|
||||
//消耗种族英雄
|
||||
for _, v := range req.HeroRace {
|
||||
code = this.moduleHero.DelCard(v.CostCardObj, v.Amount)
|
||||
if code != 0 {
|
||||
code = this.module.DelCard(v.CostCardObj, v.Amount)
|
||||
if code != pb.ErrorCode_Success {
|
||||
code = pb.ErrorCode_DBError
|
||||
return
|
||||
}
|
||||
@ -148,13 +136,13 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, agrs map[string
|
||||
"star": _hero.Star,
|
||||
}
|
||||
// 保存数据
|
||||
err := this.moduleHero.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap)
|
||||
if err != nil {
|
||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap)
|
||||
if err1 != nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
log.Errorf("update hero skill failed:%v", err)
|
||||
}
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
@ -4,65 +4,72 @@ import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
//参数校验
|
||||
func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.HeroStrengthenUplvReq) (result map[string]interface{}, code comm.ErrorCode) {
|
||||
if req.HeroObjID == "" {
|
||||
code.Code = pb.ErrorCode_ReqParameterError
|
||||
func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.HeroStrengthenUplvReq) (code pb.ErrorCode) {
|
||||
if req.HeroObjID == "" || req.ExpCardID == "" || req.Amount <= 0 {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄升级
|
||||
func (this *apiComp) StrengthenUplv(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUplvReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
var (
|
||||
curLv int32
|
||||
curExp int32 // 当前英雄的经验
|
||||
costRes int32 // 当前需要消资源的数量
|
||||
addExp int32 // 需要增加的经验
|
||||
curGold int32
|
||||
curRes int32
|
||||
atn = map[string]interface{}{}
|
||||
)
|
||||
atn = make(map[string]interface{}, 0)
|
||||
|
||||
_hero, err := this.moduleHero.GetHero(session.GetUserId(), req.HeroObjID) // 校验升级的对象是否存在
|
||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 校验升级的对象是否存在
|
||||
|
||||
if err != pb.ErrorCode_Success {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
_expHero, err := this.moduleHero.GetHero(session.GetUserId(), req.ExpCardID) // 校验需要消耗经验卡牌的对象是否存在
|
||||
_expHero, err := this.module.GetHero(session.GetUserId(), req.ExpCardID) // 校验需要消耗经验卡牌的对象是否存在
|
||||
|
||||
if err != pb.ErrorCode_Success {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
if req.Amount <= 0 { // 消耗数量校验
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
curLv = _hero.Lv
|
||||
curExp = _hero.Exp // 当前英雄的经验
|
||||
addExp = 1000
|
||||
// 查询 本次消耗会获得多少经验
|
||||
expConf := this.moduleHero.configure.GetHeroExp(_expHero.HeroID)
|
||||
expConf := this.module.configure.GetHeroExp(_expHero.HeroID)
|
||||
if expConf != nil {
|
||||
addExp = expConf.Heroexp * req.Amount
|
||||
}
|
||||
if _expHero.SameCount < req.Amount { // 消耗经验卡片数量不足
|
||||
code.Code = pb.ErrorCode_HeroNoEnough
|
||||
code = pb.ErrorCode_HeroNoEnough
|
||||
return
|
||||
}
|
||||
// 校验当前能不能升级
|
||||
|
||||
if _hero.Lv >= _hero.Star*comm.HeroStarLvRatio { // 达到最大等级
|
||||
code.Code = pb.ErrorCode_HeroMaxLv
|
||||
code = pb.ErrorCode_HeroMaxLv
|
||||
return
|
||||
}
|
||||
|
||||
var maxLv int32 // 校验等级达到上限
|
||||
maxLv = _hero.Star * comm.HeroStarLvRatio
|
||||
_data := this.moduleHero.configure.GetHeroLv(curLv)
|
||||
_data := this.module.configure.GetHeroLv(curLv)
|
||||
if _data != nil {
|
||||
if maxLv <= _hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
|
||||
code.Code = pb.ErrorCode_HeroMaxLv
|
||||
code = pb.ErrorCode_HeroMaxLv
|
||||
return
|
||||
}
|
||||
curExp += addExp // 先把经验加上
|
||||
@ -79,7 +86,7 @@ func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.Hero
|
||||
} else { // 升级操作
|
||||
curExp -= _data.Heroexp[0].N
|
||||
curLv += 1 // 经验够了 那么等级+1
|
||||
_data = this.moduleHero.configure.GetHeroLv(curLv)
|
||||
_data = this.module.configure.GetHeroLv(curLv)
|
||||
if _data == nil { // 等级加失败了 回到原来的等级
|
||||
curLv -= 1
|
||||
break
|
||||
@ -92,76 +99,44 @@ func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.Hero
|
||||
atn["t"] = v.T
|
||||
atn["n"] = v.N
|
||||
}
|
||||
// 金币消耗判断
|
||||
curGold = this.user.QueryAttributeValue(session.GetUserId(), atn["t"].(string))
|
||||
if curGold < costRes {
|
||||
code.Code = pb.ErrorCode_GoldNoEnough
|
||||
// 资源消耗判断
|
||||
curRes = this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), atn["t"].(string))
|
||||
if curRes < costRes {
|
||||
code = pb.ErrorCode_GoldNoEnough
|
||||
}
|
||||
} else {
|
||||
code.Code = pb.ErrorCode_HeroNoExist
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
|
||||
// 校验金币消耗
|
||||
result = map[string]interface{}{
|
||||
"costRes": costRes,
|
||||
"curExp": curExp,
|
||||
"curLv": curLv,
|
||||
"addExp": addExp,
|
||||
"heroObj": _hero,
|
||||
"curRes": curGold,
|
||||
"atn": atn,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
/// 英雄升级
|
||||
func (this *apiComp) StrengthenUplv(session comm.IUserSession, agrs map[string]interface{}, req *pb.HeroStrengthenUplvReq) (code pb.ErrorCode) {
|
||||
var (
|
||||
curLv int32
|
||||
curExp int32 // 当前英雄的经验
|
||||
costRes int32 // 当前需要消耗金币的数量
|
||||
addExp int32 // 需要增加的经验
|
||||
curRes int32
|
||||
atn = map[string]interface{}{}
|
||||
)
|
||||
|
||||
costRes = agrs["costRes"].(int32)
|
||||
curLv = agrs["curLv"].(int32)
|
||||
curExp = agrs["curExp"].(int32)
|
||||
addExp = agrs["addExp"].(int32)
|
||||
_hero := agrs["heroObj"].(*pb.DBHero)
|
||||
curRes = agrs["curRes"].(int32)
|
||||
atn = agrs["atn"].(map[string]interface{})
|
||||
if _hero == nil {
|
||||
code = pb.ErrorCode_HeroNoExist
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if code == pb.ErrorCode_Success {
|
||||
session.SendMsg(string(this.moduleHero.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
|
||||
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
|
||||
}
|
||||
}()
|
||||
log.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costRes, addExp)
|
||||
// 执行升级逻辑
|
||||
code = this.moduleHero.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
|
||||
code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
// 消耗道具
|
||||
code = this.user.AddAttributeValue(session.GetUserId(), atn["t"].(string), int32(curRes-costRes)) // 减少金币
|
||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), atn["t"].(string), int32(curRes-costRes)) // 减少金币
|
||||
if code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
// 删除经验卡
|
||||
err := this.moduleHero.hero.consumeOneHeroCard(session.GetUserId(), req.ExpCardID, req.Amount)
|
||||
if err != nil {
|
||||
err1 := this.module.hero.consumeOneHeroCard(session.GetUserId(), req.ExpCardID, req.Amount)
|
||||
if err1 != nil {
|
||||
log.Errorf("delete err failed err:%T!", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = this.moduleHero.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err != nil {
|
||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||
if err1 != nil {
|
||||
log.Errorf("PushHeroProperty err!")
|
||||
}
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user