1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2025-02-03 07:07:25 -05:00
OpenDiablo2/d2common/d2fileformats/d2pl2/pl2.go

56 lines
1.3 KiB
Go
Raw Normal View History

package d2pl2
import (
"encoding/binary"
"github.com/go-restruct/restruct"
)
2020-06-28 22:32:34 -04:00
// PL2 represents a palette file.
type PL2 struct {
BasePalette PL2Palette
LightLevelVariations [32]PL2PaletteTransform
InvColorVariations [16]PL2PaletteTransform
SelectedUintShift PL2PaletteTransform
AlphaBlend [3][256]PL2PaletteTransform
AdditiveBlend [256]PL2PaletteTransform
MultiplicativeBlend [256]PL2PaletteTransform
HueVariations [111]PL2PaletteTransform
RedTones PL2PaletteTransform
GreenTones PL2PaletteTransform
BlueTones PL2PaletteTransform
UnknownVariations [14]PL2PaletteTransform
MaxComponentBlend [256]PL2PaletteTransform
DarkendColorShift PL2PaletteTransform
TextColors [13]PL2Color24Bits
TextColorShifts [13]PL2PaletteTransform
}
2020-06-28 22:32:34 -04:00
// Load uses restruct to read the binary pl2 data into structs
func Load(data []byte) (*PL2, error) {
result := &PL2{}
restruct.EnableExprBeta()
err := restruct.Unpack(data, binary.LittleEndian, &result)
if err != nil {
return nil, err
}
return result, nil
}
2021-02-25 13:19:56 -05:00
2021-02-25 13:26:01 -05:00
// Marshal encodes PL2 back into byte slice
2021-02-25 13:19:56 -05:00
func (p *PL2) Marshal() []byte {
restruct.EnableExprBeta()
2021-02-25 13:26:01 -05:00
2021-02-25 13:19:56 -05:00
data, err := restruct.Pack(binary.LittleEndian, p)
if err != nil {
panic(err)
}
return data
}