Skip to main content

cs2_gsi/model/
tournament.rs

1//! Phase-countdown and tournament-draft nodes.
2
3use super::helpers::{de_num_or_str, de_opt_num_or_str};
4use serde::{Deserialize, Serialize};
5
6/// Countdown for the current `phase` (freezetime, live, planted, …).
7#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
8pub struct PhaseCountdowns {
9    /// The phase the countdown applies to.
10    #[serde(default, rename = "phase")]
11    pub phase: String,
12    /// Remaining seconds until the phase ends. Stored as a string by CS2.
13    #[serde(default, deserialize_with = "de_num_or_str", rename = "phase_ends_in")]
14    pub phase_ends_in: f32,
15}
16
17/// Tournament draft / map veto data (only present in tournament-style modes).
18#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
19pub struct TournamentDraft {
20    /// Phase of the draft (`"map_veto"`, `"side_pick"`, …).
21    #[serde(default, rename = "state")]
22    pub state: String,
23    /// Tournament-side event id.
24    #[serde(default, deserialize_with = "de_opt_num_or_str", rename = "event_id")]
25    pub event_id: Option<u64>,
26    /// Tournament-side stage id.
27    #[serde(default, deserialize_with = "de_opt_num_or_str", rename = "stage_id")]
28    pub stage_id: Option<u64>,
29    /// Team id picking first.
30    #[serde(
31        default,
32        deserialize_with = "de_opt_num_or_str",
33        rename = "first_team_id"
34    )]
35    pub first_team_id: Option<u64>,
36    /// Team id picking second.
37    #[serde(
38        default,
39        deserialize_with = "de_opt_num_or_str",
40        rename = "second_team_id"
41    )]
42    pub second_team_id: Option<u64>,
43    /// Event display name.
44    #[serde(default, rename = "event")]
45    pub event: String,
46    /// Stage display name.
47    #[serde(default, rename = "stage")]
48    pub stage: String,
49    /// First team display name.
50    #[serde(default, rename = "first_team_name")]
51    pub first_team_name: String,
52    /// Second team display name.
53    #[serde(default, rename = "second_team_name")]
54    pub second_team_name: String,
55}