From 0e1b30b91a4180bef267341ac523a05402a6343e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bojan=20Novkovi=C4=87?= Date: Mon, 3 Aug 2020 03:27:33 +0200 Subject: [PATCH] Added loaders for compcodes.txt, events.txt and monai.txt (#665) * added loaders for compcodes.txt, events.txt and monai.txt * fixes in response to PR comments Co-authored-by: BojanoN --- d2common/d2data/d2datadict/component_codes.go | 34 +++++++++++++++++++ d2common/d2data/d2datadict/events.go | 32 +++++++++++++++++ d2common/d2data/d2datadict/monster_ai.go | 33 ++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 d2common/d2data/d2datadict/component_codes.go create mode 100644 d2common/d2data/d2datadict/events.go create mode 100644 d2common/d2data/d2datadict/monster_ai.go diff --git a/d2common/d2data/d2datadict/component_codes.go b/d2common/d2data/d2datadict/component_codes.go new file mode 100644 index 00000000..81576ee2 --- /dev/null +++ b/d2common/d2data/d2datadict/component_codes.go @@ -0,0 +1,34 @@ +package d2datadict + +import ( + "log" + + "github.com/OpenDiablo2/OpenDiablo2/d2common" +) + +type ComponentCodeRecord struct { + Component string + Code string +} + +var ComponentCodes map[string]*ComponentCodeRecord + +func LoadComponentCodes(file []byte) { + ComponentCodes = make(map[string]*ComponentCodeRecord) + + d := d2common.LoadDataDictionary(file) + for d.Next() { + record := &ComponentCodeRecord{ + Component: d.String("component"), + Code: d.String("code"), + } + ComponentCodes[record.Component] = record + } + + if d.Err != nil { + panic(d.Err) + } + + log.Printf("Loaded %d ComponentCode records", len(ComponentCodes)) + +} diff --git a/d2common/d2data/d2datadict/events.go b/d2common/d2data/d2datadict/events.go new file mode 100644 index 00000000..0d4d5748 --- /dev/null +++ b/d2common/d2data/d2datadict/events.go @@ -0,0 +1,32 @@ +package d2datadict + +import ( + "log" + + "github.com/OpenDiablo2/OpenDiablo2/d2common" +) + +type EventRecord struct { + Event string +} + +var Events map[string]*EventRecord + +func LoadEvents(file []byte) { + Events = make(map[string]*EventRecord) + + d := d2common.LoadDataDictionary(file) + for d.Next() { + record := &EventRecord{ + Event: d.String("event"), + } + Events[record.Event] = record + } + + if d.Err != nil { + panic(d.Err) + } + + log.Printf("Loaded %d Event records", len(Events)) + +} diff --git a/d2common/d2data/d2datadict/monster_ai.go b/d2common/d2data/d2datadict/monster_ai.go new file mode 100644 index 00000000..a0963265 --- /dev/null +++ b/d2common/d2data/d2datadict/monster_ai.go @@ -0,0 +1,33 @@ +package d2datadict + +import ( + "log" + + "github.com/OpenDiablo2/OpenDiablo2/d2common" +) + +// The monai.txt file is a lookup table for unit AI codes +type MonsterAIRecord struct { + AI string +} + +var MonsterAI map[string]*MonsterAIRecord + +func LoadMonsterAI(file []byte) { + MonsterAI = make(map[string]*MonsterAIRecord) + + d := d2common.LoadDataDictionary(file) + for d.Next() { + record := &MonsterAIRecord{ + AI: d.String("AI"), + } + MonsterAI[record.AI] = record + } + + if d.Err != nil { + panic(d.Err) + } + + log.Printf("Loaded %d MonsterAI records", len(MonsterAI)) + +}