1#[derive(Debug, serde::Serialize)]
9pub enum OperatingSystem {
10 Windows,
11 Linux,
12}
13
14#[derive(serde::Deserialize, Debug)]
15pub struct MarkerResponse {
16 pub value: usize,
17}
18
19#[derive(serde::Deserialize, Debug)]
23#[serde(rename_all = "camelCase")]
24pub struct Tool {
25 pub name: String,
26 pub display_name: String,
27 pub version_number: String,
28 pub version_number_required: String,
29 pub changelog: Vec<ChangelogEntry>,
30}
31
32#[derive(serde::Deserialize, Debug)]
33#[serde(rename_all = "camelCase")]
34pub struct ChangelogEntry {
35 pub version_number: String,
36 pub date: String,
37 pub changes: Vec<Change>,
38}
39
40#[derive(serde::Deserialize, Debug)]
41#[serde(rename_all = "camelCase")]
42pub struct Change {
43 pub description: String,
44 pub sub_changes: Option<Vec<String>>,
45}
46
47#[derive(serde::Deserialize, Debug)]
48#[serde(rename_all = "camelCase")]
49pub struct DdstatsRustIntegration {
50 pub required_version: String,
51}
52
53#[derive(serde::Deserialize, Debug)]
57#[serde(rename_all = "camelCase")]
58pub struct SpawnsetFile {
59 pub max_display_waves: Option<i32>,
60 pub html_description: Option<String>,
61 pub last_updated: Option<String>,
62 pub spawnset_data: SpawnsetData,
63 pub name: String,
64 pub author_name: String,
65 pub has_custom_leaderboard: bool,
66 pub is_practice: bool,
67}
68
69#[derive(serde::Deserialize, Debug)]
70#[serde(rename_all = "camelCase")]
71pub struct SpawnsetData {
72 pub spawn_version: i32,
73 pub world_version: i32,
74 pub game_mode: GameMode,
75 pub non_loop_spawn_count: i32,
76 pub non_loop_length: Option<f64>,
77 pub loop_length: Option<f64>,
78 pub hand: Option<u8>,
79 pub additional_gems: Option<f64>,
80 pub time_start: Option<f64>,
81}
82
83#[derive(serde::Deserialize, Debug)]
84pub enum GameMode {
85 Default,
86 TimeAttack,
87}
88
89#[derive(serde::Deserialize, Debug)]
90#[serde(rename_all = "camelCase")]
91pub struct SpawnsetForDdcl {
92 pub spawnset_id: i32,
93 pub name: String,
94 pub author_name: String,
95 pub custom_leaderboard: Option<SpawnsetCustomLeaderboard>
96}
97
98#[derive(serde::Deserialize, Debug)]
99#[serde(rename_all = "camelCase")]
100pub struct SpawnsetCustomLeaderboard {
101 pub custom_leaderboard_id: i32,
102 pub custom_entries: Vec<SpawnsetCustomEntry>,
103}
104
105#[derive(serde::Deserialize, Debug)]
106#[serde(rename_all = "camelCase")]
107pub struct SpawnsetCustomEntry {
108 pub custom_entry_id: i32,
109 pub time: i32,
110 pub has_replay: bool,
111}
112
113#[derive(Debug, PartialEq, Eq, PartialOrd)]
114pub enum CustomLeaderboardDagger {
115 Pleb = 0,
116 Bronze,
117 Silver,
118 Gold,
119 Devil,
120 Leviathan
121}
122
123#[derive(serde::Deserialize, Debug)]
127#[serde(rename_all = "camelCase")]
128pub struct Leaderboard {
129 pub date_time: String,
130 pub players: i32,
131 pub time_global: i64,
132 pub kills_global: i64,
133 pub gems_global: i64,
134 pub deaths_global: i64,
135 pub daggers_hit_global: i64,
136 pub daggers_fired_global: i64,
137 pub entries: Vec<Entry>,
138}
139
140#[derive(serde::Deserialize, Debug)]
141#[serde(rename_all = "camelCase")]
142pub struct Entry {
143 pub rank: i32,
144 pub id: i32,
145 pub username: String,
146 pub time: f64,
147 pub kills: i32,
148 pub gems: i32,
149 pub death_type: u8,
150 pub daggers_hit: i32,
151 pub daggers_fired: i32,
152 pub time_total: f64,
153 pub kills_total: i64,
154 pub gems_total: i64,
155 pub deaths_total: i64,
156 pub daggers_hit_total: i64,
157 pub daggers_fired_total: i64,
158}
159