go_dreamfactory/modules/equipment/api_forg.go

62 lines
1.4 KiB
Go

package equipment
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
)
//参数校验
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 proto.Message) {
var (
conf *cfg.GameEquipComposeData
need []*cfg.Gameatn
equis map[string]uint32
err error
)
if code = this.ForgCheck(session, req); code != pb.ErrorCode_Success {
return
}
if conf, err = this.module.configure.GetEquipCompose(req.Forgid); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
}
need = make([]*cfg.Gameatn, len(conf.Need))
equis = map[string]uint32{}
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[string(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
}
session.SendMsg(string(this.module.GetType()), "forg", &pb.EquipmentForgResp{Issucc: true})
return
}