extend_chapter_level.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package data
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/constant"
  5. "f1-game/internal/extend/rand"
  6. "f1-game/internal/types"
  7. clog "github.com/cherry-game/cherry/logger"
  8. )
  9. // 获取关卡首胜奖励
  10. func (p *ChapterLevelRow) GetFirstRewards() types.Assets {
  11. rewards := types.Assets{}
  12. // 获取固定奖励
  13. for _, reward := range p.FixedRewards {
  14. rewards.Add(reward.ID, reward.Num)
  15. }
  16. // 首通奖励
  17. for _, reward := range p.FirstReward {
  18. rewards.Add(reward.ID, reward.Num)
  19. }
  20. return rewards
  21. }
  22. // 随机挑战奖励
  23. func (p *ChapterLevelRow) RandomChapterLevelReward() types.Assets {
  24. rewards := types.Assets{}
  25. // 固定奖励
  26. for _, reward := range p.FixedRewards {
  27. rewards.Add(reward.ID, reward.Num)
  28. }
  29. // 随机奖励
  30. for _, rewardPool := range p.RandomRewardPools {
  31. randValue := rand.RangeInt(0, constant.RatioBase)
  32. if rewardPool.Value < randValue {
  33. continue
  34. }
  35. row, ok := DropPool.RandomOne(rewardPool.Key)
  36. if code.IsFail(ok) {
  37. clog.Warnf("chapter level reward not found. levelID:%d, pool:%d", p.ID, rewardPool.Key)
  38. continue
  39. }
  40. if row != nil {
  41. rewards.Add(row.ItemID, row.Num)
  42. }
  43. }
  44. return rewards
  45. }
  46. // 通过次数获取挑战消耗
  47. func (p *ChapterLevelRow) GetChapterLevelCost(num int32) types.Assets {
  48. costs := types.Assets{}
  49. for _, asset := range p.CostStamina {
  50. costs.Add(asset.ID, asset.Num*int64(num))
  51. }
  52. return costs
  53. }