package data import ( "f1-game/internal/code" "f1-game/internal/constant" "f1-game/internal/extend/rand" "f1-game/internal/types" clog "github.com/cherry-game/cherry/logger" ) // 获取关卡首胜奖励 func (p *ChapterLevelRow) GetFirstRewards() types.Assets { rewards := types.Assets{} // 获取固定奖励 for _, reward := range p.FixedRewards { rewards.Add(reward.ID, reward.Num) } // 首通奖励 for _, reward := range p.FirstReward { rewards.Add(reward.ID, reward.Num) } return rewards } // 随机挑战奖励 func (p *ChapterLevelRow) RandomChapterLevelReward() types.Assets { rewards := types.Assets{} // 固定奖励 for _, reward := range p.FixedRewards { rewards.Add(reward.ID, reward.Num) } // 随机奖励 for _, rewardPool := range p.RandomRewardPools { randValue := rand.RangeInt(0, constant.RatioBase) if rewardPool.Value < randValue { continue } row, ok := DropPool.RandomOne(rewardPool.Key) if code.IsFail(ok) { clog.Warnf("chapter level reward not found. levelID:%d, pool:%d", p.ID, rewardPool.Key) continue } if row != nil { rewards.Add(row.ItemID, row.Num) } } return rewards } // 通过次数获取挑战消耗 func (p *ChapterLevelRow) GetChapterLevelCost(num int32) types.Assets { costs := types.Assets{} for _, asset := range p.CostStamina { costs.Add(asset.ID, asset.Num*int64(num)) } return costs }