| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package data
- import (
- "f1-game/internal/code"
- "f1-game/internal/extend/rand"
- )
- var (
- skillPoolWeightMap map[int32]*rand.Weight[*SkillPoolRow]
- )
- func (p *skillPoolConfig) OnAfterLoad(_ bool) {
- loadMap := map[int32]*rand.Weight[*SkillPoolRow]{}
- for poolID, rows := range p.poolIDSkillIDUniMaps {
- weight := rand.NewMapWeight(rows, func(v *SkillPoolRow) int32 {
- return v.Weight
- })
- loadMap[poolID] = weight
- }
- skillPoolWeightMap = loadMap
- }
- func (p *skillPoolConfig) GetWeighter(skillPoolID int32) (*rand.Weight[*SkillPoolRow], bool) {
- value, found := skillPoolWeightMap[skillPoolID]
- return value, found
- }
- func (p *skillPoolConfig) Random(skillPoolID int32) (*SkillPoolRow, int32) {
- weighter, ok := SkillPool.GetWeighter(skillPoolID)
- if !ok {
- return nil, code.ConfigNotFound_SkillPool
- }
- skillPoolRow := weighter.SelectOne()
- return skillPoolRow, code.OK
- }
|