1use std::collections::HashMap;
4
5use serde::{Serialize, Deserialize};
6
7#[derive(Clone, Debug, Deserialize, Serialize)]
9#[serde(deny_unknown_fields)]
10pub struct Map {
11 pub current_spectators: u64,
13 pub mode: Mode,
15 pub name: String,
17 pub num_matches_to_win_series: u64,
19 pub phase: Phase,
21 pub round: u64,
23 #[serde(default)]
25 pub round_wins: HashMap<u64, RoundWin>,
26 pub souvenirs_total: u64,
28 pub team_ct: Team,
30 pub team_t: Team,
32}
33
34#[derive(Clone, Debug, Deserialize, Serialize)]
36#[serde(rename_all = "lowercase")]
37pub enum Mode {
38 Competitive,
40 Casual,
42 Deathmatch,
44 Survival,
46 Training,
48 #[serde(rename = "gungametrbomb")]
50 Demolition,
51 #[serde(rename = "gungameprogressive")]
53 ArmsRace,
54 #[serde(rename = "scrimcomp2v2")]
56 Wingman,
57 Custom,
59}
60
61#[derive(Clone, Debug, Deserialize, Serialize)]
63#[serde(rename_all = "lowercase")]
64pub enum Phase {
65 Warmup,
67 Live,
69 Intermission,
71 GameOver,
73}
74
75pub type RoundWin = String;
79
80#[derive(Clone, Debug, Deserialize, Serialize)]
82#[serde(deny_unknown_fields)]
83pub struct Team {
84 pub score: u64,
86 pub consecutive_round_losses: u64,
88 pub timeouts_remaining: u64,
90 pub matches_won_this_series: u64,
92 pub name: Option<String>,
94 pub flag: Option<String>,
96}