50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
![]() |
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))]
|
||
|
}
|