More saves, launcher tweaks

Added config at char select screen
Transmog saving and loading (unlocks are not yet tackled and it is global rn)
Sigil saving (can break, initial pass of save)
Null compression and decompression functions.
First pass of the diff save function.
Disabled stamp cards
This commit is contained in:
SirFist
2020-02-27 23:42:46 +00:00
parent 2999fb14d6
commit 4f67e3de67
10 changed files with 418 additions and 147 deletions

View File

@@ -6,7 +6,9 @@ import (
)
// MsgMhfAddAchievement represents the MSG_MHF_ADD_ACHIEVEMENT
type MsgMhfAddAchievement struct{}
type MsgMhfAddAchievement struct{
Unk0 []byte
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfAddAchievement) Opcode() network.PacketID {
@@ -15,10 +17,12 @@ func (m *MsgMhfAddAchievement) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfAddAchievement) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.Unk0 = bf.ReadBytes(5)
// doesn't expect a response
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfAddAchievement) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -9,7 +9,7 @@ import (
type MsgMhfSaveHunterNavi struct {
AckHandle uint32
DataSize uint32
Unk0 bool
IsDataDiff bool
RawDataPayload []byte
}
@@ -22,7 +22,7 @@ func (m *MsgMhfSaveHunterNavi) Opcode() network.PacketID {
func (m *MsgMhfSaveHunterNavi) Parse(bf *byteframe.ByteFrame) error {
m.AckHandle = bf.ReadUint32()
m.DataSize = bf.ReadUint32()
m.Unk0 = bf.ReadBool()
m.IsDataDiff = bf.ReadBool()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
return nil
}

View File

@@ -6,7 +6,12 @@ import (
)
// MsgMhfSavePlateBox represents the MSG_MHF_SAVE_PLATE_BOX
type MsgMhfSavePlateBox struct{}
type MsgMhfSavePlateBox struct{
AckHandle uint32
DataSize uint32
IsDataDiff bool
RawDataPayload []byte
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfSavePlateBox) Opcode() network.PacketID {
@@ -15,10 +20,14 @@ func (m *MsgMhfSavePlateBox) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfSavePlateBox) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.DataSize = bf.ReadUint32()
m.IsDataDiff = bf.ReadBool()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfSavePlateBox) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,12 @@ import (
)
// MsgMhfSavePlateData represents the MSG_MHF_SAVE_PLATE_DATA
type MsgMhfSavePlateData struct{}
type MsgMhfSavePlateData struct{
AckHandle uint32
DataSize uint32
IsDataDiff bool
RawDataPayload []byte
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfSavePlateData) Opcode() network.PacketID {
@@ -15,10 +20,14 @@ func (m *MsgMhfSavePlateData) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfSavePlateData) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.DataSize = bf.ReadUint32()
m.IsDataDiff = bf.ReadBool()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfSavePlateData) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -9,7 +9,7 @@ import (
type MsgMhfSavedata struct {
AckHandle uint32
AllocMemSize uint32
Unk0 uint8 // Either 1 or 2, representing a true or false value for some reason.
SaveType uint8 // Either 1 or 2, representing a true or false value for some reason.
Unk1 uint32
DataSize uint32
RawDataPayload []byte
@@ -24,10 +24,14 @@ func (m *MsgMhfSavedata) Opcode() network.PacketID {
func (m *MsgMhfSavedata) Parse(bf *byteframe.ByteFrame) error {
m.AckHandle = bf.ReadUint32()
m.AllocMemSize = bf.ReadUint32()
m.Unk0 = bf.ReadUint8()
m.SaveType = bf.ReadUint8()
m.Unk1 = bf.ReadUint32()
m.DataSize = bf.ReadUint32()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
if m.SaveType == 1 {
m.RawDataPayload = bf.ReadBytes(uint(m.AllocMemSize))
} else if m.SaveType == 2 {
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
}
return nil
}

View File

@@ -6,7 +6,9 @@ import (
)
// MsgMhfUpdateEquipSkinHist represents the MSG_MHF_UPDATE_EQUIP_SKIN_HIST
type MsgMhfUpdateEquipSkinHist struct{}
type MsgMhfUpdateEquipSkinHist struct{
AckHandle uint32
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfUpdateEquipSkinHist) Opcode() network.PacketID {
@@ -15,10 +17,11 @@ func (m *MsgMhfUpdateEquipSkinHist) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfUpdateEquipSkinHist) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfUpdateEquipSkinHist) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}