fix Warehouse serialisation across versions

This commit is contained in:
wish
2024-02-20 21:04:29 +11:00
parent f51d65cf02
commit 9f19358c8b

View File

@@ -1,6 +1,9 @@
package mhfitem package mhfitem
import "erupe-ce/common/byteframe" import (
"erupe-ce/common/byteframe"
_config "erupe-ce/config"
)
type MHFItem struct { type MHFItem struct {
ItemID uint16 ItemID uint16
@@ -80,6 +83,7 @@ func ReadWarehouseEquipment(bf *byteframe.ByteFrame) MHFEquipment {
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
equipment.Decorations[i].ItemID = bf.ReadUint16() equipment.Decorations[i].ItemID = bf.ReadUint16()
} }
if _config.ErupeConfig.RealClientMode >= _config.G1 {
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ { for j := 0; j < 3; j++ {
equipment.Sigils[i].Effects[j].ID = bf.ReadUint16() equipment.Sigils[i].Effects[j].ID = bf.ReadUint16()
@@ -92,7 +96,10 @@ func ReadWarehouseEquipment(bf *byteframe.ByteFrame) MHFEquipment {
equipment.Sigils[i].Unk2 = bf.ReadUint8() equipment.Sigils[i].Unk2 = bf.ReadUint8()
equipment.Sigils[i].Unk3 = bf.ReadUint8() equipment.Sigils[i].Unk3 = bf.ReadUint8()
} }
}
if _config.ErupeConfig.RealClientMode >= _config.Z1 {
equipment.Unk1 = bf.ReadUint16() equipment.Unk1 = bf.ReadUint16()
}
return equipment return equipment
} }
@@ -106,6 +113,7 @@ func (e MHFEquipment) ToBytes() []byte {
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
bf.WriteUint16(e.Decorations[i].ItemID) bf.WriteUint16(e.Decorations[i].ItemID)
} }
if _config.ErupeConfig.RealClientMode >= _config.G1 {
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ { for j := 0; j < 3; j++ {
bf.WriteUint16(e.Sigils[i].Effects[j].ID) bf.WriteUint16(e.Sigils[i].Effects[j].ID)
@@ -118,7 +126,10 @@ func (e MHFEquipment) ToBytes() []byte {
bf.WriteUint8(e.Sigils[i].Unk2) bf.WriteUint8(e.Sigils[i].Unk2)
bf.WriteUint8(e.Sigils[i].Unk3) bf.WriteUint8(e.Sigils[i].Unk3)
} }
}
if _config.ErupeConfig.RealClientMode >= _config.Z1 {
bf.WriteUint16(e.Unk1) bf.WriteUint16(e.Unk1)
}
return bf.Data() return bf.Data()
} }