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))] }