ecs/servers/game/data/achievement.go
2025-07-16 10:05:22 +08:00

51 lines
1.1 KiB
Go

package data
import json "github.com/json-iterator/go"
type Achievement struct {
Id int `json:"id"`
Type int `json:"type"`
Module int `json:"module"`
Sort int `json:"sort"`
Value int `json:"value"`
ItemIds []int `json:"item_ids"`
ItemNums []int `json:"item_nums"`
}
type AchievementTable struct {
l []*Achievement
m1 map[int]*Achievement
m2 map[int][]*Achievement
}
func (this *AchievementTable) load(buf []byte) error {
var err = json.Unmarshal(buf, &this.l)
if err != nil {
return err
}
this.m1 = make(map[int]*Achievement)
this.m2 = make(map[int][]*Achievement)
for i := range this.l {
this.m1[this.l[i].Id] = this.l[i]
this.m2[this.l[i].Type] = append(this.m2[this.l[i].Type], this.l[i])
}
return nil
}
func (this *AchievementTable) List() []*Achievement {
return this.l
}
//func (this *AchievementTable) Get(i int) *Achievement {
// return this.l[i]
//}
func (this *AchievementTable) Find1(id int) *Achievement {
return this.m1[id]
}
func (this *AchievementTable) Find2(tipe int) []*Achievement {
return this.m2[tipe]
}