go_dreamfactory/modules/equipment/api_equip.go
2022-06-24 12:02:42 +08:00

111 lines
3.6 KiB
Go

package equipment
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *Api_Comp) Equip_Check(session comm.IUserSession, req *pb.Equipment_Equip_Req) (result map[string]interface{}, code comm.ErrorCode) {
var (
err error
errorCode pb.ErrorCode
confs []*cfg.Game_equipmentData
equipments []*pb.DB_Equipment
hero *pb.DB_HeroData
)
confs = make([]*cfg.Game_equipmentData, len(req.EquipmentId))
equipments = make([]*pb.DB_Equipment, len(req.EquipmentId))
for i, v := range req.EquipmentId {
if v != "" {
if equipments[i], err = this.module.model_equipment_comp.Equipment_QueryUserEquipmentsPackById(session.GetUserId(), v); err != nil {
log.Errorf("Equip_Check err:%v", err)
code.Code = pb.ErrorCode_EquipmentOnFoundEquipment
return
}
if confs[i], err = this.module.configure_comp.GetEquipmentConfigureById(equipments[i].CId); err != nil {
log.Errorf("Equip_Check err:%v", err)
code.Code = pb.ErrorCode_EquipmentOnFoundEquipment
return
}
}
}
if hero, errorCode = this.module.hero.GetHero(req.HeroCardId); errorCode != pb.ErrorCode_Success {
code.Code = errorCode
return
}
result = map[string]interface{}{
"confs": confs,
"equipments": equipments,
"hero": hero,
}
return
}
///英雄挂在装备
func (this *Api_Comp) Equip(session comm.IUserSession, agrs map[string]interface{}, req *pb.Equipment_Equip_Req) (code pb.ErrorCode) {
var (
err error
confs []*cfg.Game_equipmentData
equipment *pb.DB_Equipment
equipments []*pb.DB_Equipment
updatequipment []*pb.DB_Equipment
hero *pb.DB_HeroData
)
defer func() {
if code == pb.ErrorCode_Success {
session.SendMsg(string(this.module.GetType()), "", &pb.Equipment_Equip_Resp{})
}
}()
confs = agrs["conf"].([]*cfg.Game_equipmentData)
equipments = agrs["equipment"].([]*pb.DB_Equipment)
updatequipment = make([]*pb.DB_Equipment, 0)
hero = agrs["hero"].(*pb.DB_HeroData)
for i, v := range hero.EquipID {
if v != "" {
if equipments[i] != nil && v != equipments[i].Id {
if equipment, err = this.module.model_equipment_comp.Equipment_QueryUserEquipmentsPackById(session.GetUserId(), v); err != nil {
log.Errorf("Equip reader uid:%s equipment:%s err:%v", session.GetUserId(), v, err)
code = pb.ErrorCode_SystemError
return
}
equipment.IsEquip = false
equipments[i].IsEquip = true
updatequipment = append(updatequipment, equipment, equipments[i])
} else if equipments[i] == nil {
if equipment, err = this.module.model_equipment_comp.Equipment_QueryUserEquipmentsPackById(session.GetUserId(), v); err != nil {
log.Errorf("Equip reader uid:%s equipment:%s err:%v", session.GetUserId(), v, err)
code = pb.ErrorCode_SystemError
return
}
equipment.IsEquip = false
updatequipment = append(updatequipment, equipment)
}
} else {
if equipments[i] != nil {
equipments[i].IsEquip = true
updatequipment = append(updatequipment, equipments[i])
}
}
}
for i, _ := range equipments {
if i != int(confs[i].Station) {
log.Errorf("Equip conf:%v Target:%d Incorrect range!", confs[i], i)
code = pb.ErrorCode_SystemError
return
}
}
if code = this.module.hero.UpdateEquipment(hero, equipments); code == pb.ErrorCode_Success {
if err = this.module.model_equipment_comp.Equipment_UpdateIsEquip(session.GetUserId(), updatequipment...); err != nil {
log.Errorf("Equip err%v", err)
code = pb.ErrorCode_SystemError
return
}
}
return
}