NIP parser v2 (#17)

This commit is contained in:
Héctor Giménez
2024-05-05 12:15:08 +09:00
committed by GitHub
parent 0d5c108721
commit bb0ec2555d
28 changed files with 56618 additions and 1385 deletions

54705
cmd/d2data/d2data/items.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@ package skill
var Desc = map[ID]Description{
{{- range $key, $value := . }}
{{ $key }}: {Page: {{ $value.SkillPage }}, Row: {{ $value.SkillRow }}, Column: {{ $value.SkillColumn }}, ListRow: {{ $value.ListRow }}, IconCel: {{ $value.IconCel }} },
{{ $key }}: {Page: {{ $value.SkillPage }}, Row: {{ $value.SkillRow }}, Column: {{ $value.SkillColumn }}, ListRow: {{ $value.ListRow }}, IconCel: {{ $value.IconCel }}},
{{- end }}
}`
@@ -25,7 +25,7 @@ package skill
var Skills = map[ID]Skill{
{{- range $key, $value := . }}
{{ $key }}: {Name: "{{ $value.Name }}", ID: {{ $key }}, LeftSkill: {{ if eq $value.Leftskill 1 }}true{{ else }}false{{ end }}, RightSkill: {{ if eq $value.Rightskill 1 }}true{{ else }}false{{ end }} },
{{ $key }}: {Name: "{{ $value.Name }}", ID: {{ $key }}, LeftSkill: {{ if eq $value.Leftskill 1 }}true{{ else }}false{{ end }}, RightSkill: {{ if eq $value.Rightskill 1 }}true{{ else }}false{{ end }}},
{{- end }}
}`
@@ -39,6 +39,16 @@ var Areas = map[ID]Area{
{{- end }}
}`
const templateItems = `// Code generated by d2data. DO NOT EDIT.
// source: cmd/d2data/d2data/items.json
package item
var Desc = map[int]Description{
{{- range $key, $value := . }}
{{ $value.ID }}: {Name: "{{ $value.Name }}", ID: {{ $value.ID }}, Code: "{{ $value.Code }}", NormalCode: "{{ $value.NormalCode }}", UberCode: "{{ $value.UberCode }}", UltraCode: "{{ $value.UltraCode }}", InventoryWidth: {{ $value.Width }}, InventoryHeight: {{ $value.Height }}, MinDefense: {{ $value.MinDefense }}, MaxDefense: {{ $value.MaxDefense }}},
{{- end }}
}`
type skillDesc struct {
Skilldesc string `json:"skilldesc"`
SkillPage int `json:"SkillPage"`
@@ -64,6 +74,19 @@ type Level struct {
CanBeTerrorized bool
}
type itemDesc struct {
Name string `json:"name"`
Code string `json:"code"`
NormalCode string `json:"normcode"`
UberCode string `json:"ubercode"`
UltraCode string `json:"ultracode"`
Width int `json:"invwidth"`
Height int `json:"invheight"`
ID int `json:"classid"`
MinDefense int `json:"minac"`
MaxDefense int `json:"maxac"`
}
// Generate static code from https://github.com/blizzhackers/d2data data files.
func main() {
err := generateFromFile(templateSkillDesc, "cmd/d2data/d2data/skilldesc.json", "pkg/data/skill/skilldesc.go", &map[string]skillDesc{})
@@ -80,6 +103,11 @@ func main() {
if err != nil {
log.Fatal(err)
}
err = generateFromFile(templateItems, "cmd/d2data/d2data/items.json", "pkg/data/item/items.go", &map[string]itemDesc{})
if err != nil {
log.Fatal(err)
}
}
func generateFromFile(templateName, filePath, outPath string, unmarshallStruct interface{}) error {

View File

@@ -12,7 +12,6 @@ import (
"github.com/hectorgimenez/d2go/pkg/data"
"github.com/hectorgimenez/d2go/pkg/data/area"
"github.com/hectorgimenez/d2go/pkg/data/item"
"github.com/hectorgimenez/d2go/pkg/itemfilter"
"github.com/hectorgimenez/d2go/pkg/memory"
"github.com/hectorgimenez/d2go/pkg/nip"
)
@@ -55,9 +54,15 @@ func (w *Watcher) Start(ctx context.Context) error {
d := w.gr.GetData()
for _, i := range d.Items.ByLocation(item.LocationGround) {
_, match := itemfilter.Evaluate(i, w.rules)
if !match {
continue
for _, r := range w.rules {
match, err := r.Evaluate(i)
if err != nil {
log.Printf("error evaluating rule: %v", err)
continue
}
if !match {
continue
}
}
found := false