1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-11-05 09:47:18 -05:00
OpenDiablo2/d2common/d2fileformats/d2dat/dat.go

37 lines
663 B
Go
Raw Normal View History

package d2dat
2021-02-08 03:49:43 -05:00
import (
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
)
const (
// index offset helpers
b = iota
g
r
o
)
2020-06-28 22:32:34 -04:00
// Load loads a DAT file.
func Load(data []byte) (d2interface.Palette, error) {
palette := &DATPalette{}
for i := 0; i < 256; i++ {
// offsets look like i*3+n, where n is 0,1,2
palette.colors[i] = &DATColor{b: data[i*o+b], g: data[i*o+g], r: data[i*o+r]}
}
return palette, nil
}
2021-02-08 03:49:43 -05:00
2021-02-10 07:03:59 -05:00
// Marshal encodes data palette back into byte slice
2021-02-08 04:03:34 -05:00
func (p *DATPalette) Marshal() []byte {
result := make([]byte, len(p.colors))
2021-02-08 03:49:43 -05:00
2021-02-08 04:03:34 -05:00
for _, i := range &p.colors {
2021-02-08 03:49:43 -05:00
result = append(result, i.B(), i.G(), i.R())
}
return result
}