hotfix: cof encoder: coding weapon class

This commit is contained in:
M. Sz 2021-02-10 08:24:53 +01:00
parent 227bc9fcb1
commit 8a15c0b074
2 changed files with 15 additions and 9 deletions

View File

@ -121,7 +121,6 @@ func (c *COF) Unmarshal(fileData []byte) error {
layer.Transparent = b[layerTransparent] > 0
layer.DrawEffect = d2enum.DrawEffect(b[layerDrawEffect])
layer.weaponClassByte = b[layerWeaponClass:]
layer.WeaponClass = d2enum.WeaponClassFromString(strings.TrimSpace(strings.ReplaceAll(
string(b[layerWeaponClass:]), badCharacter, "")))
@ -193,7 +192,15 @@ func (c *COF) Marshal() []byte {
sw.PushBytes(byte(c.CofLayers[i].DrawEffect))
sw.PushBytes(c.CofLayers[i].weaponClassByte...)
s := c.CofLayers[i].WeaponClass.String()
for j := 0; j < 4; j++ {
if j < len(s) {
sw.PushBytes(s[j])
} else {
sw.PushBytes(0)
}
}
}
for _, i := range c.AnimationFrames {

View File

@ -4,11 +4,10 @@ import "github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
// CofLayer is a structure that represents a single layer in a COF file.
type CofLayer struct {
Type d2enum.CompositeType
Shadow byte
Selectable bool
Transparent bool
DrawEffect d2enum.DrawEffect
WeaponClass d2enum.WeaponClass
weaponClassByte []byte
Type d2enum.CompositeType
Shadow byte
Selectable bool
Transparent bool
DrawEffect d2enum.DrawEffect
WeaponClass d2enum.WeaponClass
}