use std::time::Duration;
use super::{HelperReadWrite, ItemData, ItemId, PacketReadWrite};
use crate::fixed_types::{FixedString, FixedVec};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x01)]
#[Flags(Flags::PACKED)]
#[Magic(0xD93F, 0x5B)]
pub struct CollectionNameListPacket {
pub folders: Vec<CollectionFolderName>,
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x02)]
pub struct GetFolderItemListPacket {
pub folder_id: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x03)]
#[Flags(Flags::PACKED)]
#[Magic(0xE4BA, 0xF1)]
pub struct FolderItemListPacket {
pub items: Vec<CollectionFolderItem>,
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x05)]
#[Flags(Flags::PACKED)]
#[Magic(0xF035, 0x87)]
pub struct ActiveSheetsPacket {
pub items: Vec<CollectionFolderItem>,
pub progress: Vec<CollectionFolderProgress>,
pub unk1: u32,
pub unk2: u32,
pub unk3: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x06)]
pub struct ClaimSheetRequestPacket {
pub folder_id: u32,
pub reward_id: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x07)]
pub struct ClaimSheetResultPacket {
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x42, 0x0F)]
#[Flags(Flags::PACKED)]
#[Magic(0x299E, 0x76)]
pub struct ClaimSheetActionPacket {
pub action: String,
pub folder_name: String,
pub reward: String,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
pub struct CollectionFolderName {
pub folder_id: u32,
pub folder_name: FixedString<0x20>,
pub unk1: u32,
pub unk2: u32,
pub unk3: u16,
pub unk4: u16,
pub unk5: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Default, Debug, Clone, PartialEq, HelperReadWrite)]
pub struct CollectionFolderItem {
pub folder_id: u32,
pub reward_id: u32,
pub unk1: FixedVec<10, u16>,
pub target_item: ItemData,
pub required_items: FixedVec<8, CollectionReqItem>,
pub unk2: FixedVec<14, u16>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Default, Debug, Clone, PartialEq, HelperReadWrite)]
pub struct CollectionReqItem {
pub item_id: ItemId,
pub unk1: FixedVec<60, u16>,
pub unk2: FixedVec<52, u16>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Default, Debug, Clone, PartialEq, HelperReadWrite)]
pub struct CollectionFolderProgress {
pub folder_id: u32,
pub reward_id: u32,
pub unk: FixedVec<0x1B, u32>,
pub start_time: Duration,
}