From 98539befe354b997706109253f01420f031db56d Mon Sep 17 00:00:00 2001 From: "M. Sz" Date: Thu, 4 Mar 2021 11:52:08 +0100 Subject: [PATCH] animation data: Add/Delete entry methods --- d2common/d2fileformats/d2animdata/animdata.go | 22 ++++++++++++++++ .../d2fileformats/d2animdata/animdata_test.go | 26 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/d2common/d2fileformats/d2animdata/animdata.go b/d2common/d2fileformats/d2animdata/animdata.go index 8a50f6c0..3129b5ac 100644 --- a/d2common/d2fileformats/d2animdata/animdata.go +++ b/d2common/d2fileformats/d2animdata/animdata.go @@ -92,6 +92,28 @@ func (ad *AnimationData) DeleteRecord(name string, recordIdx int) error { return nil } +func (ad *AnimationData) AddEntry(name string) error { + _, found := ad.entries[name] + if found { + return fmt.Errorf("entry of name %s already exist", name) + } + + ad.entries[name] = make([]*AnimationDataRecord, 0) + + return nil +} + +func (ad *AnimationData) DeleteEntry(name string) error { + _, found := ad.entries[name] + if !found { + return fmt.Errorf("entry named %s doesn't exist", name) + } + + delete(ad.entries, name) + + return nil +} + // Load loads the data into an AnimationData struct //nolint:gocognit,funlen // can't reduce func Load(data []byte) (*AnimationData, error) { diff --git a/d2common/d2fileformats/d2animdata/animdata_test.go b/d2common/d2fileformats/d2animdata/animdata_test.go index 9b414c7d..08ed60d0 100644 --- a/d2common/d2fileformats/d2animdata/animdata_test.go +++ b/d2common/d2fileformats/d2animdata/animdata_test.go @@ -256,3 +256,29 @@ func TestAnimationData_PushRecord(t *testing.T) { t.Fatal("unexpected name of new record was set") } } + +func TestAnimationData_AddEntry(t *testing.T) { + ad := &AnimationData{ + entries: make(map[string][]*AnimationDataRecord), + } + + ad.AddEntry("a") + + if _, found := ad.entries["a"]; !found { + t.Fatal("entry wasn't added") + } +} + +func TestAnimationData_DeleteEntry(t *testing.T) { + ad := &AnimationData{ + entries: map[string][]*AnimationDataRecord{ + "a": {{}, {}}, + }, + } + + ad.DeleteEntry("a") + + if _, found := ad.entries["a"]; found { + t.Fatal("Entry wasn't deleted") + } +}