go_dreamfactory/modules/equipment/api_forg.go
2023-05-31 17:49:01 +08:00

77 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) (code pb.ErrorCode) {
if req.Forgid == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
//锻造
func (this *apiComp) Forg(session comm.IUserSession, req *pb.EquipmentForgReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
conf *cfg.GameEquipSComposeData
need []*cfg.Gameatn
equis map[string]uint32
reward []*pb.UserAssets
err error
)
if code = this.ForgCheck(session, req); code != pb.ErrorCode_Success {
data = &pb.ErrorData{
Title: code.ToString(),
Message: req.String(),
}
return
}
if conf, err = this.module.configure.GetEquipCompose(req.Forgid); err != nil {
code = pb.ErrorCode_ConfigNoFound
data = &pb.ErrorData{
Title: code.ToString(),
Message: err.Error(),
}
return
}
need = make([]*cfg.Gameatn, len(conf.Need))
equis = map[string]uint32{}
reward = make([]*pb.UserAssets, 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 code = this.module.ConsumeRes(session, need, true); code != pb.ErrorCode_Success {
return
}
if _, code = this.module.AddNewEquipments(session, equis, true); code != pb.ErrorCode_Success {
return
}
for K, v := range equis {
reward = append(reward, &pb.UserAssets{
A: comm.EquipmentType,
T: K,
N: int32(v),
})
}
session.SendMsg(string(this.module.GetType()), "forg", &pb.EquipmentForgResp{Issucc: true, Reward: reward})
return
}