extend_skill_pool.go 882 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package data
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/extend/rand"
  5. )
  6. var (
  7. skillPoolWeightMap map[int32]*rand.Weight[*SkillPoolRow]
  8. )
  9. func (p *skillPoolConfig) OnAfterLoad(_ bool) {
  10. loadMap := map[int32]*rand.Weight[*SkillPoolRow]{}
  11. for poolID, rows := range p.poolIDSkillIDUniMaps {
  12. weight := rand.NewMapWeight(rows, func(v *SkillPoolRow) int32 {
  13. return v.Weight
  14. })
  15. loadMap[poolID] = weight
  16. }
  17. skillPoolWeightMap = loadMap
  18. }
  19. func (p *skillPoolConfig) GetWeighter(skillPoolID int32) (*rand.Weight[*SkillPoolRow], bool) {
  20. value, found := skillPoolWeightMap[skillPoolID]
  21. return value, found
  22. }
  23. func (p *skillPoolConfig) Random(skillPoolID int32) (*SkillPoolRow, int32) {
  24. weighter, ok := SkillPool.GetWeighter(skillPoolID)
  25. if !ok {
  26. return nil, code.ConfigNotFound_SkillPool
  27. }
  28. skillPoolRow := weighter.SelectOne()
  29. return skillPoolRow, code.OK
  30. }