收藏品奖励优化

This commit is contained in:
hahwu 2026-03-19 15:25:13 +08:00
parent fdbeb25af2
commit 852eb088fa
3 changed files with 25 additions and 10 deletions

View File

@ -56,3 +56,12 @@ func GetRewardType(Id int) int {
}
return gamedata.GetIntValue(data, "Type")
}
func GetRewardLen() int {
data, err := gamedata.GetData(CFG_COLLECT)
if err != nil {
log.Debug("GetRewardLen err:%v", err)
return 0
}
return len(data)
}

View File

@ -22,7 +22,7 @@ const (
COLLECT_TYPE_FACE = 2
COLLECT_TYPE_AVATAR = 3
jackpotPreviewSize = 18 // 展示的奖池预览数量,同时作为补充阈値
jackpotPreviewSize = 9 // 展示的奖池预览数量,同时作为补充阈値
)
func (c *Collect) InitData() {
@ -37,8 +37,12 @@ func (c *Collect) InitData() {
// ensureJackpot 当奖池剩余少于预览数量时自动补充
func (c *Collect) ensureJackpot() {
if len(c.Jackpot) <= jackpotPreviewSize {
c.Jackpot = initJackpot2(c.Jackpot)
rewardLen := collectCfg.GetRewardLen()
if len(c.Jackpot) <= rewardLen {
loopNum := (rewardLen-len(c.Jackpot))/jackpotPreviewSize + 1
for i := 0; i < loopNum; i++ {
c.Jackpot = append(c.Jackpot, initJackpot2(nil)...)
}
}
}
@ -56,9 +60,10 @@ func (c *Collect) GetReward(id, num, factor int) ([]*item.Item, error) {
}
// 领取奖励
c.Reward = append(c.Reward, id)
jackpotId := 0
jackpotId, c.Jackpot = GoUtil.PopSlice(c.Jackpot)
c.ensureJackpot()
jackpotId := c.Jackpot[id-1]
if jackpotId == 0 {
return nil, fmt.Errorf("id : %d;奖池数据异常", id)
}
items := collectCfg.GetJackpotItems(jackpotId)
items = GoUtil.FormatStarItem(items, factor)
return items, nil
@ -66,11 +71,11 @@ func (c *Collect) GetReward(id, num, factor int) ([]*item.Item, error) {
func (c *Collect) BackData(factor int) *msg.ResCollectInfo {
itemsMsg := make([]*msg.CollectItem, 0, jackpotPreviewSize)
for i := 0; i < jackpotPreviewSize; i++ {
items := collectCfg.GetJackpotItems(c.Jackpot[i])
for k, v := range c.Jackpot {
items := collectCfg.GetJackpotItems(v)
items = GoUtil.FormatStarItem(items, factor)
itemsMsg = append(itemsMsg, &msg.CollectItem{
Id: int32(i + 1),
Id: int32(k + 1),
Items: item.ItemToMsg(items),
})
}

View File

@ -96,7 +96,8 @@ func TestFixUserData(t *testing.T) {
func TestRandInt(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("3625212")
p1.DeleteHighOrder()
CollectMod := p1.GetCollectMod()
p1.PushClientRes(CollectMod.BackData(p1.GetOrderFactor()))
}
func TestII(t *testing.T) {