go_dreamfactory/modules/equipment/api_forg.go
2023-10-17 13:54:53 +08:00

78 lines
1.8 KiB
Go

package equipment
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) ForgCheck(session comm.IUserSession, req *pb.EquipmentForgReq) (errdata *pb.ErrorData) {
if req.Forgid == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
//锻造
func (this *apiComp) Forg(session comm.IUserSession, req *pb.EquipmentForgReq) (errdata *pb.ErrorData) {
var (
conf *cfg.GameEquipSComposeData
need []*cfg.Gameatn
equis map[string]uint32
equipments []*pb.DB_Equipment
reward []*pb.UserAtno
err error
)
if errdata = this.ForgCheck(session, req); errdata != nil {
return
}
if conf, err = this.module.configure.GetEquipCompose(req.Forgid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
need = make([]*cfg.Gameatn, len(conf.Need))
equis = map[string]uint32{}
reward = make([]*pb.UserAtno, 0)
for n := int32(0); n < req.Num; n++ {
for i, v := range conf.Need {
if need[i] == nil {
need[i] = &cfg.Gameatn{
A: v.A,
T: v.T,
N: v.N,
}
} else {
need[i].N += v.N
}
}
index := comm.GetRandW(conf.Probability)
equis[conf.Equip[index]]++
}
if errdata = this.module.ConsumeRes(session, need, true); errdata != nil {
return
}
if equipments, errdata = this.module.AddNewEquipments(session, equis, true); errdata != nil {
return
}
for _, v := range equipments {
reward = append(reward, &pb.UserAtno{
A: comm.EquipmentType,
T: v.CId,
N: 1,
O: v.Id,
})
}
session.SendMsg(string(this.module.GetType()), "forg", &pb.EquipmentForgResp{Issucc: true, Reward: reward})
return
}