接口补充通过卡池随机获取指定数量的英雄卡

This commit is contained in:
meixiongfeng 2023-11-02 11:03:13 +08:00
parent 964de6c126
commit e0b45c9c9c
3 changed files with 43 additions and 0 deletions

View File

@ -153,6 +153,9 @@ type (
CheckPeachReward(session IUserSession, ctime int64) CheckPeachReward(session IUserSession, ctime int64)
CreateOneHero(session IUserSession, heroCfgId string) (hero *pb.DBHero, atno []*pb.UserAtno, errdata *pb.ErrorData) CreateOneHero(session IUserSession, heroCfgId string) (hero *pb.DBHero, atno []*pb.UserAtno, errdata *pb.ErrorData)
// 通过卡池随机获取指定数量的英雄卡
GetRandomCardByCardPool(cardPool string, count int32) (cards []string, err error)
} }
//玩家 //玩家

View File

@ -558,3 +558,24 @@ func (this *configureComp) GetAllDrawRewardConf() (data map[int32]*cfg.GamedrawR
} }
return return
} }
func (this *configureComp) GetHeroByPoolExcept(pool string, cards map[string]struct{}) (hid string, err error) {
this.hlock.RLock()
defer this.hlock.RUnlock()
if v, ok := this.cardPool[pool]; ok {
var sz []int32
for _, v1 := range v {
if _, ok := cards[v1.Id]; !ok {
sz = append(sz, v1.Weight)
}
}
if len(sz) == 0 { // 异常报错提醒
err = comm.NewNotFoundConfErr(moduleName, hero_cardpool, pool)
return
}
hid = v[comm.GetRandW(sz)].Id
return
}
err = comm.NewNotFoundConfErr(moduleName, hero_cardpool, pool)
return
}

View File

@ -1037,3 +1037,22 @@ func (this *Hero) CreateOneHero(session comm.IUserSession, heroCfgId string) (he
} }
return return
} }
func (this *Hero) GetRandomCardByCardPool(cardPool string, count int32) (cards []string, err error) {
var (
hid string
sz map[string]struct{}
)
for i := 0; i < int(count); i++ {
hid, err = this.configure.GetHeroByPoolExcept(cardPool, sz)
if err != nil {
return
}
sz[hid] = struct{}{}
}
for k := range sz {
cards = append(cards, k)
}
return
}