From b5e052fc81f762a14e8dcc17ccd545e275c1385b Mon Sep 17 00:00:00 2001 From: kottz Date: Sun, 11 Oct 2020 00:45:28 +0200 Subject: [PATCH] Add gamble.txt loader (#764) --- d2common/d2resource/resource_paths.go | 2 +- d2core/d2records/gamble_loader.go | 29 +++++++++++++++++++++++++++ d2core/d2records/gamble_record.go | 8 ++++++++ d2core/d2records/record_manager.go | 2 ++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 d2core/d2records/gamble_loader.go create mode 100644 d2core/d2records/gamble_record.go diff --git a/d2common/d2resource/resource_paths.go b/d2common/d2resource/resource_paths.go index 4a0921c3..412d7142 100644 --- a/d2common/d2resource/resource_paths.go +++ b/d2common/d2resource/resource_paths.go @@ -228,7 +228,7 @@ const ( ObjectGroup = "/data/global/excel/objgroup.txt" CompCode = "/data/global/excel/compcode.txt" Belts = "/data/global/excel/belts.txt" - + Gamble = "/data/global/excel/gamble.txt" // --- Animations --- diff --git a/d2core/d2records/gamble_loader.go b/d2core/d2records/gamble_loader.go new file mode 100644 index 00000000..fa789b34 --- /dev/null +++ b/d2core/d2records/gamble_loader.go @@ -0,0 +1,29 @@ +package d2records + +import ( + "log" + + "github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt" +) + +func gambleLoader(r *RecordManager, d *d2txt.DataDictionary) error { + records := make(Gamble) + + for d.Next() { + record := &GambleRecord{ + Name: d.String("name"), + Code: d.String("code"), + } + records[record.Name] = record + } + + if d.Err != nil { + return d.Err + } + + log.Printf("Loaded %d gamble records", len(records)) + + r.Gamble = records + + return nil +} diff --git a/d2core/d2records/gamble_record.go b/d2core/d2records/gamble_record.go new file mode 100644 index 00000000..6cfb3a12 --- /dev/null +++ b/d2core/d2records/gamble_record.go @@ -0,0 +1,8 @@ +package d2records + +type Gamble map[string]*GambleRecord + +type GambleRecord struct { + Name string + Code string +} diff --git a/d2core/d2records/record_manager.go b/d2core/d2records/record_manager.go index f77dedb8..6429e8c1 100644 --- a/d2core/d2records/record_manager.go +++ b/d2core/d2records/record_manager.go @@ -45,6 +45,7 @@ type RecordManager struct { ComponentCodes DifficultyLevels ElemTypes + Gamble Hirelings Item struct { All CommonItems // NOTE: populated when armor, weapons, and misc items are ALL loaded @@ -167,6 +168,7 @@ func (r *RecordManager) init() error { {d2resource.ItemRatio, itemRatioLoader}, {d2resource.Overlays, overlaysLoader}, {d2resource.CharStats, charStatsLoader}, + {d2resource.Gamble, gambleLoader}, {d2resource.Hireling, hirelingLoader}, {d2resource.Experience, experienceLoader}, {d2resource.Gems, gemsLoader},