1use serde::Deserialize;
2use std::collections::HashMap;
3
4#[derive(Deserialize, Debug, Clone)]
5pub struct TeamSubsection {
6 pub score: u16,
8 pub consecutive_round_losses: u16,
10 pub timeouts_remaining: u16,
12 pub matches_won_this_series: u16,
16 pub name: Option<String>,
18}
19
20#[derive(Deserialize, Debug, Clone)]
21#[serde(rename_all = "lowercase")]
22pub enum Phase {
23 Live,
24 Warmup,
25 Intermission,
26 GameOver,
27}
28
29#[derive(Deserialize, Debug, Clone)]
30#[serde(rename_all = "lowercase")]
31pub enum Mode {
32 Competitive,
33 Casual,
34 Deathmatch,
35 #[serde(rename = "scrimcomp2v2")]
36 Wingman,
37 #[serde(rename = "gungameprogressive")]
38 GunGame,
39 #[serde(rename = "gungametrbomb")]
40 Demolition,
41 Training,
42}
43
44#[derive(Deserialize, Debug, Clone)]
45#[serde(rename_all = "snake_case")]
46pub enum RoundWinCondition {
47 CtWinElimination,
49 CtWinDefuse,
51 CtWinTime,
53 TWinElimination,
55 TWinBomb,
57}
58
59#[derive(Deserialize, Debug, Clone)]
60pub struct Map {
61 pub mode: Mode,
63 pub name: String,
65 pub phase: Phase,
67 pub round: u32,
69 pub team_t: TeamSubsection,
71 pub team_ct: TeamSubsection,
73 pub num_matches_to_win_series: u16,
77 pub current_spectators: Option<u64>,
79 pub souvenirs_total: u64,
81 #[serde(default)]
83 pub round_wins: HashMap<u16, RoundWinCondition>, }