Merge pull request #1076 from gucio321/data-encoder-dat

pl2 encoder + test
This commit is contained in:
gravestench 2021-02-26 11:27:03 -08:00 committed by GitHub
commit 23e93886d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 0 deletions

View File

@ -41,3 +41,15 @@ func Load(data []byte) (*PL2, error) {
return result, nil
}
// Marshal encodes PL2 back into byte slice
func (p *PL2) Marshal() []byte {
restruct.EnableExprBeta()
data, err := restruct.Pack(binary.LittleEndian, p)
if err != nil {
panic(err)
}
return data
}

View File

@ -0,0 +1,40 @@
package d2pl2
import (
"testing"
)
func exampleData() *PL2 {
result := &PL2{
BasePalette: PL2Palette{},
SelectedUintShift: PL2PaletteTransform{},
RedTones: PL2PaletteTransform{},
GreenTones: PL2PaletteTransform{},
BlueTones: PL2PaletteTransform{},
DarkendColorShift: PL2PaletteTransform{},
}
result.BasePalette.Colors[0].R = 8
result.DarkendColorShift.Indices[0] = 123
return result
}
func TestPL2_MarshalUnmarshal(t *testing.T) {
pl2 := exampleData()
data := pl2.Marshal()
newPL2, err := Load(data)
if err != nil {
t.Error(err)
}
if newPL2.BasePalette.Colors[0] != pl2.BasePalette.Colors[0] {
t.Fatal("unexpected length")
}
if pl2.DarkendColorShift.Indices[0] != newPL2.DarkendColorShift.Indices[0] {
t.Fatal("unexpected index set")
}
}