1use crate::demo::data::{MaybeUtf8String, ServerTick};
3use crate::Stream;
4use bitbuffer::{BitRead, BitWrite, LittleEndian};
5use serde::{Deserialize, Serialize};
6
7#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
9pub struct FileMessage {
10 pub transfer_id: u32,
11 pub file_name: String,
12 pub requested: bool,
13}
14
15#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
17pub struct NetTickMessage {
18 pub tick: ServerTick,
19 pub frame_time: u16,
20 pub std_dev: u16,
21}
22
23#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
24#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
25pub struct StringCmdMessage {
26 pub command: String,
27}
28
29#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
30#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
31#[discriminant_bits = 8]
32pub enum SignOnState {
33 None = 0,
34 Challenge,
35 Connected,
36 New,
37 PreSpawn,
38 Spawn,
39 Full,
40 ChangeLevel,
41}
42
43#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
44#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
45pub struct SignOnStateMessage {
46 pub state: SignOnState,
47 pub count: u32,
48}
49
50#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
51#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
52pub struct PrintMessage {
53 pub value: MaybeUtf8String,
54}
55
56#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
57#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
58pub struct ServerInfoMessage {
59 pub version: u16,
60 pub server_count: u32,
61 pub stv: bool,
62 pub dedicated: bool,
63 pub max_crc: u32,
64 pub max_classes: u16,
65 pub map_hash: [u8; 16],
66 pub player_slot: u8,
67 pub max_player_count: u8,
68 pub interval_per_tick: f32,
69 #[size = 1]
70 pub platform: String,
71 pub game: String,
72 pub map: String,
73 pub skybox: String,
74 pub server_name: String,
75 pub replay: bool,
76}
77
78#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
79#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
80pub struct SetPauseMessage {
81 pub pause: bool,
82}
83
84#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
85#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
86pub struct SetViewMessage {
87 #[size = 11]
88 pub index: u16,
89}
90
91#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
92#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
93pub struct FixAngleMessage {
94 pub relative: bool,
95 pub x: u16,
96 pub y: u16,
97 pub z: u16,
98}
99
100#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
101#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
102#[endianness = "LittleEndian"]
103#[serde(bound(deserialize = "'a: 'static"))]
104pub struct EntityMessage<'a> {
105 #[size = 11]
106 pub index: u16,
107 #[size = 9]
108 pub class_id: u16,
109 #[size = 11]
110 pub length: u16,
111 #[size = "length"]
112 pub data: Stream<'a>,
113}
114
115#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
116#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
117pub struct PreFetchMessage {
118 #[size = 14]
119 pub index: u16,
120}
121
122#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
123#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
124#[endianness = "LittleEndian"]
125#[serde(bound(deserialize = "'a: 'static"))]
126pub struct MenuMessage<'a> {
127 pub kind: u16,
128 pub length: u16,
129 #[size = "length.saturating_mul(8)"]
130 pub index: Stream<'a>,
131}
132
133#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
134#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
135pub struct GetCvarValueMessage {
136 pub cookie: u32,
137 pub value: String,
138}
139
140#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
141#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
142#[endianness = "LittleEndian"]
143#[serde(bound(deserialize = "'a: 'static"))]
144pub struct CmdKeyValuesMessage<'a> {
145 pub length: u32,
146 #[size = "length.saturating_mul(8)"]
147 pub data: Stream<'a>,
148}