assembly_xml/obj/mis.rs
1//! ## Data for the [`Mission` component](https://docs.lu-dev.net/en/latest/components/084-mission.html)
2
3use serde::{Deserialize, Serialize};
4
5/// Data for the [`Mission` component](https://docs.lu-dev.net/en/latest/components/084-mission.html)
6#[derive(Default, Debug, PartialEq, Deserialize, Serialize)]
7pub struct Missions {
8 /// Completed missions
9 pub done: MissionList,
10 /// Currently active missions
11 #[serde(rename = "cur")]
12 pub current: MissionList,
13}
14
15#[derive(Default, Debug, PartialEq, Deserialize, Serialize)]
16/// A list of missions
17pub struct MissionList {
18 /// List of missions
19 #[serde(rename = "m")]
20 pub missions: Vec<Mission>,
21}
22
23/// A single mission
24#[derive(Default, Debug, PartialEq, Deserialize, Serialize)]
25pub struct Mission {
26 /// State of the mission
27 state: u8, // FIXME: DLU specific?
28
29 /// ID from the [`Missions` table](https://docs.lu-dev.net/en/latest/database/Missions.html)
30 id: u32,
31 /// Amount of times completed (Can be more than 1 for repeatable missions)
32 #[serde(default, rename = "cct")]
33 completion_count: u32,
34 /// Timestamp of last completion in seconds.
35 #[serde(rename = "cts")]
36 completion_time: Option<u64>,
37
38 #[serde(default, rename = "sv")]
39 /// For achievements like collecting flags, there is one of this that has the displayed
40 /// progress N, and N other <sv> elements that seem to have a bitflag in the id?
41 sub_value: Vec<MissionSubValue>,
42}
43
44/// Progress for a task
45#[derive(Default, Debug, PartialEq, Deserialize, Serialize)]
46pub struct MissionSubValue {
47 /// Value of the progress.
48 #[serde(rename = "v")]
49 value: u32,
50}