ecs/servers/game/data_old/rig_trammels_ext.go

50 lines
1.2 KiB
Go
Raw Normal View History

2025-06-04 18:17:39 +08:00
package data
import (
"github.com/oylshe1314/framework/errors"
"github.com/oylshe1314/framework/util"
"sort"
)
type RigTrammelsTableExtend struct {
*RigTrammelsTable
extMap1 map[int][]*RigTrammels
extMap2 map[uint64]*RigTrammels
}
func (this *RigTrammelsTableExtend) init() error {
if this.RigTrammelsTable == nil {
return nil
}
this.extMap1 = map[int][]*RigTrammels{}
this.extMap2 = map[uint64]*RigTrammels{}
for _, d := range this.RigTrammelsTable.l {
this.extMap1[d.Group] = append(this.extMap1[d.Group], d)
this.extMap2[util.Compose2uint32(uint32(d.Group), uint32(d.Level))] = d
}
for _, list := range this.extMap1 {
sort.Slice(list, func(i, j int) bool {
return list[i].Level < list[j].Level
})
var lastLevel = 0
for _, trammels := range list {
if trammels.Level != lastLevel+1 {
return errors.Error("the levels of trammels are not continuous in the group, id: ", trammels.Level)
}
lastLevel = trammels.Level
}
}
return nil
}
func (this *RigTrammelsTableExtend) Groups() map[int][]*RigTrammels {
return this.extMap1
}
func (this *RigTrammelsTableExtend) Get(group, level int) *RigTrammels {
return this.extMap2[util.Compose2uint32(uint32(group), uint32(level))]
}