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}