1use crate::fixed_types::FixedVec;
3
4use super::{HelperReadWrite, PacketReadWrite};
5
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
18#[cfg_attr(feature = "serde", serde(default))]
19#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
20#[Id(0x21, 0x01)]
21pub struct LoadPalettePacket {
22 pub cur_palette: u32,
24 pub cur_subpalette: u32,
26 pub cur_book: u32,
28 pub palettes: [WeaponPalette; 6],
30 #[SeekAfter(0x240)] pub subpalettes: [SubPalette; 6],
33}
34
35#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
42#[cfg_attr(feature = "serde", serde(default))]
43#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
44#[Id(0x21, 0x03)]
45pub struct FullPaletteInfoPacket {
46 pub cur_palette: u32,
49 pub cur_subpalette: u32,
51 pub cur_book: u32,
53 pub palettes: [WeaponPalette; 6],
55 pub subpalettes: [SubPalette; 6],
57 #[Seek(0x240)] #[SeekAfter(0x240)] pub default_pa: FixedVec<0x1A0, u32>,
62}
63
64#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
72#[cfg_attr(feature = "serde", serde(default))]
73#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
74#[Id(0x21, 0x04)]
75pub struct SetPalettePacket {
76 pub palette: u32,
78 pub unk: u32,
79}
80
81#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
88#[cfg_attr(feature = "serde", serde(default))]
89#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
90#[Id(0x21, 0x05)]
91pub struct UpdateSubPalettePacket {
92 pub subpalettes: [SubPalette; 6],
94 pub unk: FixedVec<0x90, u32>,
95 pub cur_subpalette: u32,
97 pub cur_book: u32,
99}
100
101#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
108#[cfg_attr(feature = "serde", serde(default))]
109#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
110#[Id(0x21, 0x06)]
111pub struct UpdatePalettePacket {
112 pub cur_palette: u32,
114 pub palettes: [WeaponPalette; 6],
116}
117
118#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
122#[cfg_attr(feature = "serde", serde(default))]
123#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
124#[Id(0x21, 0x08)]
125pub struct SetSubPalettePacket {
126 pub subpalette: u32,
128}
129
130#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
136#[cfg_attr(feature = "serde", serde(default))]
137#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
138#[Id(0x21, 0x0A)]
139pub struct SetDefaultPAsPacket {
140 pub default: FixedVec<0x1A0, u32>,
141}
142
143#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
149#[cfg_attr(feature = "serde", serde(default))]
150#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
151#[Id(0x21, 0x0F)]
152pub struct NewDefaultPAsPacket {
153 #[SeekAfter(0x240)] pub default: FixedVec<0x1A0, u32>,
155}
156
157#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
163#[cfg_attr(feature = "serde", serde(default))]
164#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
165pub struct WeaponPalette {
166 pub uuid: u64,
168 pub unk1: u32,
169 pub unk2: PalettePA,
170 pub unk3: PalettePA,
171 pub unk4: PalettePA,
172 pub unk: [u32; 3],
173 pub pet_id: u32,
175 pub skills: [PalettePA; 6],
177}
178
179#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
181#[cfg_attr(feature = "serde", serde(default))]
182#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
183pub struct SubPalette {
184 pub items: [PalettePA; 12],
186}
187
188#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
190#[cfg_attr(feature = "serde", serde(default))]
191#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
192pub struct PalettePA {
193 pub id: u8,
195 pub category: u8,
197 pub unk: u8,
198 pub level: u8,
200}