ecs/servers/game/data/task.go
2025-06-21 16:17:24 +08:00

57 lines
1.2 KiB
Go

package data
import json "github.com/json-iterator/go"
type Task struct {
Id int `json:"id"`
Type int `json:"type"`
RearId int `json:"rear_id"`
Sort int `json:"sort"`
ActiveValue int `json:"active_value"`
ExpMultiple int `json:"exp_multiple"`
CoinMultiple int `json:"coin_multiple"`
ItemIds []int `json:"item_ids"`
ItemNums []int `json:"item_nums"`
TaskArgs1 []int `json:"task_args1"`
TaskArgs2 []int `json:"task_args2"`
TaskArgs3 []int `json:"task_args3"`
}
type TaskTable struct {
l []*Task
m1 map[int]*Task
m2 map[int][]*Task
}
func (this *TaskTable) load(buf []byte) error {
var err = json.Unmarshal(buf, &this.l)
if err != nil {
return err
}
this.m1 = make(map[int]*Task)
this.m2 = make(map[int][]*Task)
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].Id], this.l[i])
}
return nil
}
func (this *TaskTable) List() []*Task {
return this.l
}
//func (this *TaskTable) Get(i int) *Task {
// return this.l[i]
//}
func (this *TaskTable) Find1(id int) *Task {
return this.m1[id]
}
func (this *TaskTable) Find2(tipe int) []*Task {
return this.m2[tipe]
}