tf_demo_parser/demo/
gameevent_gen.rs

1use super::gamevent::{
2    EventValue, GameEventDefinition, GameEventEntry, GameEventValue, RawGameEvent,
3};
4use crate::demo::data::MaybeUtf8String;
5use crate::demo::Stream;
6use crate::{ParseError, Result};
7use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian};
8use serde::{Deserialize, Serialize};
9fn read_value<'a, T: EventValue + BitRead<'a, LittleEndian> + Default>(
10    stream: &mut Stream<'a>,
11    entry: Option<&GameEventEntry>,
12    name: &'static str,
13) -> Result<T> {
14    let entry = match entry {
15        Some(entry) => entry,
16        None => {
17            return Ok(T::default());
18        }
19    };
20    if T::value_type() != entry.kind {
21        return Err(ParseError::InvalidGameEvent {
22            expected_type: T::value_type(),
23            name,
24            found_type: entry.kind,
25        });
26    }
27    Ok(T::read(stream)?)
28}
29#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
30#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
31pub struct ServerSpawnEvent {
32    pub hostname: MaybeUtf8String,
33    pub address: MaybeUtf8String,
34    pub ip: u32,
35    pub port: u16,
36    pub game: MaybeUtf8String,
37    pub map_name: MaybeUtf8String,
38    pub max_players: u32,
39    pub os: MaybeUtf8String,
40    pub dedicated: bool,
41    pub password: bool,
42}
43impl ServerSpawnEvent {
44    #[allow(unused_variables)]
45    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
46        Ok(ServerSpawnEvent {
47            hostname: read_value::<MaybeUtf8String>(
48                stream,
49                definition.get_entry("hostname"),
50                "hostname",
51            )?,
52            address: read_value::<MaybeUtf8String>(
53                stream,
54                definition.get_entry("address"),
55                "address",
56            )?,
57            ip: read_value::<u32>(stream, definition.get_entry("ip"), "ip")?,
58            port: read_value::<u16>(stream, definition.get_entry("port"), "port")?,
59            game: read_value::<MaybeUtf8String>(stream, definition.get_entry("game"), "game")?,
60            map_name: read_value::<MaybeUtf8String>(
61                stream,
62                definition.get_entry("mapname"),
63                "map_name",
64            )?,
65            max_players: read_value::<u32>(
66                stream,
67                definition.get_entry("maxplayers"),
68                "max_players",
69            )?,
70            os: read_value::<MaybeUtf8String>(stream, definition.get_entry("os"), "os")?,
71            dedicated: read_value::<bool>(stream, definition.get_entry("dedicated"), "dedicated")?,
72            password: read_value::<bool>(stream, definition.get_entry("password"), "password")?,
73        })
74    }
75    #[allow(unused_variables)]
76    fn get_field(&self, field: &str) -> Result<GameEventValue> {
77        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
78        match field {
79            "hostname" => Ok(self.hostname.clone().into()),
80            "address" => Ok(self.address.clone().into()),
81            "ip" => Ok(self.ip.clone().into()),
82            "port" => Ok(self.port.clone().into()),
83            "game" => Ok(self.game.clone().into()),
84            "mapname" => Ok(self.map_name.clone().into()),
85            "maxplayers" => Ok(self.max_players.clone().into()),
86            "os" => Ok(self.os.clone().into()),
87            "dedicated" => Ok(self.dedicated.clone().into()),
88            "password" => Ok(self.password.clone().into()),
89            _ => Err(ParseError::MissingGameEventValue {
90                ty: "ServerSpawn",
91                field: field.into(),
92            }),
93        }
94    }
95    #[allow(unused_variables)]
96    fn write(
97        &self,
98        stream: &mut BitWriteStream<LittleEndian>,
99        definition: &GameEventDefinition,
100    ) -> Result<()> {
101        for entry in &definition.entries {
102            let value = self
103                .get_field(&entry.name)
104                .unwrap_or_else(|_| entry.kind.default_value());
105            stream.write(&value)?;
106        }
107        Ok(())
108    }
109}
110#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
111#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
112pub struct ServerChangeLevelFailedEvent {
113    pub level_name: MaybeUtf8String,
114}
115impl ServerChangeLevelFailedEvent {
116    #[allow(unused_variables)]
117    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
118        Ok(ServerChangeLevelFailedEvent {
119            level_name: read_value::<MaybeUtf8String>(
120                stream,
121                definition.get_entry("levelname"),
122                "level_name",
123            )?,
124        })
125    }
126    #[allow(unused_variables)]
127    fn get_field(&self, field: &str) -> Result<GameEventValue> {
128        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
129        match field {
130            "levelname" => Ok(self.level_name.clone().into()),
131            _ => Err(ParseError::MissingGameEventValue {
132                ty: "ServerChangeLevelFailed",
133                field: field.into(),
134            }),
135        }
136    }
137    #[allow(unused_variables)]
138    fn write(
139        &self,
140        stream: &mut BitWriteStream<LittleEndian>,
141        definition: &GameEventDefinition,
142    ) -> Result<()> {
143        for entry in &definition.entries {
144            let value = self
145                .get_field(&entry.name)
146                .unwrap_or_else(|_| entry.kind.default_value());
147            stream.write(&value)?;
148        }
149        Ok(())
150    }
151}
152#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
153#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
154pub struct ServerShutdownEvent {
155    pub reason: MaybeUtf8String,
156}
157impl ServerShutdownEvent {
158    #[allow(unused_variables)]
159    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
160        Ok(ServerShutdownEvent {
161            reason: read_value::<MaybeUtf8String>(
162                stream,
163                definition.get_entry("reason"),
164                "reason",
165            )?,
166        })
167    }
168    #[allow(unused_variables)]
169    fn get_field(&self, field: &str) -> Result<GameEventValue> {
170        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
171        match field {
172            "reason" => Ok(self.reason.clone().into()),
173            _ => Err(ParseError::MissingGameEventValue {
174                ty: "ServerShutdown",
175                field: field.into(),
176            }),
177        }
178    }
179    #[allow(unused_variables)]
180    fn write(
181        &self,
182        stream: &mut BitWriteStream<LittleEndian>,
183        definition: &GameEventDefinition,
184    ) -> Result<()> {
185        for entry in &definition.entries {
186            let value = self
187                .get_field(&entry.name)
188                .unwrap_or_else(|_| entry.kind.default_value());
189            stream.write(&value)?;
190        }
191        Ok(())
192    }
193}
194#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
195#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
196pub struct ServerCvarEvent {
197    pub cvar_name: MaybeUtf8String,
198    pub cvar_value: MaybeUtf8String,
199}
200impl ServerCvarEvent {
201    #[allow(unused_variables)]
202    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
203        Ok(ServerCvarEvent {
204            cvar_name: read_value::<MaybeUtf8String>(
205                stream,
206                definition.get_entry("cvarname"),
207                "cvar_name",
208            )?,
209            cvar_value: read_value::<MaybeUtf8String>(
210                stream,
211                definition.get_entry("cvarvalue"),
212                "cvar_value",
213            )?,
214        })
215    }
216    #[allow(unused_variables)]
217    fn get_field(&self, field: &str) -> Result<GameEventValue> {
218        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
219        match field {
220            "cvarname" => Ok(self.cvar_name.clone().into()),
221            "cvarvalue" => Ok(self.cvar_value.clone().into()),
222            _ => Err(ParseError::MissingGameEventValue {
223                ty: "ServerCvar",
224                field: field.into(),
225            }),
226        }
227    }
228    #[allow(unused_variables)]
229    fn write(
230        &self,
231        stream: &mut BitWriteStream<LittleEndian>,
232        definition: &GameEventDefinition,
233    ) -> Result<()> {
234        for entry in &definition.entries {
235            let value = self
236                .get_field(&entry.name)
237                .unwrap_or_else(|_| entry.kind.default_value());
238            stream.write(&value)?;
239        }
240        Ok(())
241    }
242}
243#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
244#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
245pub struct ServerMessageEvent {
246    pub text: MaybeUtf8String,
247}
248impl ServerMessageEvent {
249    #[allow(unused_variables)]
250    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
251        Ok(ServerMessageEvent {
252            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
253        })
254    }
255    #[allow(unused_variables)]
256    fn get_field(&self, field: &str) -> Result<GameEventValue> {
257        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
258        match field {
259            "text" => Ok(self.text.clone().into()),
260            _ => Err(ParseError::MissingGameEventValue {
261                ty: "ServerMessage",
262                field: field.into(),
263            }),
264        }
265    }
266    #[allow(unused_variables)]
267    fn write(
268        &self,
269        stream: &mut BitWriteStream<LittleEndian>,
270        definition: &GameEventDefinition,
271    ) -> Result<()> {
272        for entry in &definition.entries {
273            let value = self
274                .get_field(&entry.name)
275                .unwrap_or_else(|_| entry.kind.default_value());
276            stream.write(&value)?;
277        }
278        Ok(())
279    }
280}
281#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
282#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
283pub struct ServerAddBanEvent {
284    pub name: MaybeUtf8String,
285    pub user_id: u16,
286    pub network_id: MaybeUtf8String,
287    pub ip: MaybeUtf8String,
288    pub duration: MaybeUtf8String,
289    pub by: MaybeUtf8String,
290    pub kicked: bool,
291}
292impl ServerAddBanEvent {
293    #[allow(unused_variables)]
294    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
295        Ok(ServerAddBanEvent {
296            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
297            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
298            network_id: read_value::<MaybeUtf8String>(
299                stream,
300                definition.get_entry("networkid"),
301                "network_id",
302            )?,
303            ip: read_value::<MaybeUtf8String>(stream, definition.get_entry("ip"), "ip")?,
304            duration: read_value::<MaybeUtf8String>(
305                stream,
306                definition.get_entry("duration"),
307                "duration",
308            )?,
309            by: read_value::<MaybeUtf8String>(stream, definition.get_entry("by"), "by")?,
310            kicked: read_value::<bool>(stream, definition.get_entry("kicked"), "kicked")?,
311        })
312    }
313    #[allow(unused_variables)]
314    fn get_field(&self, field: &str) -> Result<GameEventValue> {
315        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
316        match field {
317            "name" => Ok(self.name.clone().into()),
318            "userid" => Ok(self.user_id.clone().into()),
319            "networkid" => Ok(self.network_id.clone().into()),
320            "ip" => Ok(self.ip.clone().into()),
321            "duration" => Ok(self.duration.clone().into()),
322            "by" => Ok(self.by.clone().into()),
323            "kicked" => Ok(self.kicked.clone().into()),
324            _ => Err(ParseError::MissingGameEventValue {
325                ty: "ServerAddBan",
326                field: field.into(),
327            }),
328        }
329    }
330    #[allow(unused_variables)]
331    fn write(
332        &self,
333        stream: &mut BitWriteStream<LittleEndian>,
334        definition: &GameEventDefinition,
335    ) -> Result<()> {
336        for entry in &definition.entries {
337            let value = self
338                .get_field(&entry.name)
339                .unwrap_or_else(|_| entry.kind.default_value());
340            stream.write(&value)?;
341        }
342        Ok(())
343    }
344}
345#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
346#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
347pub struct ServerRemoveBanEvent {
348    pub network_id: MaybeUtf8String,
349    pub ip: MaybeUtf8String,
350    pub by: MaybeUtf8String,
351}
352impl ServerRemoveBanEvent {
353    #[allow(unused_variables)]
354    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
355        Ok(ServerRemoveBanEvent {
356            network_id: read_value::<MaybeUtf8String>(
357                stream,
358                definition.get_entry("networkid"),
359                "network_id",
360            )?,
361            ip: read_value::<MaybeUtf8String>(stream, definition.get_entry("ip"), "ip")?,
362            by: read_value::<MaybeUtf8String>(stream, definition.get_entry("by"), "by")?,
363        })
364    }
365    #[allow(unused_variables)]
366    fn get_field(&self, field: &str) -> Result<GameEventValue> {
367        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
368        match field {
369            "networkid" => Ok(self.network_id.clone().into()),
370            "ip" => Ok(self.ip.clone().into()),
371            "by" => Ok(self.by.clone().into()),
372            _ => Err(ParseError::MissingGameEventValue {
373                ty: "ServerRemoveBan",
374                field: field.into(),
375            }),
376        }
377    }
378    #[allow(unused_variables)]
379    fn write(
380        &self,
381        stream: &mut BitWriteStream<LittleEndian>,
382        definition: &GameEventDefinition,
383    ) -> Result<()> {
384        for entry in &definition.entries {
385            let value = self
386                .get_field(&entry.name)
387                .unwrap_or_else(|_| entry.kind.default_value());
388            stream.write(&value)?;
389        }
390        Ok(())
391    }
392}
393#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
394#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
395pub struct PlayerConnectEvent {
396    pub name: MaybeUtf8String,
397    pub index: u8,
398    pub user_id: u16,
399    pub network_id: MaybeUtf8String,
400    pub address: MaybeUtf8String,
401    pub bot: u16,
402}
403impl PlayerConnectEvent {
404    #[allow(unused_variables)]
405    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
406        Ok(PlayerConnectEvent {
407            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
408            index: read_value::<u8>(stream, definition.get_entry("index"), "index")?,
409            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
410            network_id: read_value::<MaybeUtf8String>(
411                stream,
412                definition.get_entry("networkid"),
413                "network_id",
414            )?,
415            address: read_value::<MaybeUtf8String>(
416                stream,
417                definition.get_entry("address"),
418                "address",
419            )?,
420            bot: read_value::<u16>(stream, definition.get_entry("bot"), "bot")?,
421        })
422    }
423    #[allow(unused_variables)]
424    fn get_field(&self, field: &str) -> Result<GameEventValue> {
425        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
426        match field {
427            "name" => Ok(self.name.clone().into()),
428            "index" => Ok(self.index.clone().into()),
429            "userid" => Ok(self.user_id.clone().into()),
430            "networkid" => Ok(self.network_id.clone().into()),
431            "address" => Ok(self.address.clone().into()),
432            "bot" => Ok(self.bot.clone().into()),
433            _ => Err(ParseError::MissingGameEventValue {
434                ty: "PlayerConnect",
435                field: field.into(),
436            }),
437        }
438    }
439    #[allow(unused_variables)]
440    fn write(
441        &self,
442        stream: &mut BitWriteStream<LittleEndian>,
443        definition: &GameEventDefinition,
444    ) -> Result<()> {
445        for entry in &definition.entries {
446            let value = self
447                .get_field(&entry.name)
448                .unwrap_or_else(|_| entry.kind.default_value());
449            stream.write(&value)?;
450        }
451        Ok(())
452    }
453}
454#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
455#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
456pub struct PlayerConnectClientEvent {
457    pub name: MaybeUtf8String,
458    pub index: u8,
459    pub user_id: u16,
460    pub network_id: MaybeUtf8String,
461    pub bot: u16,
462}
463impl PlayerConnectClientEvent {
464    #[allow(unused_variables)]
465    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
466        Ok(PlayerConnectClientEvent {
467            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
468            index: read_value::<u8>(stream, definition.get_entry("index"), "index")?,
469            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
470            network_id: read_value::<MaybeUtf8String>(
471                stream,
472                definition.get_entry("networkid"),
473                "network_id",
474            )?,
475            bot: read_value::<u16>(stream, definition.get_entry("bot"), "bot")?,
476        })
477    }
478    #[allow(unused_variables)]
479    fn get_field(&self, field: &str) -> Result<GameEventValue> {
480        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
481        match field {
482            "name" => Ok(self.name.clone().into()),
483            "index" => Ok(self.index.clone().into()),
484            "userid" => Ok(self.user_id.clone().into()),
485            "networkid" => Ok(self.network_id.clone().into()),
486            "bot" => Ok(self.bot.clone().into()),
487            _ => Err(ParseError::MissingGameEventValue {
488                ty: "PlayerConnectClient",
489                field: field.into(),
490            }),
491        }
492    }
493    #[allow(unused_variables)]
494    fn write(
495        &self,
496        stream: &mut BitWriteStream<LittleEndian>,
497        definition: &GameEventDefinition,
498    ) -> Result<()> {
499        for entry in &definition.entries {
500            let value = self
501                .get_field(&entry.name)
502                .unwrap_or_else(|_| entry.kind.default_value());
503            stream.write(&value)?;
504        }
505        Ok(())
506    }
507}
508#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
509#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
510pub struct PlayerInfoEvent {
511    pub name: MaybeUtf8String,
512    pub index: u8,
513    pub user_id: u16,
514    pub network_id: MaybeUtf8String,
515    pub bot: bool,
516}
517impl PlayerInfoEvent {
518    #[allow(unused_variables)]
519    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
520        Ok(PlayerInfoEvent {
521            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
522            index: read_value::<u8>(stream, definition.get_entry("index"), "index")?,
523            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
524            network_id: read_value::<MaybeUtf8String>(
525                stream,
526                definition.get_entry("networkid"),
527                "network_id",
528            )?,
529            bot: read_value::<bool>(stream, definition.get_entry("bot"), "bot")?,
530        })
531    }
532    #[allow(unused_variables)]
533    fn get_field(&self, field: &str) -> Result<GameEventValue> {
534        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
535        match field {
536            "name" => Ok(self.name.clone().into()),
537            "index" => Ok(self.index.clone().into()),
538            "userid" => Ok(self.user_id.clone().into()),
539            "networkid" => Ok(self.network_id.clone().into()),
540            "bot" => Ok(self.bot.clone().into()),
541            _ => Err(ParseError::MissingGameEventValue {
542                ty: "PlayerInfo",
543                field: field.into(),
544            }),
545        }
546    }
547    #[allow(unused_variables)]
548    fn write(
549        &self,
550        stream: &mut BitWriteStream<LittleEndian>,
551        definition: &GameEventDefinition,
552    ) -> Result<()> {
553        for entry in &definition.entries {
554            let value = self
555                .get_field(&entry.name)
556                .unwrap_or_else(|_| entry.kind.default_value());
557            stream.write(&value)?;
558        }
559        Ok(())
560    }
561}
562#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
563#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
564pub struct PlayerDisconnectEvent {
565    pub user_id: u16,
566    pub reason: MaybeUtf8String,
567    pub name: MaybeUtf8String,
568    pub network_id: MaybeUtf8String,
569    pub bot: u16,
570}
571impl PlayerDisconnectEvent {
572    #[allow(unused_variables)]
573    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
574        Ok(PlayerDisconnectEvent {
575            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
576            reason: read_value::<MaybeUtf8String>(
577                stream,
578                definition.get_entry("reason"),
579                "reason",
580            )?,
581            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
582            network_id: read_value::<MaybeUtf8String>(
583                stream,
584                definition.get_entry("networkid"),
585                "network_id",
586            )?,
587            bot: read_value::<u16>(stream, definition.get_entry("bot"), "bot")?,
588        })
589    }
590    #[allow(unused_variables)]
591    fn get_field(&self, field: &str) -> Result<GameEventValue> {
592        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
593        match field {
594            "userid" => Ok(self.user_id.clone().into()),
595            "reason" => Ok(self.reason.clone().into()),
596            "name" => Ok(self.name.clone().into()),
597            "networkid" => Ok(self.network_id.clone().into()),
598            "bot" => Ok(self.bot.clone().into()),
599            _ => Err(ParseError::MissingGameEventValue {
600                ty: "PlayerDisconnect",
601                field: field.into(),
602            }),
603        }
604    }
605    #[allow(unused_variables)]
606    fn write(
607        &self,
608        stream: &mut BitWriteStream<LittleEndian>,
609        definition: &GameEventDefinition,
610    ) -> Result<()> {
611        for entry in &definition.entries {
612            let value = self
613                .get_field(&entry.name)
614                .unwrap_or_else(|_| entry.kind.default_value());
615            stream.write(&value)?;
616        }
617        Ok(())
618    }
619}
620#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
621#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
622pub struct PlayerActivateEvent {
623    pub user_id: u16,
624}
625impl PlayerActivateEvent {
626    #[allow(unused_variables)]
627    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
628        Ok(PlayerActivateEvent {
629            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
630        })
631    }
632    #[allow(unused_variables)]
633    fn get_field(&self, field: &str) -> Result<GameEventValue> {
634        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
635        match field {
636            "userid" => Ok(self.user_id.clone().into()),
637            _ => Err(ParseError::MissingGameEventValue {
638                ty: "PlayerActivate",
639                field: field.into(),
640            }),
641        }
642    }
643    #[allow(unused_variables)]
644    fn write(
645        &self,
646        stream: &mut BitWriteStream<LittleEndian>,
647        definition: &GameEventDefinition,
648    ) -> Result<()> {
649        for entry in &definition.entries {
650            let value = self
651                .get_field(&entry.name)
652                .unwrap_or_else(|_| entry.kind.default_value());
653            stream.write(&value)?;
654        }
655        Ok(())
656    }
657}
658#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
659#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
660pub struct PlayerSayEvent {
661    pub user_id: u16,
662    pub text: MaybeUtf8String,
663}
664impl PlayerSayEvent {
665    #[allow(unused_variables)]
666    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
667        Ok(PlayerSayEvent {
668            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
669            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
670        })
671    }
672    #[allow(unused_variables)]
673    fn get_field(&self, field: &str) -> Result<GameEventValue> {
674        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
675        match field {
676            "userid" => Ok(self.user_id.clone().into()),
677            "text" => Ok(self.text.clone().into()),
678            _ => Err(ParseError::MissingGameEventValue {
679                ty: "PlayerSay",
680                field: field.into(),
681            }),
682        }
683    }
684    #[allow(unused_variables)]
685    fn write(
686        &self,
687        stream: &mut BitWriteStream<LittleEndian>,
688        definition: &GameEventDefinition,
689    ) -> Result<()> {
690        for entry in &definition.entries {
691            let value = self
692                .get_field(&entry.name)
693                .unwrap_or_else(|_| entry.kind.default_value());
694            stream.write(&value)?;
695        }
696        Ok(())
697    }
698}
699#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
700#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
701pub struct ClientDisconnectEvent {
702    pub message: MaybeUtf8String,
703}
704impl ClientDisconnectEvent {
705    #[allow(unused_variables)]
706    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
707        Ok(ClientDisconnectEvent {
708            message: read_value::<MaybeUtf8String>(
709                stream,
710                definition.get_entry("message"),
711                "message",
712            )?,
713        })
714    }
715    #[allow(unused_variables)]
716    fn get_field(&self, field: &str) -> Result<GameEventValue> {
717        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
718        match field {
719            "message" => Ok(self.message.clone().into()),
720            _ => Err(ParseError::MissingGameEventValue {
721                ty: "ClientDisconnect",
722                field: field.into(),
723            }),
724        }
725    }
726    #[allow(unused_variables)]
727    fn write(
728        &self,
729        stream: &mut BitWriteStream<LittleEndian>,
730        definition: &GameEventDefinition,
731    ) -> Result<()> {
732        for entry in &definition.entries {
733            let value = self
734                .get_field(&entry.name)
735                .unwrap_or_else(|_| entry.kind.default_value());
736            stream.write(&value)?;
737        }
738        Ok(())
739    }
740}
741#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
742#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
743pub struct ClientBeginConnectEvent {
744    pub address: MaybeUtf8String,
745    pub ip: u32,
746    pub port: u16,
747    pub source: MaybeUtf8String,
748}
749impl ClientBeginConnectEvent {
750    #[allow(unused_variables)]
751    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
752        Ok(ClientBeginConnectEvent {
753            address: read_value::<MaybeUtf8String>(
754                stream,
755                definition.get_entry("address"),
756                "address",
757            )?,
758            ip: read_value::<u32>(stream, definition.get_entry("ip"), "ip")?,
759            port: read_value::<u16>(stream, definition.get_entry("port"), "port")?,
760            source: read_value::<MaybeUtf8String>(
761                stream,
762                definition.get_entry("source"),
763                "source",
764            )?,
765        })
766    }
767    #[allow(unused_variables)]
768    fn get_field(&self, field: &str) -> Result<GameEventValue> {
769        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
770        match field {
771            "address" => Ok(self.address.clone().into()),
772            "ip" => Ok(self.ip.clone().into()),
773            "port" => Ok(self.port.clone().into()),
774            "source" => Ok(self.source.clone().into()),
775            _ => Err(ParseError::MissingGameEventValue {
776                ty: "ClientBeginConnect",
777                field: field.into(),
778            }),
779        }
780    }
781    #[allow(unused_variables)]
782    fn write(
783        &self,
784        stream: &mut BitWriteStream<LittleEndian>,
785        definition: &GameEventDefinition,
786    ) -> Result<()> {
787        for entry in &definition.entries {
788            let value = self
789                .get_field(&entry.name)
790                .unwrap_or_else(|_| entry.kind.default_value());
791            stream.write(&value)?;
792        }
793        Ok(())
794    }
795}
796#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
797#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
798pub struct ClientConnectedEvent {
799    pub address: MaybeUtf8String,
800    pub ip: u32,
801    pub port: u16,
802}
803impl ClientConnectedEvent {
804    #[allow(unused_variables)]
805    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
806        Ok(ClientConnectedEvent {
807            address: read_value::<MaybeUtf8String>(
808                stream,
809                definition.get_entry("address"),
810                "address",
811            )?,
812            ip: read_value::<u32>(stream, definition.get_entry("ip"), "ip")?,
813            port: read_value::<u16>(stream, definition.get_entry("port"), "port")?,
814        })
815    }
816    #[allow(unused_variables)]
817    fn get_field(&self, field: &str) -> Result<GameEventValue> {
818        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
819        match field {
820            "address" => Ok(self.address.clone().into()),
821            "ip" => Ok(self.ip.clone().into()),
822            "port" => Ok(self.port.clone().into()),
823            _ => Err(ParseError::MissingGameEventValue {
824                ty: "ClientConnected",
825                field: field.into(),
826            }),
827        }
828    }
829    #[allow(unused_variables)]
830    fn write(
831        &self,
832        stream: &mut BitWriteStream<LittleEndian>,
833        definition: &GameEventDefinition,
834    ) -> Result<()> {
835        for entry in &definition.entries {
836            let value = self
837                .get_field(&entry.name)
838                .unwrap_or_else(|_| entry.kind.default_value());
839            stream.write(&value)?;
840        }
841        Ok(())
842    }
843}
844#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
845#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
846pub struct ClientFullConnectEvent {
847    pub address: MaybeUtf8String,
848    pub ip: u32,
849    pub port: u16,
850}
851impl ClientFullConnectEvent {
852    #[allow(unused_variables)]
853    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
854        Ok(ClientFullConnectEvent {
855            address: read_value::<MaybeUtf8String>(
856                stream,
857                definition.get_entry("address"),
858                "address",
859            )?,
860            ip: read_value::<u32>(stream, definition.get_entry("ip"), "ip")?,
861            port: read_value::<u16>(stream, definition.get_entry("port"), "port")?,
862        })
863    }
864    #[allow(unused_variables)]
865    fn get_field(&self, field: &str) -> Result<GameEventValue> {
866        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
867        match field {
868            "address" => Ok(self.address.clone().into()),
869            "ip" => Ok(self.ip.clone().into()),
870            "port" => Ok(self.port.clone().into()),
871            _ => Err(ParseError::MissingGameEventValue {
872                ty: "ClientFullConnect",
873                field: field.into(),
874            }),
875        }
876    }
877    #[allow(unused_variables)]
878    fn write(
879        &self,
880        stream: &mut BitWriteStream<LittleEndian>,
881        definition: &GameEventDefinition,
882    ) -> Result<()> {
883        for entry in &definition.entries {
884            let value = self
885                .get_field(&entry.name)
886                .unwrap_or_else(|_| entry.kind.default_value());
887            stream.write(&value)?;
888        }
889        Ok(())
890    }
891}
892#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
893#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
894pub struct HostQuitEvent {}
895impl HostQuitEvent {
896    #[allow(unused_variables)]
897    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
898        Ok(HostQuitEvent {})
899    }
900    #[allow(unused_variables)]
901    fn get_field(&self, field: &str) -> Result<GameEventValue> {
902        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
903        match field {
904            _ => Err(ParseError::MissingGameEventValue {
905                ty: "HostQuit",
906                field: field.into(),
907            }),
908        }
909    }
910    #[allow(unused_variables)]
911    fn write(
912        &self,
913        stream: &mut BitWriteStream<LittleEndian>,
914        definition: &GameEventDefinition,
915    ) -> Result<()> {
916        for entry in &definition.entries {
917            let value = self
918                .get_field(&entry.name)
919                .unwrap_or_else(|_| entry.kind.default_value());
920            stream.write(&value)?;
921        }
922        Ok(())
923    }
924}
925#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
926#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
927pub struct TeamInfoEvent {
928    pub team_id: u8,
929    pub team_name: MaybeUtf8String,
930}
931impl TeamInfoEvent {
932    #[allow(unused_variables)]
933    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
934        Ok(TeamInfoEvent {
935            team_id: read_value::<u8>(stream, definition.get_entry("teamid"), "team_id")?,
936            team_name: read_value::<MaybeUtf8String>(
937                stream,
938                definition.get_entry("teamname"),
939                "team_name",
940            )?,
941        })
942    }
943    #[allow(unused_variables)]
944    fn get_field(&self, field: &str) -> Result<GameEventValue> {
945        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
946        match field {
947            "teamid" => Ok(self.team_id.clone().into()),
948            "teamname" => Ok(self.team_name.clone().into()),
949            _ => Err(ParseError::MissingGameEventValue {
950                ty: "TeamInfo",
951                field: field.into(),
952            }),
953        }
954    }
955    #[allow(unused_variables)]
956    fn write(
957        &self,
958        stream: &mut BitWriteStream<LittleEndian>,
959        definition: &GameEventDefinition,
960    ) -> Result<()> {
961        for entry in &definition.entries {
962            let value = self
963                .get_field(&entry.name)
964                .unwrap_or_else(|_| entry.kind.default_value());
965            stream.write(&value)?;
966        }
967        Ok(())
968    }
969}
970#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
971#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
972pub struct TeamScoreEvent {
973    pub team_id: u8,
974    pub score: u16,
975}
976impl TeamScoreEvent {
977    #[allow(unused_variables)]
978    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
979        Ok(TeamScoreEvent {
980            team_id: read_value::<u8>(stream, definition.get_entry("teamid"), "team_id")?,
981            score: read_value::<u16>(stream, definition.get_entry("score"), "score")?,
982        })
983    }
984    #[allow(unused_variables)]
985    fn get_field(&self, field: &str) -> Result<GameEventValue> {
986        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
987        match field {
988            "teamid" => Ok(self.team_id.clone().into()),
989            "score" => Ok(self.score.clone().into()),
990            _ => Err(ParseError::MissingGameEventValue {
991                ty: "TeamScore",
992                field: field.into(),
993            }),
994        }
995    }
996    #[allow(unused_variables)]
997    fn write(
998        &self,
999        stream: &mut BitWriteStream<LittleEndian>,
1000        definition: &GameEventDefinition,
1001    ) -> Result<()> {
1002        for entry in &definition.entries {
1003            let value = self
1004                .get_field(&entry.name)
1005                .unwrap_or_else(|_| entry.kind.default_value());
1006            stream.write(&value)?;
1007        }
1008        Ok(())
1009    }
1010}
1011#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1012#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1013pub struct TeamPlayBroadcastAudioEvent {
1014    pub team: u8,
1015    pub sound: MaybeUtf8String,
1016    pub additional_flags: u16,
1017    pub player: u16,
1018}
1019impl TeamPlayBroadcastAudioEvent {
1020    #[allow(unused_variables)]
1021    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1022        Ok(TeamPlayBroadcastAudioEvent {
1023            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
1024            sound: read_value::<MaybeUtf8String>(stream, definition.get_entry("sound"), "sound")?,
1025            additional_flags: read_value::<u16>(
1026                stream,
1027                definition.get_entry("additional_flags"),
1028                "additional_flags",
1029            )?,
1030            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
1031        })
1032    }
1033    #[allow(unused_variables)]
1034    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1035        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1036        match field {
1037            "team" => Ok(self.team.clone().into()),
1038            "sound" => Ok(self.sound.clone().into()),
1039            "additional_flags" => Ok(self.additional_flags.clone().into()),
1040            "player" => Ok(self.player.clone().into()),
1041            _ => Err(ParseError::MissingGameEventValue {
1042                ty: "TeamPlayBroadcastAudio",
1043                field: field.into(),
1044            }),
1045        }
1046    }
1047    #[allow(unused_variables)]
1048    fn write(
1049        &self,
1050        stream: &mut BitWriteStream<LittleEndian>,
1051        definition: &GameEventDefinition,
1052    ) -> Result<()> {
1053        for entry in &definition.entries {
1054            let value = self
1055                .get_field(&entry.name)
1056                .unwrap_or_else(|_| entry.kind.default_value());
1057            stream.write(&value)?;
1058        }
1059        Ok(())
1060    }
1061}
1062#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1063#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1064pub struct PlayerTeamEvent {
1065    pub user_id: u16,
1066    pub team: u8,
1067    pub old_team: u8,
1068    pub disconnect: bool,
1069    pub auto_team: bool,
1070    pub silent: bool,
1071    pub name: MaybeUtf8String,
1072}
1073impl PlayerTeamEvent {
1074    #[allow(unused_variables)]
1075    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1076        Ok(PlayerTeamEvent {
1077            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1078            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
1079            old_team: read_value::<u8>(stream, definition.get_entry("oldteam"), "old_team")?,
1080            disconnect: read_value::<bool>(
1081                stream,
1082                definition.get_entry("disconnect"),
1083                "disconnect",
1084            )?,
1085            auto_team: read_value::<bool>(stream, definition.get_entry("autoteam"), "auto_team")?,
1086            silent: read_value::<bool>(stream, definition.get_entry("silent"), "silent")?,
1087            name: read_value::<MaybeUtf8String>(stream, definition.get_entry("name"), "name")?,
1088        })
1089    }
1090    #[allow(unused_variables)]
1091    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1092        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1093        match field {
1094            "userid" => Ok(self.user_id.clone().into()),
1095            "team" => Ok(self.team.clone().into()),
1096            "oldteam" => Ok(self.old_team.clone().into()),
1097            "disconnect" => Ok(self.disconnect.clone().into()),
1098            "autoteam" => Ok(self.auto_team.clone().into()),
1099            "silent" => Ok(self.silent.clone().into()),
1100            "name" => Ok(self.name.clone().into()),
1101            _ => Err(ParseError::MissingGameEventValue {
1102                ty: "PlayerTeam",
1103                field: field.into(),
1104            }),
1105        }
1106    }
1107    #[allow(unused_variables)]
1108    fn write(
1109        &self,
1110        stream: &mut BitWriteStream<LittleEndian>,
1111        definition: &GameEventDefinition,
1112    ) -> Result<()> {
1113        for entry in &definition.entries {
1114            let value = self
1115                .get_field(&entry.name)
1116                .unwrap_or_else(|_| entry.kind.default_value());
1117            stream.write(&value)?;
1118        }
1119        Ok(())
1120    }
1121}
1122#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1123#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1124pub struct PlayerClassEvent {
1125    pub user_id: u16,
1126    pub class: MaybeUtf8String,
1127}
1128impl PlayerClassEvent {
1129    #[allow(unused_variables)]
1130    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1131        Ok(PlayerClassEvent {
1132            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1133            class: read_value::<MaybeUtf8String>(stream, definition.get_entry("class"), "class")?,
1134        })
1135    }
1136    #[allow(unused_variables)]
1137    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1138        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1139        match field {
1140            "userid" => Ok(self.user_id.clone().into()),
1141            "class" => Ok(self.class.clone().into()),
1142            _ => Err(ParseError::MissingGameEventValue {
1143                ty: "PlayerClass",
1144                field: field.into(),
1145            }),
1146        }
1147    }
1148    #[allow(unused_variables)]
1149    fn write(
1150        &self,
1151        stream: &mut BitWriteStream<LittleEndian>,
1152        definition: &GameEventDefinition,
1153    ) -> Result<()> {
1154        for entry in &definition.entries {
1155            let value = self
1156                .get_field(&entry.name)
1157                .unwrap_or_else(|_| entry.kind.default_value());
1158            stream.write(&value)?;
1159        }
1160        Ok(())
1161    }
1162}
1163#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1164#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1165pub struct PlayerDeathEvent {
1166    pub user_id: u16,
1167    pub victim_ent_index: u32,
1168    pub inflictor_ent_index: u32,
1169    pub attacker: u16,
1170    pub weapon: MaybeUtf8String,
1171    pub weapon_id: u16,
1172    pub damage_bits: u32,
1173    pub custom_kill: u16,
1174    pub assister: u16,
1175    pub weapon_log_class_name: MaybeUtf8String,
1176    pub stun_flags: u16,
1177    pub death_flags: u16,
1178    pub silent_kill: bool,
1179    pub player_penetrate_count: u16,
1180    pub assister_fallback: MaybeUtf8String,
1181    pub kill_streak_total: u16,
1182    pub kill_streak_wep: u16,
1183    pub kill_streak_assist: u16,
1184    pub kill_streak_victim: u16,
1185    pub ducks_streaked: u16,
1186    pub duck_streak_total: u16,
1187    pub duck_streak_assist: u16,
1188    pub duck_streak_victim: u16,
1189    pub rocket_jump: bool,
1190    pub weapon_def_index: u32,
1191    pub crit_type: u16,
1192}
1193impl PlayerDeathEvent {
1194    #[allow(unused_variables)]
1195    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1196        Ok(PlayerDeathEvent {
1197            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1198            victim_ent_index: read_value::<u32>(
1199                stream,
1200                definition.get_entry("victim_entindex"),
1201                "victim_ent_index",
1202            )?,
1203            inflictor_ent_index: read_value::<u32>(
1204                stream,
1205                definition.get_entry("inflictor_entindex"),
1206                "inflictor_ent_index",
1207            )?,
1208            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
1209            weapon: read_value::<MaybeUtf8String>(
1210                stream,
1211                definition.get_entry("weapon"),
1212                "weapon",
1213            )?,
1214            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
1215            damage_bits: read_value::<u32>(
1216                stream,
1217                definition.get_entry("damagebits"),
1218                "damage_bits",
1219            )?,
1220            custom_kill: read_value::<u16>(
1221                stream,
1222                definition.get_entry("customkill"),
1223                "custom_kill",
1224            )?,
1225            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
1226            weapon_log_class_name: read_value::<MaybeUtf8String>(
1227                stream,
1228                definition.get_entry("weapon_logclassname"),
1229                "weapon_log_class_name",
1230            )?,
1231            stun_flags: read_value::<u16>(
1232                stream,
1233                definition.get_entry("stun_flags"),
1234                "stun_flags",
1235            )?,
1236            death_flags: read_value::<u16>(
1237                stream,
1238                definition.get_entry("death_flags"),
1239                "death_flags",
1240            )?,
1241            silent_kill: read_value::<bool>(
1242                stream,
1243                definition.get_entry("silent_kill"),
1244                "silent_kill",
1245            )?,
1246            player_penetrate_count: read_value::<u16>(
1247                stream,
1248                definition.get_entry("playerpenetratecount"),
1249                "player_penetrate_count",
1250            )?,
1251            assister_fallback: read_value::<MaybeUtf8String>(
1252                stream,
1253                definition.get_entry("assister_fallback"),
1254                "assister_fallback",
1255            )?,
1256            kill_streak_total: read_value::<u16>(
1257                stream,
1258                definition.get_entry("kill_streak_total"),
1259                "kill_streak_total",
1260            )?,
1261            kill_streak_wep: read_value::<u16>(
1262                stream,
1263                definition.get_entry("kill_streak_wep"),
1264                "kill_streak_wep",
1265            )?,
1266            kill_streak_assist: read_value::<u16>(
1267                stream,
1268                definition.get_entry("kill_streak_assist"),
1269                "kill_streak_assist",
1270            )?,
1271            kill_streak_victim: read_value::<u16>(
1272                stream,
1273                definition.get_entry("kill_streak_victim"),
1274                "kill_streak_victim",
1275            )?,
1276            ducks_streaked: read_value::<u16>(
1277                stream,
1278                definition.get_entry("ducks_streaked"),
1279                "ducks_streaked",
1280            )?,
1281            duck_streak_total: read_value::<u16>(
1282                stream,
1283                definition.get_entry("duck_streak_total"),
1284                "duck_streak_total",
1285            )?,
1286            duck_streak_assist: read_value::<u16>(
1287                stream,
1288                definition.get_entry("duck_streak_assist"),
1289                "duck_streak_assist",
1290            )?,
1291            duck_streak_victim: read_value::<u16>(
1292                stream,
1293                definition.get_entry("duck_streak_victim"),
1294                "duck_streak_victim",
1295            )?,
1296            rocket_jump: read_value::<bool>(
1297                stream,
1298                definition.get_entry("rocket_jump"),
1299                "rocket_jump",
1300            )?,
1301            weapon_def_index: read_value::<u32>(
1302                stream,
1303                definition.get_entry("weapon_def_index"),
1304                "weapon_def_index",
1305            )?,
1306            crit_type: read_value::<u16>(stream, definition.get_entry("crit_type"), "crit_type")?,
1307        })
1308    }
1309    #[allow(unused_variables)]
1310    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1311        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1312        match field {
1313            "userid" => Ok(self.user_id.clone().into()),
1314            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
1315            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
1316            "attacker" => Ok(self.attacker.clone().into()),
1317            "weapon" => Ok(self.weapon.clone().into()),
1318            "weaponid" => Ok(self.weapon_id.clone().into()),
1319            "damagebits" => Ok(self.damage_bits.clone().into()),
1320            "customkill" => Ok(self.custom_kill.clone().into()),
1321            "assister" => Ok(self.assister.clone().into()),
1322            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
1323            "stun_flags" => Ok(self.stun_flags.clone().into()),
1324            "death_flags" => Ok(self.death_flags.clone().into()),
1325            "silent_kill" => Ok(self.silent_kill.clone().into()),
1326            "playerpenetratecount" => Ok(self.player_penetrate_count.clone().into()),
1327            "assister_fallback" => Ok(self.assister_fallback.clone().into()),
1328            "kill_streak_total" => Ok(self.kill_streak_total.clone().into()),
1329            "kill_streak_wep" => Ok(self.kill_streak_wep.clone().into()),
1330            "kill_streak_assist" => Ok(self.kill_streak_assist.clone().into()),
1331            "kill_streak_victim" => Ok(self.kill_streak_victim.clone().into()),
1332            "ducks_streaked" => Ok(self.ducks_streaked.clone().into()),
1333            "duck_streak_total" => Ok(self.duck_streak_total.clone().into()),
1334            "duck_streak_assist" => Ok(self.duck_streak_assist.clone().into()),
1335            "duck_streak_victim" => Ok(self.duck_streak_victim.clone().into()),
1336            "rocket_jump" => Ok(self.rocket_jump.clone().into()),
1337            "weapon_def_index" => Ok(self.weapon_def_index.clone().into()),
1338            "crit_type" => Ok(self.crit_type.clone().into()),
1339            _ => Err(ParseError::MissingGameEventValue {
1340                ty: "PlayerDeath",
1341                field: field.into(),
1342            }),
1343        }
1344    }
1345    #[allow(unused_variables)]
1346    fn write(
1347        &self,
1348        stream: &mut BitWriteStream<LittleEndian>,
1349        definition: &GameEventDefinition,
1350    ) -> Result<()> {
1351        for entry in &definition.entries {
1352            let value = self
1353                .get_field(&entry.name)
1354                .unwrap_or_else(|_| entry.kind.default_value());
1355            stream.write(&value)?;
1356        }
1357        Ok(())
1358    }
1359}
1360#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1361#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1362pub struct PlayerHurtEvent {
1363    pub user_id: u16,
1364    pub health: u16,
1365    pub attacker: u16,
1366    pub damage_amount: u16,
1367    pub custom: u16,
1368    pub show_disguised_crit: bool,
1369    pub crit: bool,
1370    pub mini_crit: bool,
1371    pub all_see_crit: bool,
1372    pub weapon_id: u16,
1373    pub bonus_effect: u8,
1374}
1375impl PlayerHurtEvent {
1376    #[allow(unused_variables)]
1377    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1378        Ok(PlayerHurtEvent {
1379            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1380            health: read_value::<u16>(stream, definition.get_entry("health"), "health")?,
1381            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
1382            damage_amount: read_value::<u16>(
1383                stream,
1384                definition.get_entry("damageamount"),
1385                "damage_amount",
1386            )?,
1387            custom: read_value::<u16>(stream, definition.get_entry("custom"), "custom")?,
1388            show_disguised_crit: read_value::<bool>(
1389                stream,
1390                definition.get_entry("showdisguisedcrit"),
1391                "show_disguised_crit",
1392            )?,
1393            crit: read_value::<bool>(stream, definition.get_entry("crit"), "crit")?,
1394            mini_crit: read_value::<bool>(stream, definition.get_entry("minicrit"), "mini_crit")?,
1395            all_see_crit: read_value::<bool>(
1396                stream,
1397                definition.get_entry("allseecrit"),
1398                "all_see_crit",
1399            )?,
1400            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
1401            bonus_effect: read_value::<u8>(
1402                stream,
1403                definition.get_entry("bonuseffect"),
1404                "bonus_effect",
1405            )?,
1406        })
1407    }
1408    #[allow(unused_variables)]
1409    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1410        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1411        match field {
1412            "userid" => Ok(self.user_id.clone().into()),
1413            "health" => Ok(self.health.clone().into()),
1414            "attacker" => Ok(self.attacker.clone().into()),
1415            "damageamount" => Ok(self.damage_amount.clone().into()),
1416            "custom" => Ok(self.custom.clone().into()),
1417            "showdisguisedcrit" => Ok(self.show_disguised_crit.clone().into()),
1418            "crit" => Ok(self.crit.clone().into()),
1419            "minicrit" => Ok(self.mini_crit.clone().into()),
1420            "allseecrit" => Ok(self.all_see_crit.clone().into()),
1421            "weaponid" => Ok(self.weapon_id.clone().into()),
1422            "bonuseffect" => Ok(self.bonus_effect.clone().into()),
1423            _ => Err(ParseError::MissingGameEventValue {
1424                ty: "PlayerHurt",
1425                field: field.into(),
1426            }),
1427        }
1428    }
1429    #[allow(unused_variables)]
1430    fn write(
1431        &self,
1432        stream: &mut BitWriteStream<LittleEndian>,
1433        definition: &GameEventDefinition,
1434    ) -> Result<()> {
1435        for entry in &definition.entries {
1436            let value = self
1437                .get_field(&entry.name)
1438                .unwrap_or_else(|_| entry.kind.default_value());
1439            stream.write(&value)?;
1440        }
1441        Ok(())
1442    }
1443}
1444#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1445#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1446pub struct PlayerChatEvent {
1447    pub team_only: bool,
1448    pub user_id: u16,
1449    pub text: MaybeUtf8String,
1450}
1451impl PlayerChatEvent {
1452    #[allow(unused_variables)]
1453    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1454        Ok(PlayerChatEvent {
1455            team_only: read_value::<bool>(stream, definition.get_entry("teamonly"), "team_only")?,
1456            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1457            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
1458        })
1459    }
1460    #[allow(unused_variables)]
1461    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1462        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1463        match field {
1464            "teamonly" => Ok(self.team_only.clone().into()),
1465            "userid" => Ok(self.user_id.clone().into()),
1466            "text" => Ok(self.text.clone().into()),
1467            _ => Err(ParseError::MissingGameEventValue {
1468                ty: "PlayerChat",
1469                field: field.into(),
1470            }),
1471        }
1472    }
1473    #[allow(unused_variables)]
1474    fn write(
1475        &self,
1476        stream: &mut BitWriteStream<LittleEndian>,
1477        definition: &GameEventDefinition,
1478    ) -> Result<()> {
1479        for entry in &definition.entries {
1480            let value = self
1481                .get_field(&entry.name)
1482                .unwrap_or_else(|_| entry.kind.default_value());
1483            stream.write(&value)?;
1484        }
1485        Ok(())
1486    }
1487}
1488#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1489#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1490pub struct PlayerScoreEvent {
1491    pub user_id: u16,
1492    pub kills: u16,
1493    pub deaths: u16,
1494    pub score: u16,
1495}
1496impl PlayerScoreEvent {
1497    #[allow(unused_variables)]
1498    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1499        Ok(PlayerScoreEvent {
1500            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1501            kills: read_value::<u16>(stream, definition.get_entry("kills"), "kills")?,
1502            deaths: read_value::<u16>(stream, definition.get_entry("deaths"), "deaths")?,
1503            score: read_value::<u16>(stream, definition.get_entry("score"), "score")?,
1504        })
1505    }
1506    #[allow(unused_variables)]
1507    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1508        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1509        match field {
1510            "userid" => Ok(self.user_id.clone().into()),
1511            "kills" => Ok(self.kills.clone().into()),
1512            "deaths" => Ok(self.deaths.clone().into()),
1513            "score" => Ok(self.score.clone().into()),
1514            _ => Err(ParseError::MissingGameEventValue {
1515                ty: "PlayerScore",
1516                field: field.into(),
1517            }),
1518        }
1519    }
1520    #[allow(unused_variables)]
1521    fn write(
1522        &self,
1523        stream: &mut BitWriteStream<LittleEndian>,
1524        definition: &GameEventDefinition,
1525    ) -> Result<()> {
1526        for entry in &definition.entries {
1527            let value = self
1528                .get_field(&entry.name)
1529                .unwrap_or_else(|_| entry.kind.default_value());
1530            stream.write(&value)?;
1531        }
1532        Ok(())
1533    }
1534}
1535#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1536#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1537pub struct PlayerSpawnEvent {
1538    pub user_id: u16,
1539    pub team: u16,
1540    pub class: u16,
1541}
1542impl PlayerSpawnEvent {
1543    #[allow(unused_variables)]
1544    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1545        Ok(PlayerSpawnEvent {
1546            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1547            team: read_value::<u16>(stream, definition.get_entry("team"), "team")?,
1548            class: read_value::<u16>(stream, definition.get_entry("class"), "class")?,
1549        })
1550    }
1551    #[allow(unused_variables)]
1552    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1553        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1554        match field {
1555            "userid" => Ok(self.user_id.clone().into()),
1556            "team" => Ok(self.team.clone().into()),
1557            "class" => Ok(self.class.clone().into()),
1558            _ => Err(ParseError::MissingGameEventValue {
1559                ty: "PlayerSpawn",
1560                field: field.into(),
1561            }),
1562        }
1563    }
1564    #[allow(unused_variables)]
1565    fn write(
1566        &self,
1567        stream: &mut BitWriteStream<LittleEndian>,
1568        definition: &GameEventDefinition,
1569    ) -> Result<()> {
1570        for entry in &definition.entries {
1571            let value = self
1572                .get_field(&entry.name)
1573                .unwrap_or_else(|_| entry.kind.default_value());
1574            stream.write(&value)?;
1575        }
1576        Ok(())
1577    }
1578}
1579#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1580#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1581pub struct PlayerShootEvent {
1582    pub user_id: u16,
1583    pub weapon: u8,
1584    pub mode: u8,
1585}
1586impl PlayerShootEvent {
1587    #[allow(unused_variables)]
1588    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1589        Ok(PlayerShootEvent {
1590            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1591            weapon: read_value::<u8>(stream, definition.get_entry("weapon"), "weapon")?,
1592            mode: read_value::<u8>(stream, definition.get_entry("mode"), "mode")?,
1593        })
1594    }
1595    #[allow(unused_variables)]
1596    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1597        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1598        match field {
1599            "userid" => Ok(self.user_id.clone().into()),
1600            "weapon" => Ok(self.weapon.clone().into()),
1601            "mode" => Ok(self.mode.clone().into()),
1602            _ => Err(ParseError::MissingGameEventValue {
1603                ty: "PlayerShoot",
1604                field: field.into(),
1605            }),
1606        }
1607    }
1608    #[allow(unused_variables)]
1609    fn write(
1610        &self,
1611        stream: &mut BitWriteStream<LittleEndian>,
1612        definition: &GameEventDefinition,
1613    ) -> Result<()> {
1614        for entry in &definition.entries {
1615            let value = self
1616                .get_field(&entry.name)
1617                .unwrap_or_else(|_| entry.kind.default_value());
1618            stream.write(&value)?;
1619        }
1620        Ok(())
1621    }
1622}
1623#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1624#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1625pub struct PlayerUseEvent {
1626    pub user_id: u16,
1627    pub entity: u16,
1628}
1629impl PlayerUseEvent {
1630    #[allow(unused_variables)]
1631    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1632        Ok(PlayerUseEvent {
1633            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1634            entity: read_value::<u16>(stream, definition.get_entry("entity"), "entity")?,
1635        })
1636    }
1637    #[allow(unused_variables)]
1638    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1639        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1640        match field {
1641            "userid" => Ok(self.user_id.clone().into()),
1642            "entity" => Ok(self.entity.clone().into()),
1643            _ => Err(ParseError::MissingGameEventValue {
1644                ty: "PlayerUse",
1645                field: field.into(),
1646            }),
1647        }
1648    }
1649    #[allow(unused_variables)]
1650    fn write(
1651        &self,
1652        stream: &mut BitWriteStream<LittleEndian>,
1653        definition: &GameEventDefinition,
1654    ) -> Result<()> {
1655        for entry in &definition.entries {
1656            let value = self
1657                .get_field(&entry.name)
1658                .unwrap_or_else(|_| entry.kind.default_value());
1659            stream.write(&value)?;
1660        }
1661        Ok(())
1662    }
1663}
1664#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1665#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1666pub struct PlayerChangeNameEvent {
1667    pub user_id: u16,
1668    pub old_name: MaybeUtf8String,
1669    pub new_name: MaybeUtf8String,
1670}
1671impl PlayerChangeNameEvent {
1672    #[allow(unused_variables)]
1673    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1674        Ok(PlayerChangeNameEvent {
1675            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
1676            old_name: read_value::<MaybeUtf8String>(
1677                stream,
1678                definition.get_entry("oldname"),
1679                "old_name",
1680            )?,
1681            new_name: read_value::<MaybeUtf8String>(
1682                stream,
1683                definition.get_entry("newname"),
1684                "new_name",
1685            )?,
1686        })
1687    }
1688    #[allow(unused_variables)]
1689    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1690        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1691        match field {
1692            "userid" => Ok(self.user_id.clone().into()),
1693            "oldname" => Ok(self.old_name.clone().into()),
1694            "newname" => Ok(self.new_name.clone().into()),
1695            _ => Err(ParseError::MissingGameEventValue {
1696                ty: "PlayerChangeName",
1697                field: field.into(),
1698            }),
1699        }
1700    }
1701    #[allow(unused_variables)]
1702    fn write(
1703        &self,
1704        stream: &mut BitWriteStream<LittleEndian>,
1705        definition: &GameEventDefinition,
1706    ) -> Result<()> {
1707        for entry in &definition.entries {
1708            let value = self
1709                .get_field(&entry.name)
1710                .unwrap_or_else(|_| entry.kind.default_value());
1711            stream.write(&value)?;
1712        }
1713        Ok(())
1714    }
1715}
1716#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1717#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1718pub struct PlayerHintMessageEvent {
1719    pub hint_message: MaybeUtf8String,
1720}
1721impl PlayerHintMessageEvent {
1722    #[allow(unused_variables)]
1723    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1724        Ok(PlayerHintMessageEvent {
1725            hint_message: read_value::<MaybeUtf8String>(
1726                stream,
1727                definition.get_entry("hintmessage"),
1728                "hint_message",
1729            )?,
1730        })
1731    }
1732    #[allow(unused_variables)]
1733    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1734        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1735        match field {
1736            "hintmessage" => Ok(self.hint_message.clone().into()),
1737            _ => Err(ParseError::MissingGameEventValue {
1738                ty: "PlayerHintMessage",
1739                field: field.into(),
1740            }),
1741        }
1742    }
1743    #[allow(unused_variables)]
1744    fn write(
1745        &self,
1746        stream: &mut BitWriteStream<LittleEndian>,
1747        definition: &GameEventDefinition,
1748    ) -> Result<()> {
1749        for entry in &definition.entries {
1750            let value = self
1751                .get_field(&entry.name)
1752                .unwrap_or_else(|_| entry.kind.default_value());
1753            stream.write(&value)?;
1754        }
1755        Ok(())
1756    }
1757}
1758#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1759#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1760pub struct BasePlayerTeleportedEvent {
1761    pub ent_index: u16,
1762}
1763impl BasePlayerTeleportedEvent {
1764    #[allow(unused_variables)]
1765    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1766        Ok(BasePlayerTeleportedEvent {
1767            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
1768        })
1769    }
1770    #[allow(unused_variables)]
1771    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1772        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1773        match field {
1774            "entindex" => Ok(self.ent_index.clone().into()),
1775            _ => Err(ParseError::MissingGameEventValue {
1776                ty: "BasePlayerTeleported",
1777                field: field.into(),
1778            }),
1779        }
1780    }
1781    #[allow(unused_variables)]
1782    fn write(
1783        &self,
1784        stream: &mut BitWriteStream<LittleEndian>,
1785        definition: &GameEventDefinition,
1786    ) -> Result<()> {
1787        for entry in &definition.entries {
1788            let value = self
1789                .get_field(&entry.name)
1790                .unwrap_or_else(|_| entry.kind.default_value());
1791            stream.write(&value)?;
1792        }
1793        Ok(())
1794    }
1795}
1796#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1797#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1798pub struct GameInitEvent {}
1799impl GameInitEvent {
1800    #[allow(unused_variables)]
1801    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1802        Ok(GameInitEvent {})
1803    }
1804    #[allow(unused_variables)]
1805    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1806        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1807        match field {
1808            _ => Err(ParseError::MissingGameEventValue {
1809                ty: "GameInit",
1810                field: field.into(),
1811            }),
1812        }
1813    }
1814    #[allow(unused_variables)]
1815    fn write(
1816        &self,
1817        stream: &mut BitWriteStream<LittleEndian>,
1818        definition: &GameEventDefinition,
1819    ) -> Result<()> {
1820        for entry in &definition.entries {
1821            let value = self
1822                .get_field(&entry.name)
1823                .unwrap_or_else(|_| entry.kind.default_value());
1824            stream.write(&value)?;
1825        }
1826        Ok(())
1827    }
1828}
1829#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1830#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1831pub struct GameNewMapEvent {
1832    pub map_name: MaybeUtf8String,
1833}
1834impl GameNewMapEvent {
1835    #[allow(unused_variables)]
1836    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1837        Ok(GameNewMapEvent {
1838            map_name: read_value::<MaybeUtf8String>(
1839                stream,
1840                definition.get_entry("mapname"),
1841                "map_name",
1842            )?,
1843        })
1844    }
1845    #[allow(unused_variables)]
1846    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1847        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1848        match field {
1849            "mapname" => Ok(self.map_name.clone().into()),
1850            _ => Err(ParseError::MissingGameEventValue {
1851                ty: "GameNewMap",
1852                field: field.into(),
1853            }),
1854        }
1855    }
1856    #[allow(unused_variables)]
1857    fn write(
1858        &self,
1859        stream: &mut BitWriteStream<LittleEndian>,
1860        definition: &GameEventDefinition,
1861    ) -> Result<()> {
1862        for entry in &definition.entries {
1863            let value = self
1864                .get_field(&entry.name)
1865                .unwrap_or_else(|_| entry.kind.default_value());
1866            stream.write(&value)?;
1867        }
1868        Ok(())
1869    }
1870}
1871#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1872#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1873pub struct GameStartEvent {
1874    pub rounds_limit: u32,
1875    pub time_limit: u32,
1876    pub frag_limit: u32,
1877    pub objective: MaybeUtf8String,
1878}
1879impl GameStartEvent {
1880    #[allow(unused_variables)]
1881    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1882        Ok(GameStartEvent {
1883            rounds_limit: read_value::<u32>(
1884                stream,
1885                definition.get_entry("roundslimit"),
1886                "rounds_limit",
1887            )?,
1888            time_limit: read_value::<u32>(stream, definition.get_entry("timelimit"), "time_limit")?,
1889            frag_limit: read_value::<u32>(stream, definition.get_entry("fraglimit"), "frag_limit")?,
1890            objective: read_value::<MaybeUtf8String>(
1891                stream,
1892                definition.get_entry("objective"),
1893                "objective",
1894            )?,
1895        })
1896    }
1897    #[allow(unused_variables)]
1898    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1899        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1900        match field {
1901            "roundslimit" => Ok(self.rounds_limit.clone().into()),
1902            "timelimit" => Ok(self.time_limit.clone().into()),
1903            "fraglimit" => Ok(self.frag_limit.clone().into()),
1904            "objective" => Ok(self.objective.clone().into()),
1905            _ => Err(ParseError::MissingGameEventValue {
1906                ty: "GameStart",
1907                field: field.into(),
1908            }),
1909        }
1910    }
1911    #[allow(unused_variables)]
1912    fn write(
1913        &self,
1914        stream: &mut BitWriteStream<LittleEndian>,
1915        definition: &GameEventDefinition,
1916    ) -> Result<()> {
1917        for entry in &definition.entries {
1918            let value = self
1919                .get_field(&entry.name)
1920                .unwrap_or_else(|_| entry.kind.default_value());
1921            stream.write(&value)?;
1922        }
1923        Ok(())
1924    }
1925}
1926#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1927#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1928pub struct GameEndEvent {
1929    pub winner: u8,
1930}
1931impl GameEndEvent {
1932    #[allow(unused_variables)]
1933    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1934        Ok(GameEndEvent {
1935            winner: read_value::<u8>(stream, definition.get_entry("winner"), "winner")?,
1936        })
1937    }
1938    #[allow(unused_variables)]
1939    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1940        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1941        match field {
1942            "winner" => Ok(self.winner.clone().into()),
1943            _ => Err(ParseError::MissingGameEventValue {
1944                ty: "GameEnd",
1945                field: field.into(),
1946            }),
1947        }
1948    }
1949    #[allow(unused_variables)]
1950    fn write(
1951        &self,
1952        stream: &mut BitWriteStream<LittleEndian>,
1953        definition: &GameEventDefinition,
1954    ) -> Result<()> {
1955        for entry in &definition.entries {
1956            let value = self
1957                .get_field(&entry.name)
1958                .unwrap_or_else(|_| entry.kind.default_value());
1959            stream.write(&value)?;
1960        }
1961        Ok(())
1962    }
1963}
1964#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
1965#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
1966pub struct RoundStartEvent {
1967    pub time_limit: u32,
1968    pub frag_limit: u32,
1969    pub objective: MaybeUtf8String,
1970}
1971impl RoundStartEvent {
1972    #[allow(unused_variables)]
1973    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
1974        Ok(RoundStartEvent {
1975            time_limit: read_value::<u32>(stream, definition.get_entry("timelimit"), "time_limit")?,
1976            frag_limit: read_value::<u32>(stream, definition.get_entry("fraglimit"), "frag_limit")?,
1977            objective: read_value::<MaybeUtf8String>(
1978                stream,
1979                definition.get_entry("objective"),
1980                "objective",
1981            )?,
1982        })
1983    }
1984    #[allow(unused_variables)]
1985    fn get_field(&self, field: &str) -> Result<GameEventValue> {
1986        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
1987        match field {
1988            "timelimit" => Ok(self.time_limit.clone().into()),
1989            "fraglimit" => Ok(self.frag_limit.clone().into()),
1990            "objective" => Ok(self.objective.clone().into()),
1991            _ => Err(ParseError::MissingGameEventValue {
1992                ty: "RoundStart",
1993                field: field.into(),
1994            }),
1995        }
1996    }
1997    #[allow(unused_variables)]
1998    fn write(
1999        &self,
2000        stream: &mut BitWriteStream<LittleEndian>,
2001        definition: &GameEventDefinition,
2002    ) -> Result<()> {
2003        for entry in &definition.entries {
2004            let value = self
2005                .get_field(&entry.name)
2006                .unwrap_or_else(|_| entry.kind.default_value());
2007            stream.write(&value)?;
2008        }
2009        Ok(())
2010    }
2011}
2012#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2013#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2014pub struct RoundEndEvent {
2015    pub winner: u8,
2016    pub reason: u8,
2017    pub message: MaybeUtf8String,
2018}
2019impl RoundEndEvent {
2020    #[allow(unused_variables)]
2021    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2022        Ok(RoundEndEvent {
2023            winner: read_value::<u8>(stream, definition.get_entry("winner"), "winner")?,
2024            reason: read_value::<u8>(stream, definition.get_entry("reason"), "reason")?,
2025            message: read_value::<MaybeUtf8String>(
2026                stream,
2027                definition.get_entry("message"),
2028                "message",
2029            )?,
2030        })
2031    }
2032    #[allow(unused_variables)]
2033    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2034        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2035        match field {
2036            "winner" => Ok(self.winner.clone().into()),
2037            "reason" => Ok(self.reason.clone().into()),
2038            "message" => Ok(self.message.clone().into()),
2039            _ => Err(ParseError::MissingGameEventValue {
2040                ty: "RoundEnd",
2041                field: field.into(),
2042            }),
2043        }
2044    }
2045    #[allow(unused_variables)]
2046    fn write(
2047        &self,
2048        stream: &mut BitWriteStream<LittleEndian>,
2049        definition: &GameEventDefinition,
2050    ) -> Result<()> {
2051        for entry in &definition.entries {
2052            let value = self
2053                .get_field(&entry.name)
2054                .unwrap_or_else(|_| entry.kind.default_value());
2055            stream.write(&value)?;
2056        }
2057        Ok(())
2058    }
2059}
2060#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2061#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2062pub struct GameMessageEvent {
2063    pub target: u8,
2064    pub text: MaybeUtf8String,
2065}
2066impl GameMessageEvent {
2067    #[allow(unused_variables)]
2068    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2069        Ok(GameMessageEvent {
2070            target: read_value::<u8>(stream, definition.get_entry("target"), "target")?,
2071            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
2072        })
2073    }
2074    #[allow(unused_variables)]
2075    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2076        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2077        match field {
2078            "target" => Ok(self.target.clone().into()),
2079            "text" => Ok(self.text.clone().into()),
2080            _ => Err(ParseError::MissingGameEventValue {
2081                ty: "GameMessage",
2082                field: field.into(),
2083            }),
2084        }
2085    }
2086    #[allow(unused_variables)]
2087    fn write(
2088        &self,
2089        stream: &mut BitWriteStream<LittleEndian>,
2090        definition: &GameEventDefinition,
2091    ) -> Result<()> {
2092        for entry in &definition.entries {
2093            let value = self
2094                .get_field(&entry.name)
2095                .unwrap_or_else(|_| entry.kind.default_value());
2096            stream.write(&value)?;
2097        }
2098        Ok(())
2099    }
2100}
2101#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2102#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2103pub struct BreakBreakableEvent {
2104    pub ent_index: u32,
2105    pub user_id: u16,
2106    pub material: u8,
2107}
2108impl BreakBreakableEvent {
2109    #[allow(unused_variables)]
2110    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2111        Ok(BreakBreakableEvent {
2112            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
2113            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
2114            material: read_value::<u8>(stream, definition.get_entry("material"), "material")?,
2115        })
2116    }
2117    #[allow(unused_variables)]
2118    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2119        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2120        match field {
2121            "entindex" => Ok(self.ent_index.clone().into()),
2122            "userid" => Ok(self.user_id.clone().into()),
2123            "material" => Ok(self.material.clone().into()),
2124            _ => Err(ParseError::MissingGameEventValue {
2125                ty: "BreakBreakable",
2126                field: field.into(),
2127            }),
2128        }
2129    }
2130    #[allow(unused_variables)]
2131    fn write(
2132        &self,
2133        stream: &mut BitWriteStream<LittleEndian>,
2134        definition: &GameEventDefinition,
2135    ) -> Result<()> {
2136        for entry in &definition.entries {
2137            let value = self
2138                .get_field(&entry.name)
2139                .unwrap_or_else(|_| entry.kind.default_value());
2140            stream.write(&value)?;
2141        }
2142        Ok(())
2143    }
2144}
2145#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2146#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2147pub struct BreakPropEvent {
2148    pub ent_index: u32,
2149    pub user_id: u16,
2150}
2151impl BreakPropEvent {
2152    #[allow(unused_variables)]
2153    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2154        Ok(BreakPropEvent {
2155            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
2156            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
2157        })
2158    }
2159    #[allow(unused_variables)]
2160    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2161        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2162        match field {
2163            "entindex" => Ok(self.ent_index.clone().into()),
2164            "userid" => Ok(self.user_id.clone().into()),
2165            _ => Err(ParseError::MissingGameEventValue {
2166                ty: "BreakProp",
2167                field: field.into(),
2168            }),
2169        }
2170    }
2171    #[allow(unused_variables)]
2172    fn write(
2173        &self,
2174        stream: &mut BitWriteStream<LittleEndian>,
2175        definition: &GameEventDefinition,
2176    ) -> Result<()> {
2177        for entry in &definition.entries {
2178            let value = self
2179                .get_field(&entry.name)
2180                .unwrap_or_else(|_| entry.kind.default_value());
2181            stream.write(&value)?;
2182        }
2183        Ok(())
2184    }
2185}
2186#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2187#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2188pub struct EntityKilledEvent {
2189    pub ent_index_killed: u32,
2190    pub ent_index_attacker: u32,
2191    pub ent_index_inflictor: u32,
2192    pub damage_bits: u32,
2193}
2194impl EntityKilledEvent {
2195    #[allow(unused_variables)]
2196    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2197        Ok(EntityKilledEvent {
2198            ent_index_killed: read_value::<u32>(
2199                stream,
2200                definition.get_entry("entindex_killed"),
2201                "ent_index_killed",
2202            )?,
2203            ent_index_attacker: read_value::<u32>(
2204                stream,
2205                definition.get_entry("entindex_attacker"),
2206                "ent_index_attacker",
2207            )?,
2208            ent_index_inflictor: read_value::<u32>(
2209                stream,
2210                definition.get_entry("entindex_inflictor"),
2211                "ent_index_inflictor",
2212            )?,
2213            damage_bits: read_value::<u32>(
2214                stream,
2215                definition.get_entry("damagebits"),
2216                "damage_bits",
2217            )?,
2218        })
2219    }
2220    #[allow(unused_variables)]
2221    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2222        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2223        match field {
2224            "entindex_killed" => Ok(self.ent_index_killed.clone().into()),
2225            "entindex_attacker" => Ok(self.ent_index_attacker.clone().into()),
2226            "entindex_inflictor" => Ok(self.ent_index_inflictor.clone().into()),
2227            "damagebits" => Ok(self.damage_bits.clone().into()),
2228            _ => Err(ParseError::MissingGameEventValue {
2229                ty: "EntityKilled",
2230                field: field.into(),
2231            }),
2232        }
2233    }
2234    #[allow(unused_variables)]
2235    fn write(
2236        &self,
2237        stream: &mut BitWriteStream<LittleEndian>,
2238        definition: &GameEventDefinition,
2239    ) -> Result<()> {
2240        for entry in &definition.entries {
2241            let value = self
2242                .get_field(&entry.name)
2243                .unwrap_or_else(|_| entry.kind.default_value());
2244            stream.write(&value)?;
2245        }
2246        Ok(())
2247    }
2248}
2249#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2250#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2251pub struct BonusUpdatedEvent {
2252    pub num_advanced: u16,
2253    pub num_bronze: u16,
2254    pub num_silver: u16,
2255    pub num_gold: u16,
2256}
2257impl BonusUpdatedEvent {
2258    #[allow(unused_variables)]
2259    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2260        Ok(BonusUpdatedEvent {
2261            num_advanced: read_value::<u16>(
2262                stream,
2263                definition.get_entry("numadvanced"),
2264                "num_advanced",
2265            )?,
2266            num_bronze: read_value::<u16>(stream, definition.get_entry("numbronze"), "num_bronze")?,
2267            num_silver: read_value::<u16>(stream, definition.get_entry("numsilver"), "num_silver")?,
2268            num_gold: read_value::<u16>(stream, definition.get_entry("numgold"), "num_gold")?,
2269        })
2270    }
2271    #[allow(unused_variables)]
2272    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2273        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2274        match field {
2275            "numadvanced" => Ok(self.num_advanced.clone().into()),
2276            "numbronze" => Ok(self.num_bronze.clone().into()),
2277            "numsilver" => Ok(self.num_silver.clone().into()),
2278            "numgold" => Ok(self.num_gold.clone().into()),
2279            _ => Err(ParseError::MissingGameEventValue {
2280                ty: "BonusUpdated",
2281                field: field.into(),
2282            }),
2283        }
2284    }
2285    #[allow(unused_variables)]
2286    fn write(
2287        &self,
2288        stream: &mut BitWriteStream<LittleEndian>,
2289        definition: &GameEventDefinition,
2290    ) -> Result<()> {
2291        for entry in &definition.entries {
2292            let value = self
2293                .get_field(&entry.name)
2294                .unwrap_or_else(|_| entry.kind.default_value());
2295            stream.write(&value)?;
2296        }
2297        Ok(())
2298    }
2299}
2300#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2301#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2302pub struct AchievementEventEvent {
2303    pub achievement_name: MaybeUtf8String,
2304    pub cur_val: u16,
2305    pub max_val: u16,
2306}
2307impl AchievementEventEvent {
2308    #[allow(unused_variables)]
2309    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2310        Ok(AchievementEventEvent {
2311            achievement_name: read_value::<MaybeUtf8String>(
2312                stream,
2313                definition.get_entry("achievement_name"),
2314                "achievement_name",
2315            )?,
2316            cur_val: read_value::<u16>(stream, definition.get_entry("cur_val"), "cur_val")?,
2317            max_val: read_value::<u16>(stream, definition.get_entry("max_val"), "max_val")?,
2318        })
2319    }
2320    #[allow(unused_variables)]
2321    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2322        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2323        match field {
2324            "achievement_name" => Ok(self.achievement_name.clone().into()),
2325            "cur_val" => Ok(self.cur_val.clone().into()),
2326            "max_val" => Ok(self.max_val.clone().into()),
2327            _ => Err(ParseError::MissingGameEventValue {
2328                ty: "AchievementEvent",
2329                field: field.into(),
2330            }),
2331        }
2332    }
2333    #[allow(unused_variables)]
2334    fn write(
2335        &self,
2336        stream: &mut BitWriteStream<LittleEndian>,
2337        definition: &GameEventDefinition,
2338    ) -> Result<()> {
2339        for entry in &definition.entries {
2340            let value = self
2341                .get_field(&entry.name)
2342                .unwrap_or_else(|_| entry.kind.default_value());
2343            stream.write(&value)?;
2344        }
2345        Ok(())
2346    }
2347}
2348#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2349#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2350pub struct AchievementIncrementEvent {
2351    pub achievement_id: u32,
2352    pub cur_val: u16,
2353    pub max_val: u16,
2354}
2355impl AchievementIncrementEvent {
2356    #[allow(unused_variables)]
2357    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2358        Ok(AchievementIncrementEvent {
2359            achievement_id: read_value::<u32>(
2360                stream,
2361                definition.get_entry("achievement_id"),
2362                "achievement_id",
2363            )?,
2364            cur_val: read_value::<u16>(stream, definition.get_entry("cur_val"), "cur_val")?,
2365            max_val: read_value::<u16>(stream, definition.get_entry("max_val"), "max_val")?,
2366        })
2367    }
2368    #[allow(unused_variables)]
2369    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2370        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2371        match field {
2372            "achievement_id" => Ok(self.achievement_id.clone().into()),
2373            "cur_val" => Ok(self.cur_val.clone().into()),
2374            "max_val" => Ok(self.max_val.clone().into()),
2375            _ => Err(ParseError::MissingGameEventValue {
2376                ty: "AchievementIncrement",
2377                field: field.into(),
2378            }),
2379        }
2380    }
2381    #[allow(unused_variables)]
2382    fn write(
2383        &self,
2384        stream: &mut BitWriteStream<LittleEndian>,
2385        definition: &GameEventDefinition,
2386    ) -> Result<()> {
2387        for entry in &definition.entries {
2388            let value = self
2389                .get_field(&entry.name)
2390                .unwrap_or_else(|_| entry.kind.default_value());
2391            stream.write(&value)?;
2392        }
2393        Ok(())
2394    }
2395}
2396#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2397#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2398pub struct PhysgunPickupEvent {
2399    pub ent_index: u32,
2400}
2401impl PhysgunPickupEvent {
2402    #[allow(unused_variables)]
2403    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2404        Ok(PhysgunPickupEvent {
2405            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
2406        })
2407    }
2408    #[allow(unused_variables)]
2409    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2410        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2411        match field {
2412            "entindex" => Ok(self.ent_index.clone().into()),
2413            _ => Err(ParseError::MissingGameEventValue {
2414                ty: "PhysgunPickup",
2415                field: field.into(),
2416            }),
2417        }
2418    }
2419    #[allow(unused_variables)]
2420    fn write(
2421        &self,
2422        stream: &mut BitWriteStream<LittleEndian>,
2423        definition: &GameEventDefinition,
2424    ) -> Result<()> {
2425        for entry in &definition.entries {
2426            let value = self
2427                .get_field(&entry.name)
2428                .unwrap_or_else(|_| entry.kind.default_value());
2429            stream.write(&value)?;
2430        }
2431        Ok(())
2432    }
2433}
2434#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2435#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2436pub struct FlareIgniteNpcEvent {
2437    pub ent_index: u32,
2438}
2439impl FlareIgniteNpcEvent {
2440    #[allow(unused_variables)]
2441    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2442        Ok(FlareIgniteNpcEvent {
2443            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
2444        })
2445    }
2446    #[allow(unused_variables)]
2447    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2448        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2449        match field {
2450            "entindex" => Ok(self.ent_index.clone().into()),
2451            _ => Err(ParseError::MissingGameEventValue {
2452                ty: "FlareIgniteNpc",
2453                field: field.into(),
2454            }),
2455        }
2456    }
2457    #[allow(unused_variables)]
2458    fn write(
2459        &self,
2460        stream: &mut BitWriteStream<LittleEndian>,
2461        definition: &GameEventDefinition,
2462    ) -> Result<()> {
2463        for entry in &definition.entries {
2464            let value = self
2465                .get_field(&entry.name)
2466                .unwrap_or_else(|_| entry.kind.default_value());
2467            stream.write(&value)?;
2468        }
2469        Ok(())
2470    }
2471}
2472#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2473#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2474pub struct HelicopterGrenadePuntMissEvent {}
2475impl HelicopterGrenadePuntMissEvent {
2476    #[allow(unused_variables)]
2477    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2478        Ok(HelicopterGrenadePuntMissEvent {})
2479    }
2480    #[allow(unused_variables)]
2481    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2482        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2483        match field {
2484            _ => Err(ParseError::MissingGameEventValue {
2485                ty: "HelicopterGrenadePuntMiss",
2486                field: field.into(),
2487            }),
2488        }
2489    }
2490    #[allow(unused_variables)]
2491    fn write(
2492        &self,
2493        stream: &mut BitWriteStream<LittleEndian>,
2494        definition: &GameEventDefinition,
2495    ) -> Result<()> {
2496        for entry in &definition.entries {
2497            let value = self
2498                .get_field(&entry.name)
2499                .unwrap_or_else(|_| entry.kind.default_value());
2500            stream.write(&value)?;
2501        }
2502        Ok(())
2503    }
2504}
2505#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2506#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2507pub struct UserDataDownloadedEvent {}
2508impl UserDataDownloadedEvent {
2509    #[allow(unused_variables)]
2510    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2511        Ok(UserDataDownloadedEvent {})
2512    }
2513    #[allow(unused_variables)]
2514    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2515        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2516        match field {
2517            _ => Err(ParseError::MissingGameEventValue {
2518                ty: "UserDataDownloaded",
2519                field: field.into(),
2520            }),
2521        }
2522    }
2523    #[allow(unused_variables)]
2524    fn write(
2525        &self,
2526        stream: &mut BitWriteStream<LittleEndian>,
2527        definition: &GameEventDefinition,
2528    ) -> Result<()> {
2529        for entry in &definition.entries {
2530            let value = self
2531                .get_field(&entry.name)
2532                .unwrap_or_else(|_| entry.kind.default_value());
2533            stream.write(&value)?;
2534        }
2535        Ok(())
2536    }
2537}
2538#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2539#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2540pub struct RagdollDissolvedEvent {
2541    pub ent_index: u32,
2542}
2543impl RagdollDissolvedEvent {
2544    #[allow(unused_variables)]
2545    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2546        Ok(RagdollDissolvedEvent {
2547            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
2548        })
2549    }
2550    #[allow(unused_variables)]
2551    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2552        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2553        match field {
2554            "entindex" => Ok(self.ent_index.clone().into()),
2555            _ => Err(ParseError::MissingGameEventValue {
2556                ty: "RagdollDissolved",
2557                field: field.into(),
2558            }),
2559        }
2560    }
2561    #[allow(unused_variables)]
2562    fn write(
2563        &self,
2564        stream: &mut BitWriteStream<LittleEndian>,
2565        definition: &GameEventDefinition,
2566    ) -> Result<()> {
2567        for entry in &definition.entries {
2568            let value = self
2569                .get_field(&entry.name)
2570                .unwrap_or_else(|_| entry.kind.default_value());
2571            stream.write(&value)?;
2572        }
2573        Ok(())
2574    }
2575}
2576#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2577#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2578pub struct HLTVChangedModeEvent {
2579    pub old_mode: u16,
2580    pub new_mode: u16,
2581    pub obs_target: u16,
2582}
2583impl HLTVChangedModeEvent {
2584    #[allow(unused_variables)]
2585    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2586        Ok(HLTVChangedModeEvent {
2587            old_mode: read_value::<u16>(stream, definition.get_entry("oldmode"), "old_mode")?,
2588            new_mode: read_value::<u16>(stream, definition.get_entry("newmode"), "new_mode")?,
2589            obs_target: read_value::<u16>(
2590                stream,
2591                definition.get_entry("obs_target"),
2592                "obs_target",
2593            )?,
2594        })
2595    }
2596    #[allow(unused_variables)]
2597    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2598        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2599        match field {
2600            "oldmode" => Ok(self.old_mode.clone().into()),
2601            "newmode" => Ok(self.new_mode.clone().into()),
2602            "obs_target" => Ok(self.obs_target.clone().into()),
2603            _ => Err(ParseError::MissingGameEventValue {
2604                ty: "HLTVChangedMode",
2605                field: field.into(),
2606            }),
2607        }
2608    }
2609    #[allow(unused_variables)]
2610    fn write(
2611        &self,
2612        stream: &mut BitWriteStream<LittleEndian>,
2613        definition: &GameEventDefinition,
2614    ) -> Result<()> {
2615        for entry in &definition.entries {
2616            let value = self
2617                .get_field(&entry.name)
2618                .unwrap_or_else(|_| entry.kind.default_value());
2619            stream.write(&value)?;
2620        }
2621        Ok(())
2622    }
2623}
2624#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2625#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2626pub struct HLTVChangedTargetEvent {
2627    pub mode: u16,
2628    pub old_target: u16,
2629    pub obs_target: u16,
2630}
2631impl HLTVChangedTargetEvent {
2632    #[allow(unused_variables)]
2633    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2634        Ok(HLTVChangedTargetEvent {
2635            mode: read_value::<u16>(stream, definition.get_entry("mode"), "mode")?,
2636            old_target: read_value::<u16>(
2637                stream,
2638                definition.get_entry("old_target"),
2639                "old_target",
2640            )?,
2641            obs_target: read_value::<u16>(
2642                stream,
2643                definition.get_entry("obs_target"),
2644                "obs_target",
2645            )?,
2646        })
2647    }
2648    #[allow(unused_variables)]
2649    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2650        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2651        match field {
2652            "mode" => Ok(self.mode.clone().into()),
2653            "old_target" => Ok(self.old_target.clone().into()),
2654            "obs_target" => Ok(self.obs_target.clone().into()),
2655            _ => Err(ParseError::MissingGameEventValue {
2656                ty: "HLTVChangedTarget",
2657                field: field.into(),
2658            }),
2659        }
2660    }
2661    #[allow(unused_variables)]
2662    fn write(
2663        &self,
2664        stream: &mut BitWriteStream<LittleEndian>,
2665        definition: &GameEventDefinition,
2666    ) -> Result<()> {
2667        for entry in &definition.entries {
2668            let value = self
2669                .get_field(&entry.name)
2670                .unwrap_or_else(|_| entry.kind.default_value());
2671            stream.write(&value)?;
2672        }
2673        Ok(())
2674    }
2675}
2676#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2677#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2678pub struct VoteEndedEvent {}
2679impl VoteEndedEvent {
2680    #[allow(unused_variables)]
2681    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2682        Ok(VoteEndedEvent {})
2683    }
2684    #[allow(unused_variables)]
2685    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2686        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2687        match field {
2688            _ => Err(ParseError::MissingGameEventValue {
2689                ty: "VoteEnded",
2690                field: field.into(),
2691            }),
2692        }
2693    }
2694    #[allow(unused_variables)]
2695    fn write(
2696        &self,
2697        stream: &mut BitWriteStream<LittleEndian>,
2698        definition: &GameEventDefinition,
2699    ) -> Result<()> {
2700        for entry in &definition.entries {
2701            let value = self
2702                .get_field(&entry.name)
2703                .unwrap_or_else(|_| entry.kind.default_value());
2704            stream.write(&value)?;
2705        }
2706        Ok(())
2707    }
2708}
2709#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2710#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2711pub struct VoteStartedEvent {
2712    pub issue: MaybeUtf8String,
2713    pub param_1: MaybeUtf8String,
2714    pub team: u8,
2715    pub initiator: u32,
2716    pub voteidx: u32,
2717}
2718impl VoteStartedEvent {
2719    #[allow(unused_variables)]
2720    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2721        Ok(VoteStartedEvent {
2722            issue: read_value::<MaybeUtf8String>(stream, definition.get_entry("issue"), "issue")?,
2723            param_1: read_value::<MaybeUtf8String>(
2724                stream,
2725                definition.get_entry("param1"),
2726                "param_1",
2727            )?,
2728            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
2729            initiator: read_value::<u32>(stream, definition.get_entry("initiator"), "initiator")?,
2730            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
2731        })
2732    }
2733    #[allow(unused_variables)]
2734    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2735        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2736        match field {
2737            "issue" => Ok(self.issue.clone().into()),
2738            "param1" => Ok(self.param_1.clone().into()),
2739            "team" => Ok(self.team.clone().into()),
2740            "initiator" => Ok(self.initiator.clone().into()),
2741            "voteidx" => Ok(self.voteidx.clone().into()),
2742            _ => Err(ParseError::MissingGameEventValue {
2743                ty: "VoteStarted",
2744                field: field.into(),
2745            }),
2746        }
2747    }
2748    #[allow(unused_variables)]
2749    fn write(
2750        &self,
2751        stream: &mut BitWriteStream<LittleEndian>,
2752        definition: &GameEventDefinition,
2753    ) -> Result<()> {
2754        for entry in &definition.entries {
2755            let value = self
2756                .get_field(&entry.name)
2757                .unwrap_or_else(|_| entry.kind.default_value());
2758            stream.write(&value)?;
2759        }
2760        Ok(())
2761    }
2762}
2763#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2764#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2765pub struct VoteChangedEvent {
2766    pub vote_option_1: u8,
2767    pub vote_option_2: u8,
2768    pub vote_option_3: u8,
2769    pub vote_option_4: u8,
2770    pub vote_option_5: u8,
2771    pub potential_votes: u8,
2772    pub voteidx: u32,
2773}
2774impl VoteChangedEvent {
2775    #[allow(unused_variables)]
2776    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2777        Ok(VoteChangedEvent {
2778            vote_option_1: read_value::<u8>(
2779                stream,
2780                definition.get_entry("vote_option1"),
2781                "vote_option_1",
2782            )?,
2783            vote_option_2: read_value::<u8>(
2784                stream,
2785                definition.get_entry("vote_option2"),
2786                "vote_option_2",
2787            )?,
2788            vote_option_3: read_value::<u8>(
2789                stream,
2790                definition.get_entry("vote_option3"),
2791                "vote_option_3",
2792            )?,
2793            vote_option_4: read_value::<u8>(
2794                stream,
2795                definition.get_entry("vote_option4"),
2796                "vote_option_4",
2797            )?,
2798            vote_option_5: read_value::<u8>(
2799                stream,
2800                definition.get_entry("vote_option5"),
2801                "vote_option_5",
2802            )?,
2803            potential_votes: read_value::<u8>(
2804                stream,
2805                definition.get_entry("potentialVotes"),
2806                "potential_votes",
2807            )?,
2808            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
2809        })
2810    }
2811    #[allow(unused_variables)]
2812    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2813        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2814        match field {
2815            "vote_option1" => Ok(self.vote_option_1.clone().into()),
2816            "vote_option2" => Ok(self.vote_option_2.clone().into()),
2817            "vote_option3" => Ok(self.vote_option_3.clone().into()),
2818            "vote_option4" => Ok(self.vote_option_4.clone().into()),
2819            "vote_option5" => Ok(self.vote_option_5.clone().into()),
2820            "potentialVotes" => Ok(self.potential_votes.clone().into()),
2821            "voteidx" => Ok(self.voteidx.clone().into()),
2822            _ => Err(ParseError::MissingGameEventValue {
2823                ty: "VoteChanged",
2824                field: field.into(),
2825            }),
2826        }
2827    }
2828    #[allow(unused_variables)]
2829    fn write(
2830        &self,
2831        stream: &mut BitWriteStream<LittleEndian>,
2832        definition: &GameEventDefinition,
2833    ) -> Result<()> {
2834        for entry in &definition.entries {
2835            let value = self
2836                .get_field(&entry.name)
2837                .unwrap_or_else(|_| entry.kind.default_value());
2838            stream.write(&value)?;
2839        }
2840        Ok(())
2841    }
2842}
2843#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2844#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2845pub struct VotePassedEvent {
2846    pub details: MaybeUtf8String,
2847    pub param_1: MaybeUtf8String,
2848    pub team: u8,
2849    pub voteidx: u32,
2850}
2851impl VotePassedEvent {
2852    #[allow(unused_variables)]
2853    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2854        Ok(VotePassedEvent {
2855            details: read_value::<MaybeUtf8String>(
2856                stream,
2857                definition.get_entry("details"),
2858                "details",
2859            )?,
2860            param_1: read_value::<MaybeUtf8String>(
2861                stream,
2862                definition.get_entry("param1"),
2863                "param_1",
2864            )?,
2865            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
2866            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
2867        })
2868    }
2869    #[allow(unused_variables)]
2870    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2871        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2872        match field {
2873            "details" => Ok(self.details.clone().into()),
2874            "param1" => Ok(self.param_1.clone().into()),
2875            "team" => Ok(self.team.clone().into()),
2876            "voteidx" => Ok(self.voteidx.clone().into()),
2877            _ => Err(ParseError::MissingGameEventValue {
2878                ty: "VotePassed",
2879                field: field.into(),
2880            }),
2881        }
2882    }
2883    #[allow(unused_variables)]
2884    fn write(
2885        &self,
2886        stream: &mut BitWriteStream<LittleEndian>,
2887        definition: &GameEventDefinition,
2888    ) -> Result<()> {
2889        for entry in &definition.entries {
2890            let value = self
2891                .get_field(&entry.name)
2892                .unwrap_or_else(|_| entry.kind.default_value());
2893            stream.write(&value)?;
2894        }
2895        Ok(())
2896    }
2897}
2898#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2899#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2900pub struct VoteFailedEvent {
2901    pub team: u8,
2902    pub voteidx: u32,
2903}
2904impl VoteFailedEvent {
2905    #[allow(unused_variables)]
2906    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2907        Ok(VoteFailedEvent {
2908            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
2909            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
2910        })
2911    }
2912    #[allow(unused_variables)]
2913    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2914        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2915        match field {
2916            "team" => Ok(self.team.clone().into()),
2917            "voteidx" => Ok(self.voteidx.clone().into()),
2918            _ => Err(ParseError::MissingGameEventValue {
2919                ty: "VoteFailed",
2920                field: field.into(),
2921            }),
2922        }
2923    }
2924    #[allow(unused_variables)]
2925    fn write(
2926        &self,
2927        stream: &mut BitWriteStream<LittleEndian>,
2928        definition: &GameEventDefinition,
2929    ) -> Result<()> {
2930        for entry in &definition.entries {
2931            let value = self
2932                .get_field(&entry.name)
2933                .unwrap_or_else(|_| entry.kind.default_value());
2934            stream.write(&value)?;
2935        }
2936        Ok(())
2937    }
2938}
2939#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2940#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2941pub struct VoteCastEvent {
2942    pub vote_option: u8,
2943    pub team: u16,
2944    pub entity_id: u32,
2945    pub voteidx: u32,
2946}
2947impl VoteCastEvent {
2948    #[allow(unused_variables)]
2949    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
2950        Ok(VoteCastEvent {
2951            vote_option: read_value::<u8>(
2952                stream,
2953                definition.get_entry("vote_option"),
2954                "vote_option",
2955            )?,
2956            team: read_value::<u16>(stream, definition.get_entry("team"), "team")?,
2957            entity_id: read_value::<u32>(stream, definition.get_entry("entityid"), "entity_id")?,
2958            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
2959        })
2960    }
2961    #[allow(unused_variables)]
2962    fn get_field(&self, field: &str) -> Result<GameEventValue> {
2963        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
2964        match field {
2965            "vote_option" => Ok(self.vote_option.clone().into()),
2966            "team" => Ok(self.team.clone().into()),
2967            "entityid" => Ok(self.entity_id.clone().into()),
2968            "voteidx" => Ok(self.voteidx.clone().into()),
2969            _ => Err(ParseError::MissingGameEventValue {
2970                ty: "VoteCast",
2971                field: field.into(),
2972            }),
2973        }
2974    }
2975    #[allow(unused_variables)]
2976    fn write(
2977        &self,
2978        stream: &mut BitWriteStream<LittleEndian>,
2979        definition: &GameEventDefinition,
2980    ) -> Result<()> {
2981        for entry in &definition.entries {
2982            let value = self
2983                .get_field(&entry.name)
2984                .unwrap_or_else(|_| entry.kind.default_value());
2985            stream.write(&value)?;
2986        }
2987        Ok(())
2988    }
2989}
2990#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
2991#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
2992pub struct VoteOptionsEvent {
2993    pub count: u8,
2994    pub option_1: MaybeUtf8String,
2995    pub option_2: MaybeUtf8String,
2996    pub option_3: MaybeUtf8String,
2997    pub option_4: MaybeUtf8String,
2998    pub option_5: MaybeUtf8String,
2999    pub voteidx: u32,
3000}
3001impl VoteOptionsEvent {
3002    #[allow(unused_variables)]
3003    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3004        Ok(VoteOptionsEvent {
3005            count: read_value::<u8>(stream, definition.get_entry("count"), "count")?,
3006            option_1: read_value::<MaybeUtf8String>(
3007                stream,
3008                definition.get_entry("option1"),
3009                "option_1",
3010            )?,
3011            option_2: read_value::<MaybeUtf8String>(
3012                stream,
3013                definition.get_entry("option2"),
3014                "option_2",
3015            )?,
3016            option_3: read_value::<MaybeUtf8String>(
3017                stream,
3018                definition.get_entry("option3"),
3019                "option_3",
3020            )?,
3021            option_4: read_value::<MaybeUtf8String>(
3022                stream,
3023                definition.get_entry("option4"),
3024                "option_4",
3025            )?,
3026            option_5: read_value::<MaybeUtf8String>(
3027                stream,
3028                definition.get_entry("option5"),
3029                "option_5",
3030            )?,
3031            voteidx: read_value::<u32>(stream, definition.get_entry("voteidx"), "voteidx")?,
3032        })
3033    }
3034    #[allow(unused_variables)]
3035    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3036        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3037        match field {
3038            "count" => Ok(self.count.clone().into()),
3039            "option1" => Ok(self.option_1.clone().into()),
3040            "option2" => Ok(self.option_2.clone().into()),
3041            "option3" => Ok(self.option_3.clone().into()),
3042            "option4" => Ok(self.option_4.clone().into()),
3043            "option5" => Ok(self.option_5.clone().into()),
3044            "voteidx" => Ok(self.voteidx.clone().into()),
3045            _ => Err(ParseError::MissingGameEventValue {
3046                ty: "VoteOptions",
3047                field: field.into(),
3048            }),
3049        }
3050    }
3051    #[allow(unused_variables)]
3052    fn write(
3053        &self,
3054        stream: &mut BitWriteStream<LittleEndian>,
3055        definition: &GameEventDefinition,
3056    ) -> Result<()> {
3057        for entry in &definition.entries {
3058            let value = self
3059                .get_field(&entry.name)
3060                .unwrap_or_else(|_| entry.kind.default_value());
3061            stream.write(&value)?;
3062        }
3063        Ok(())
3064    }
3065}
3066#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3067#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3068pub struct ReplaySavedEvent {}
3069impl ReplaySavedEvent {
3070    #[allow(unused_variables)]
3071    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3072        Ok(ReplaySavedEvent {})
3073    }
3074    #[allow(unused_variables)]
3075    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3076        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3077        match field {
3078            _ => Err(ParseError::MissingGameEventValue {
3079                ty: "ReplaySaved",
3080                field: field.into(),
3081            }),
3082        }
3083    }
3084    #[allow(unused_variables)]
3085    fn write(
3086        &self,
3087        stream: &mut BitWriteStream<LittleEndian>,
3088        definition: &GameEventDefinition,
3089    ) -> Result<()> {
3090        for entry in &definition.entries {
3091            let value = self
3092                .get_field(&entry.name)
3093                .unwrap_or_else(|_| entry.kind.default_value());
3094            stream.write(&value)?;
3095        }
3096        Ok(())
3097    }
3098}
3099#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3100#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3101pub struct EnteredPerformanceModeEvent {}
3102impl EnteredPerformanceModeEvent {
3103    #[allow(unused_variables)]
3104    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3105        Ok(EnteredPerformanceModeEvent {})
3106    }
3107    #[allow(unused_variables)]
3108    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3109        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3110        match field {
3111            _ => Err(ParseError::MissingGameEventValue {
3112                ty: "EnteredPerformanceMode",
3113                field: field.into(),
3114            }),
3115        }
3116    }
3117    #[allow(unused_variables)]
3118    fn write(
3119        &self,
3120        stream: &mut BitWriteStream<LittleEndian>,
3121        definition: &GameEventDefinition,
3122    ) -> Result<()> {
3123        for entry in &definition.entries {
3124            let value = self
3125                .get_field(&entry.name)
3126                .unwrap_or_else(|_| entry.kind.default_value());
3127            stream.write(&value)?;
3128        }
3129        Ok(())
3130    }
3131}
3132#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3133#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3134pub struct BrowseReplaysEvent {}
3135impl BrowseReplaysEvent {
3136    #[allow(unused_variables)]
3137    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3138        Ok(BrowseReplaysEvent {})
3139    }
3140    #[allow(unused_variables)]
3141    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3142        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3143        match field {
3144            _ => Err(ParseError::MissingGameEventValue {
3145                ty: "BrowseReplays",
3146                field: field.into(),
3147            }),
3148        }
3149    }
3150    #[allow(unused_variables)]
3151    fn write(
3152        &self,
3153        stream: &mut BitWriteStream<LittleEndian>,
3154        definition: &GameEventDefinition,
3155    ) -> Result<()> {
3156        for entry in &definition.entries {
3157            let value = self
3158                .get_field(&entry.name)
3159                .unwrap_or_else(|_| entry.kind.default_value());
3160            stream.write(&value)?;
3161        }
3162        Ok(())
3163    }
3164}
3165#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3166#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3167pub struct ReplayYoutubeStatsEvent {
3168    pub views: u32,
3169    pub likes: u32,
3170    pub favorited: u32,
3171}
3172impl ReplayYoutubeStatsEvent {
3173    #[allow(unused_variables)]
3174    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3175        Ok(ReplayYoutubeStatsEvent {
3176            views: read_value::<u32>(stream, definition.get_entry("views"), "views")?,
3177            likes: read_value::<u32>(stream, definition.get_entry("likes"), "likes")?,
3178            favorited: read_value::<u32>(stream, definition.get_entry("favorited"), "favorited")?,
3179        })
3180    }
3181    #[allow(unused_variables)]
3182    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3183        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3184        match field {
3185            "views" => Ok(self.views.clone().into()),
3186            "likes" => Ok(self.likes.clone().into()),
3187            "favorited" => Ok(self.favorited.clone().into()),
3188            _ => Err(ParseError::MissingGameEventValue {
3189                ty: "ReplayYoutubeStats",
3190                field: field.into(),
3191            }),
3192        }
3193    }
3194    #[allow(unused_variables)]
3195    fn write(
3196        &self,
3197        stream: &mut BitWriteStream<LittleEndian>,
3198        definition: &GameEventDefinition,
3199    ) -> Result<()> {
3200        for entry in &definition.entries {
3201            let value = self
3202                .get_field(&entry.name)
3203                .unwrap_or_else(|_| entry.kind.default_value());
3204            stream.write(&value)?;
3205        }
3206        Ok(())
3207    }
3208}
3209#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3210#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3211pub struct InventoryUpdatedEvent {}
3212impl InventoryUpdatedEvent {
3213    #[allow(unused_variables)]
3214    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3215        Ok(InventoryUpdatedEvent {})
3216    }
3217    #[allow(unused_variables)]
3218    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3219        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3220        match field {
3221            _ => Err(ParseError::MissingGameEventValue {
3222                ty: "InventoryUpdated",
3223                field: field.into(),
3224            }),
3225        }
3226    }
3227    #[allow(unused_variables)]
3228    fn write(
3229        &self,
3230        stream: &mut BitWriteStream<LittleEndian>,
3231        definition: &GameEventDefinition,
3232    ) -> Result<()> {
3233        for entry in &definition.entries {
3234            let value = self
3235                .get_field(&entry.name)
3236                .unwrap_or_else(|_| entry.kind.default_value());
3237            stream.write(&value)?;
3238        }
3239        Ok(())
3240    }
3241}
3242#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3243#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3244pub struct CartUpdatedEvent {}
3245impl CartUpdatedEvent {
3246    #[allow(unused_variables)]
3247    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3248        Ok(CartUpdatedEvent {})
3249    }
3250    #[allow(unused_variables)]
3251    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3252        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3253        match field {
3254            _ => Err(ParseError::MissingGameEventValue {
3255                ty: "CartUpdated",
3256                field: field.into(),
3257            }),
3258        }
3259    }
3260    #[allow(unused_variables)]
3261    fn write(
3262        &self,
3263        stream: &mut BitWriteStream<LittleEndian>,
3264        definition: &GameEventDefinition,
3265    ) -> Result<()> {
3266        for entry in &definition.entries {
3267            let value = self
3268                .get_field(&entry.name)
3269                .unwrap_or_else(|_| entry.kind.default_value());
3270            stream.write(&value)?;
3271        }
3272        Ok(())
3273    }
3274}
3275#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3276#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3277pub struct StorePriceSheetUpdatedEvent {}
3278impl StorePriceSheetUpdatedEvent {
3279    #[allow(unused_variables)]
3280    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3281        Ok(StorePriceSheetUpdatedEvent {})
3282    }
3283    #[allow(unused_variables)]
3284    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3285        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3286        match field {
3287            _ => Err(ParseError::MissingGameEventValue {
3288                ty: "StorePriceSheetUpdated",
3289                field: field.into(),
3290            }),
3291        }
3292    }
3293    #[allow(unused_variables)]
3294    fn write(
3295        &self,
3296        stream: &mut BitWriteStream<LittleEndian>,
3297        definition: &GameEventDefinition,
3298    ) -> Result<()> {
3299        for entry in &definition.entries {
3300            let value = self
3301                .get_field(&entry.name)
3302                .unwrap_or_else(|_| entry.kind.default_value());
3303            stream.write(&value)?;
3304        }
3305        Ok(())
3306    }
3307}
3308#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3309#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3310pub struct EconInventoryConnectedEvent {}
3311impl EconInventoryConnectedEvent {
3312    #[allow(unused_variables)]
3313    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3314        Ok(EconInventoryConnectedEvent {})
3315    }
3316    #[allow(unused_variables)]
3317    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3318        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3319        match field {
3320            _ => Err(ParseError::MissingGameEventValue {
3321                ty: "EconInventoryConnected",
3322                field: field.into(),
3323            }),
3324        }
3325    }
3326    #[allow(unused_variables)]
3327    fn write(
3328        &self,
3329        stream: &mut BitWriteStream<LittleEndian>,
3330        definition: &GameEventDefinition,
3331    ) -> Result<()> {
3332        for entry in &definition.entries {
3333            let value = self
3334                .get_field(&entry.name)
3335                .unwrap_or_else(|_| entry.kind.default_value());
3336            stream.write(&value)?;
3337        }
3338        Ok(())
3339    }
3340}
3341#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3342#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3343pub struct ItemSchemaInitializedEvent {}
3344impl ItemSchemaInitializedEvent {
3345    #[allow(unused_variables)]
3346    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3347        Ok(ItemSchemaInitializedEvent {})
3348    }
3349    #[allow(unused_variables)]
3350    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3351        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3352        match field {
3353            _ => Err(ParseError::MissingGameEventValue {
3354                ty: "ItemSchemaInitialized",
3355                field: field.into(),
3356            }),
3357        }
3358    }
3359    #[allow(unused_variables)]
3360    fn write(
3361        &self,
3362        stream: &mut BitWriteStream<LittleEndian>,
3363        definition: &GameEventDefinition,
3364    ) -> Result<()> {
3365        for entry in &definition.entries {
3366            let value = self
3367                .get_field(&entry.name)
3368                .unwrap_or_else(|_| entry.kind.default_value());
3369            stream.write(&value)?;
3370        }
3371        Ok(())
3372    }
3373}
3374#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3375#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3376pub struct GcNewSessionEvent {}
3377impl GcNewSessionEvent {
3378    #[allow(unused_variables)]
3379    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3380        Ok(GcNewSessionEvent {})
3381    }
3382    #[allow(unused_variables)]
3383    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3384        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3385        match field {
3386            _ => Err(ParseError::MissingGameEventValue {
3387                ty: "GcNewSession",
3388                field: field.into(),
3389            }),
3390        }
3391    }
3392    #[allow(unused_variables)]
3393    fn write(
3394        &self,
3395        stream: &mut BitWriteStream<LittleEndian>,
3396        definition: &GameEventDefinition,
3397    ) -> Result<()> {
3398        for entry in &definition.entries {
3399            let value = self
3400                .get_field(&entry.name)
3401                .unwrap_or_else(|_| entry.kind.default_value());
3402            stream.write(&value)?;
3403        }
3404        Ok(())
3405    }
3406}
3407#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3408#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3409pub struct GcLostSessionEvent {}
3410impl GcLostSessionEvent {
3411    #[allow(unused_variables)]
3412    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3413        Ok(GcLostSessionEvent {})
3414    }
3415    #[allow(unused_variables)]
3416    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3417        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3418        match field {
3419            _ => Err(ParseError::MissingGameEventValue {
3420                ty: "GcLostSession",
3421                field: field.into(),
3422            }),
3423        }
3424    }
3425    #[allow(unused_variables)]
3426    fn write(
3427        &self,
3428        stream: &mut BitWriteStream<LittleEndian>,
3429        definition: &GameEventDefinition,
3430    ) -> Result<()> {
3431        for entry in &definition.entries {
3432            let value = self
3433                .get_field(&entry.name)
3434                .unwrap_or_else(|_| entry.kind.default_value());
3435            stream.write(&value)?;
3436        }
3437        Ok(())
3438    }
3439}
3440#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3441#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3442pub struct IntroFinishEvent {
3443    pub player: u16,
3444}
3445impl IntroFinishEvent {
3446    #[allow(unused_variables)]
3447    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3448        Ok(IntroFinishEvent {
3449            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
3450        })
3451    }
3452    #[allow(unused_variables)]
3453    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3454        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3455        match field {
3456            "player" => Ok(self.player.clone().into()),
3457            _ => Err(ParseError::MissingGameEventValue {
3458                ty: "IntroFinish",
3459                field: field.into(),
3460            }),
3461        }
3462    }
3463    #[allow(unused_variables)]
3464    fn write(
3465        &self,
3466        stream: &mut BitWriteStream<LittleEndian>,
3467        definition: &GameEventDefinition,
3468    ) -> Result<()> {
3469        for entry in &definition.entries {
3470            let value = self
3471                .get_field(&entry.name)
3472                .unwrap_or_else(|_| entry.kind.default_value());
3473            stream.write(&value)?;
3474        }
3475        Ok(())
3476    }
3477}
3478#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3479#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3480pub struct IntroNextCameraEvent {
3481    pub player: u16,
3482}
3483impl IntroNextCameraEvent {
3484    #[allow(unused_variables)]
3485    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3486        Ok(IntroNextCameraEvent {
3487            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
3488        })
3489    }
3490    #[allow(unused_variables)]
3491    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3492        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3493        match field {
3494            "player" => Ok(self.player.clone().into()),
3495            _ => Err(ParseError::MissingGameEventValue {
3496                ty: "IntroNextCamera",
3497                field: field.into(),
3498            }),
3499        }
3500    }
3501    #[allow(unused_variables)]
3502    fn write(
3503        &self,
3504        stream: &mut BitWriteStream<LittleEndian>,
3505        definition: &GameEventDefinition,
3506    ) -> Result<()> {
3507        for entry in &definition.entries {
3508            let value = self
3509                .get_field(&entry.name)
3510                .unwrap_or_else(|_| entry.kind.default_value());
3511            stream.write(&value)?;
3512        }
3513        Ok(())
3514    }
3515}
3516#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3517#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3518pub struct PlayerChangeClassEvent {
3519    pub user_id: u16,
3520    pub class: u16,
3521}
3522impl PlayerChangeClassEvent {
3523    #[allow(unused_variables)]
3524    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3525        Ok(PlayerChangeClassEvent {
3526            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
3527            class: read_value::<u16>(stream, definition.get_entry("class"), "class")?,
3528        })
3529    }
3530    #[allow(unused_variables)]
3531    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3532        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3533        match field {
3534            "userid" => Ok(self.user_id.clone().into()),
3535            "class" => Ok(self.class.clone().into()),
3536            _ => Err(ParseError::MissingGameEventValue {
3537                ty: "PlayerChangeClass",
3538                field: field.into(),
3539            }),
3540        }
3541    }
3542    #[allow(unused_variables)]
3543    fn write(
3544        &self,
3545        stream: &mut BitWriteStream<LittleEndian>,
3546        definition: &GameEventDefinition,
3547    ) -> Result<()> {
3548        for entry in &definition.entries {
3549            let value = self
3550                .get_field(&entry.name)
3551                .unwrap_or_else(|_| entry.kind.default_value());
3552            stream.write(&value)?;
3553        }
3554        Ok(())
3555    }
3556}
3557#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3558#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3559pub struct TfMapTimeRemainingEvent {
3560    pub seconds: u32,
3561}
3562impl TfMapTimeRemainingEvent {
3563    #[allow(unused_variables)]
3564    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3565        Ok(TfMapTimeRemainingEvent {
3566            seconds: read_value::<u32>(stream, definition.get_entry("seconds"), "seconds")?,
3567        })
3568    }
3569    #[allow(unused_variables)]
3570    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3571        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3572        match field {
3573            "seconds" => Ok(self.seconds.clone().into()),
3574            _ => Err(ParseError::MissingGameEventValue {
3575                ty: "TfMapTimeRemaining",
3576                field: field.into(),
3577            }),
3578        }
3579    }
3580    #[allow(unused_variables)]
3581    fn write(
3582        &self,
3583        stream: &mut BitWriteStream<LittleEndian>,
3584        definition: &GameEventDefinition,
3585    ) -> Result<()> {
3586        for entry in &definition.entries {
3587            let value = self
3588                .get_field(&entry.name)
3589                .unwrap_or_else(|_| entry.kind.default_value());
3590            stream.write(&value)?;
3591        }
3592        Ok(())
3593    }
3594}
3595#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3596#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3597pub struct TfGameOverEvent {
3598    pub reason: MaybeUtf8String,
3599}
3600impl TfGameOverEvent {
3601    #[allow(unused_variables)]
3602    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3603        Ok(TfGameOverEvent {
3604            reason: read_value::<MaybeUtf8String>(
3605                stream,
3606                definition.get_entry("reason"),
3607                "reason",
3608            )?,
3609        })
3610    }
3611    #[allow(unused_variables)]
3612    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3613        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3614        match field {
3615            "reason" => Ok(self.reason.clone().into()),
3616            _ => Err(ParseError::MissingGameEventValue {
3617                ty: "TfGameOver",
3618                field: field.into(),
3619            }),
3620        }
3621    }
3622    #[allow(unused_variables)]
3623    fn write(
3624        &self,
3625        stream: &mut BitWriteStream<LittleEndian>,
3626        definition: &GameEventDefinition,
3627    ) -> Result<()> {
3628        for entry in &definition.entries {
3629            let value = self
3630                .get_field(&entry.name)
3631                .unwrap_or_else(|_| entry.kind.default_value());
3632            stream.write(&value)?;
3633        }
3634        Ok(())
3635    }
3636}
3637#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3638#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3639pub struct CtfFlagCapturedEvent {
3640    pub capping_team: u16,
3641    pub capping_team_score: u16,
3642}
3643impl CtfFlagCapturedEvent {
3644    #[allow(unused_variables)]
3645    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3646        Ok(CtfFlagCapturedEvent {
3647            capping_team: read_value::<u16>(
3648                stream,
3649                definition.get_entry("capping_team"),
3650                "capping_team",
3651            )?,
3652            capping_team_score: read_value::<u16>(
3653                stream,
3654                definition.get_entry("capping_team_score"),
3655                "capping_team_score",
3656            )?,
3657        })
3658    }
3659    #[allow(unused_variables)]
3660    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3661        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3662        match field {
3663            "capping_team" => Ok(self.capping_team.clone().into()),
3664            "capping_team_score" => Ok(self.capping_team_score.clone().into()),
3665            _ => Err(ParseError::MissingGameEventValue {
3666                ty: "CtfFlagCaptured",
3667                field: field.into(),
3668            }),
3669        }
3670    }
3671    #[allow(unused_variables)]
3672    fn write(
3673        &self,
3674        stream: &mut BitWriteStream<LittleEndian>,
3675        definition: &GameEventDefinition,
3676    ) -> Result<()> {
3677        for entry in &definition.entries {
3678            let value = self
3679                .get_field(&entry.name)
3680                .unwrap_or_else(|_| entry.kind.default_value());
3681            stream.write(&value)?;
3682        }
3683        Ok(())
3684    }
3685}
3686#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3687#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3688pub struct ControlPointInitializedEvent {}
3689impl ControlPointInitializedEvent {
3690    #[allow(unused_variables)]
3691    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3692        Ok(ControlPointInitializedEvent {})
3693    }
3694    #[allow(unused_variables)]
3695    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3696        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3697        match field {
3698            _ => Err(ParseError::MissingGameEventValue {
3699                ty: "ControlPointInitialized",
3700                field: field.into(),
3701            }),
3702        }
3703    }
3704    #[allow(unused_variables)]
3705    fn write(
3706        &self,
3707        stream: &mut BitWriteStream<LittleEndian>,
3708        definition: &GameEventDefinition,
3709    ) -> Result<()> {
3710        for entry in &definition.entries {
3711            let value = self
3712                .get_field(&entry.name)
3713                .unwrap_or_else(|_| entry.kind.default_value());
3714            stream.write(&value)?;
3715        }
3716        Ok(())
3717    }
3718}
3719#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3720#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3721pub struct ControlPointUpdateImagesEvent {
3722    pub index: u16,
3723}
3724impl ControlPointUpdateImagesEvent {
3725    #[allow(unused_variables)]
3726    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3727        Ok(ControlPointUpdateImagesEvent {
3728            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
3729        })
3730    }
3731    #[allow(unused_variables)]
3732    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3733        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3734        match field {
3735            "index" => Ok(self.index.clone().into()),
3736            _ => Err(ParseError::MissingGameEventValue {
3737                ty: "ControlPointUpdateImages",
3738                field: field.into(),
3739            }),
3740        }
3741    }
3742    #[allow(unused_variables)]
3743    fn write(
3744        &self,
3745        stream: &mut BitWriteStream<LittleEndian>,
3746        definition: &GameEventDefinition,
3747    ) -> Result<()> {
3748        for entry in &definition.entries {
3749            let value = self
3750                .get_field(&entry.name)
3751                .unwrap_or_else(|_| entry.kind.default_value());
3752            stream.write(&value)?;
3753        }
3754        Ok(())
3755    }
3756}
3757#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3758#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3759pub struct ControlPointUpdateLayoutEvent {
3760    pub index: u16,
3761}
3762impl ControlPointUpdateLayoutEvent {
3763    #[allow(unused_variables)]
3764    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3765        Ok(ControlPointUpdateLayoutEvent {
3766            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
3767        })
3768    }
3769    #[allow(unused_variables)]
3770    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3771        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3772        match field {
3773            "index" => Ok(self.index.clone().into()),
3774            _ => Err(ParseError::MissingGameEventValue {
3775                ty: "ControlPointUpdateLayout",
3776                field: field.into(),
3777            }),
3778        }
3779    }
3780    #[allow(unused_variables)]
3781    fn write(
3782        &self,
3783        stream: &mut BitWriteStream<LittleEndian>,
3784        definition: &GameEventDefinition,
3785    ) -> Result<()> {
3786        for entry in &definition.entries {
3787            let value = self
3788                .get_field(&entry.name)
3789                .unwrap_or_else(|_| entry.kind.default_value());
3790            stream.write(&value)?;
3791        }
3792        Ok(())
3793    }
3794}
3795#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3796#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3797pub struct ControlPointUpdateCappingEvent {
3798    pub index: u16,
3799}
3800impl ControlPointUpdateCappingEvent {
3801    #[allow(unused_variables)]
3802    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3803        Ok(ControlPointUpdateCappingEvent {
3804            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
3805        })
3806    }
3807    #[allow(unused_variables)]
3808    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3809        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3810        match field {
3811            "index" => Ok(self.index.clone().into()),
3812            _ => Err(ParseError::MissingGameEventValue {
3813                ty: "ControlPointUpdateCapping",
3814                field: field.into(),
3815            }),
3816        }
3817    }
3818    #[allow(unused_variables)]
3819    fn write(
3820        &self,
3821        stream: &mut BitWriteStream<LittleEndian>,
3822        definition: &GameEventDefinition,
3823    ) -> Result<()> {
3824        for entry in &definition.entries {
3825            let value = self
3826                .get_field(&entry.name)
3827                .unwrap_or_else(|_| entry.kind.default_value());
3828            stream.write(&value)?;
3829        }
3830        Ok(())
3831    }
3832}
3833#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3834#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3835pub struct ControlPointUpdateOwnerEvent {
3836    pub index: u16,
3837}
3838impl ControlPointUpdateOwnerEvent {
3839    #[allow(unused_variables)]
3840    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3841        Ok(ControlPointUpdateOwnerEvent {
3842            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
3843        })
3844    }
3845    #[allow(unused_variables)]
3846    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3847        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3848        match field {
3849            "index" => Ok(self.index.clone().into()),
3850            _ => Err(ParseError::MissingGameEventValue {
3851                ty: "ControlPointUpdateOwner",
3852                field: field.into(),
3853            }),
3854        }
3855    }
3856    #[allow(unused_variables)]
3857    fn write(
3858        &self,
3859        stream: &mut BitWriteStream<LittleEndian>,
3860        definition: &GameEventDefinition,
3861    ) -> Result<()> {
3862        for entry in &definition.entries {
3863            let value = self
3864                .get_field(&entry.name)
3865                .unwrap_or_else(|_| entry.kind.default_value());
3866            stream.write(&value)?;
3867        }
3868        Ok(())
3869    }
3870}
3871#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3872#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3873pub struct ControlPointStartTouchEvent {
3874    pub player: u16,
3875    pub area: u16,
3876}
3877impl ControlPointStartTouchEvent {
3878    #[allow(unused_variables)]
3879    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3880        Ok(ControlPointStartTouchEvent {
3881            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
3882            area: read_value::<u16>(stream, definition.get_entry("area"), "area")?,
3883        })
3884    }
3885    #[allow(unused_variables)]
3886    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3887        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3888        match field {
3889            "player" => Ok(self.player.clone().into()),
3890            "area" => Ok(self.area.clone().into()),
3891            _ => Err(ParseError::MissingGameEventValue {
3892                ty: "ControlPointStartTouch",
3893                field: field.into(),
3894            }),
3895        }
3896    }
3897    #[allow(unused_variables)]
3898    fn write(
3899        &self,
3900        stream: &mut BitWriteStream<LittleEndian>,
3901        definition: &GameEventDefinition,
3902    ) -> Result<()> {
3903        for entry in &definition.entries {
3904            let value = self
3905                .get_field(&entry.name)
3906                .unwrap_or_else(|_| entry.kind.default_value());
3907            stream.write(&value)?;
3908        }
3909        Ok(())
3910    }
3911}
3912#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3913#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3914pub struct ControlPointEndTouchEvent {
3915    pub player: u16,
3916    pub area: u16,
3917}
3918impl ControlPointEndTouchEvent {
3919    #[allow(unused_variables)]
3920    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3921        Ok(ControlPointEndTouchEvent {
3922            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
3923            area: read_value::<u16>(stream, definition.get_entry("area"), "area")?,
3924        })
3925    }
3926    #[allow(unused_variables)]
3927    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3928        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3929        match field {
3930            "player" => Ok(self.player.clone().into()),
3931            "area" => Ok(self.area.clone().into()),
3932            _ => Err(ParseError::MissingGameEventValue {
3933                ty: "ControlPointEndTouch",
3934                field: field.into(),
3935            }),
3936        }
3937    }
3938    #[allow(unused_variables)]
3939    fn write(
3940        &self,
3941        stream: &mut BitWriteStream<LittleEndian>,
3942        definition: &GameEventDefinition,
3943    ) -> Result<()> {
3944        for entry in &definition.entries {
3945            let value = self
3946                .get_field(&entry.name)
3947                .unwrap_or_else(|_| entry.kind.default_value());
3948            stream.write(&value)?;
3949        }
3950        Ok(())
3951    }
3952}
3953#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3954#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3955pub struct ControlPointPulseElementEvent {
3956    pub player: u16,
3957}
3958impl ControlPointPulseElementEvent {
3959    #[allow(unused_variables)]
3960    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
3961        Ok(ControlPointPulseElementEvent {
3962            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
3963        })
3964    }
3965    #[allow(unused_variables)]
3966    fn get_field(&self, field: &str) -> Result<GameEventValue> {
3967        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
3968        match field {
3969            "player" => Ok(self.player.clone().into()),
3970            _ => Err(ParseError::MissingGameEventValue {
3971                ty: "ControlPointPulseElement",
3972                field: field.into(),
3973            }),
3974        }
3975    }
3976    #[allow(unused_variables)]
3977    fn write(
3978        &self,
3979        stream: &mut BitWriteStream<LittleEndian>,
3980        definition: &GameEventDefinition,
3981    ) -> Result<()> {
3982        for entry in &definition.entries {
3983            let value = self
3984                .get_field(&entry.name)
3985                .unwrap_or_else(|_| entry.kind.default_value());
3986            stream.write(&value)?;
3987        }
3988        Ok(())
3989    }
3990}
3991#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3992#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
3993pub struct ControlPointFakeCaptureEvent {
3994    pub player: u16,
3995    pub int_data: u16,
3996}
3997impl ControlPointFakeCaptureEvent {
3998    #[allow(unused_variables)]
3999    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4000        Ok(ControlPointFakeCaptureEvent {
4001            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
4002            int_data: read_value::<u16>(stream, definition.get_entry("int_data"), "int_data")?,
4003        })
4004    }
4005    #[allow(unused_variables)]
4006    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4007        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4008        match field {
4009            "player" => Ok(self.player.clone().into()),
4010            "int_data" => Ok(self.int_data.clone().into()),
4011            _ => Err(ParseError::MissingGameEventValue {
4012                ty: "ControlPointFakeCapture",
4013                field: field.into(),
4014            }),
4015        }
4016    }
4017    #[allow(unused_variables)]
4018    fn write(
4019        &self,
4020        stream: &mut BitWriteStream<LittleEndian>,
4021        definition: &GameEventDefinition,
4022    ) -> Result<()> {
4023        for entry in &definition.entries {
4024            let value = self
4025                .get_field(&entry.name)
4026                .unwrap_or_else(|_| entry.kind.default_value());
4027            stream.write(&value)?;
4028        }
4029        Ok(())
4030    }
4031}
4032#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4033#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4034pub struct ControlPointFakeCaptureMultiplierEvent {
4035    pub player: u16,
4036    pub int_data: u16,
4037}
4038impl ControlPointFakeCaptureMultiplierEvent {
4039    #[allow(unused_variables)]
4040    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4041        Ok(ControlPointFakeCaptureMultiplierEvent {
4042            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
4043            int_data: read_value::<u16>(stream, definition.get_entry("int_data"), "int_data")?,
4044        })
4045    }
4046    #[allow(unused_variables)]
4047    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4048        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4049        match field {
4050            "player" => Ok(self.player.clone().into()),
4051            "int_data" => Ok(self.int_data.clone().into()),
4052            _ => Err(ParseError::MissingGameEventValue {
4053                ty: "ControlPointFakeCaptureMultiplier",
4054                field: field.into(),
4055            }),
4056        }
4057    }
4058    #[allow(unused_variables)]
4059    fn write(
4060        &self,
4061        stream: &mut BitWriteStream<LittleEndian>,
4062        definition: &GameEventDefinition,
4063    ) -> Result<()> {
4064        for entry in &definition.entries {
4065            let value = self
4066                .get_field(&entry.name)
4067                .unwrap_or_else(|_| entry.kind.default_value());
4068            stream.write(&value)?;
4069        }
4070        Ok(())
4071    }
4072}
4073#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4074#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4075pub struct TeamPlayRoundSelectedEvent {
4076    pub round: MaybeUtf8String,
4077}
4078impl TeamPlayRoundSelectedEvent {
4079    #[allow(unused_variables)]
4080    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4081        Ok(TeamPlayRoundSelectedEvent {
4082            round: read_value::<MaybeUtf8String>(stream, definition.get_entry("round"), "round")?,
4083        })
4084    }
4085    #[allow(unused_variables)]
4086    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4087        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4088        match field {
4089            "round" => Ok(self.round.clone().into()),
4090            _ => Err(ParseError::MissingGameEventValue {
4091                ty: "TeamPlayRoundSelected",
4092                field: field.into(),
4093            }),
4094        }
4095    }
4096    #[allow(unused_variables)]
4097    fn write(
4098        &self,
4099        stream: &mut BitWriteStream<LittleEndian>,
4100        definition: &GameEventDefinition,
4101    ) -> Result<()> {
4102        for entry in &definition.entries {
4103            let value = self
4104                .get_field(&entry.name)
4105                .unwrap_or_else(|_| entry.kind.default_value());
4106            stream.write(&value)?;
4107        }
4108        Ok(())
4109    }
4110}
4111#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4112#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4113pub struct TeamPlayRoundStartEvent {
4114    pub full_reset: bool,
4115}
4116impl TeamPlayRoundStartEvent {
4117    #[allow(unused_variables)]
4118    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4119        Ok(TeamPlayRoundStartEvent {
4120            full_reset: read_value::<bool>(
4121                stream,
4122                definition.get_entry("full_reset"),
4123                "full_reset",
4124            )?,
4125        })
4126    }
4127    #[allow(unused_variables)]
4128    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4129        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4130        match field {
4131            "full_reset" => Ok(self.full_reset.clone().into()),
4132            _ => Err(ParseError::MissingGameEventValue {
4133                ty: "TeamPlayRoundStart",
4134                field: field.into(),
4135            }),
4136        }
4137    }
4138    #[allow(unused_variables)]
4139    fn write(
4140        &self,
4141        stream: &mut BitWriteStream<LittleEndian>,
4142        definition: &GameEventDefinition,
4143    ) -> Result<()> {
4144        for entry in &definition.entries {
4145            let value = self
4146                .get_field(&entry.name)
4147                .unwrap_or_else(|_| entry.kind.default_value());
4148            stream.write(&value)?;
4149        }
4150        Ok(())
4151    }
4152}
4153#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4154#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4155pub struct TeamPlayRoundActiveEvent {}
4156impl TeamPlayRoundActiveEvent {
4157    #[allow(unused_variables)]
4158    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4159        Ok(TeamPlayRoundActiveEvent {})
4160    }
4161    #[allow(unused_variables)]
4162    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4163        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4164        match field {
4165            _ => Err(ParseError::MissingGameEventValue {
4166                ty: "TeamPlayRoundActive",
4167                field: field.into(),
4168            }),
4169        }
4170    }
4171    #[allow(unused_variables)]
4172    fn write(
4173        &self,
4174        stream: &mut BitWriteStream<LittleEndian>,
4175        definition: &GameEventDefinition,
4176    ) -> Result<()> {
4177        for entry in &definition.entries {
4178            let value = self
4179                .get_field(&entry.name)
4180                .unwrap_or_else(|_| entry.kind.default_value());
4181            stream.write(&value)?;
4182        }
4183        Ok(())
4184    }
4185}
4186#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4187#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4188pub struct TeamPlayWaitingBeginsEvent {}
4189impl TeamPlayWaitingBeginsEvent {
4190    #[allow(unused_variables)]
4191    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4192        Ok(TeamPlayWaitingBeginsEvent {})
4193    }
4194    #[allow(unused_variables)]
4195    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4196        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4197        match field {
4198            _ => Err(ParseError::MissingGameEventValue {
4199                ty: "TeamPlayWaitingBegins",
4200                field: field.into(),
4201            }),
4202        }
4203    }
4204    #[allow(unused_variables)]
4205    fn write(
4206        &self,
4207        stream: &mut BitWriteStream<LittleEndian>,
4208        definition: &GameEventDefinition,
4209    ) -> Result<()> {
4210        for entry in &definition.entries {
4211            let value = self
4212                .get_field(&entry.name)
4213                .unwrap_or_else(|_| entry.kind.default_value());
4214            stream.write(&value)?;
4215        }
4216        Ok(())
4217    }
4218}
4219#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4220#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4221pub struct TeamPlayWaitingEndsEvent {}
4222impl TeamPlayWaitingEndsEvent {
4223    #[allow(unused_variables)]
4224    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4225        Ok(TeamPlayWaitingEndsEvent {})
4226    }
4227    #[allow(unused_variables)]
4228    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4229        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4230        match field {
4231            _ => Err(ParseError::MissingGameEventValue {
4232                ty: "TeamPlayWaitingEnds",
4233                field: field.into(),
4234            }),
4235        }
4236    }
4237    #[allow(unused_variables)]
4238    fn write(
4239        &self,
4240        stream: &mut BitWriteStream<LittleEndian>,
4241        definition: &GameEventDefinition,
4242    ) -> Result<()> {
4243        for entry in &definition.entries {
4244            let value = self
4245                .get_field(&entry.name)
4246                .unwrap_or_else(|_| entry.kind.default_value());
4247            stream.write(&value)?;
4248        }
4249        Ok(())
4250    }
4251}
4252#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4253#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4254pub struct TeamPlayWaitingAboutToEndEvent {}
4255impl TeamPlayWaitingAboutToEndEvent {
4256    #[allow(unused_variables)]
4257    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4258        Ok(TeamPlayWaitingAboutToEndEvent {})
4259    }
4260    #[allow(unused_variables)]
4261    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4262        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4263        match field {
4264            _ => Err(ParseError::MissingGameEventValue {
4265                ty: "TeamPlayWaitingAboutToEnd",
4266                field: field.into(),
4267            }),
4268        }
4269    }
4270    #[allow(unused_variables)]
4271    fn write(
4272        &self,
4273        stream: &mut BitWriteStream<LittleEndian>,
4274        definition: &GameEventDefinition,
4275    ) -> Result<()> {
4276        for entry in &definition.entries {
4277            let value = self
4278                .get_field(&entry.name)
4279                .unwrap_or_else(|_| entry.kind.default_value());
4280            stream.write(&value)?;
4281        }
4282        Ok(())
4283    }
4284}
4285#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4286#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4287pub struct TeamPlayRestartRoundEvent {}
4288impl TeamPlayRestartRoundEvent {
4289    #[allow(unused_variables)]
4290    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4291        Ok(TeamPlayRestartRoundEvent {})
4292    }
4293    #[allow(unused_variables)]
4294    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4295        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4296        match field {
4297            _ => Err(ParseError::MissingGameEventValue {
4298                ty: "TeamPlayRestartRound",
4299                field: field.into(),
4300            }),
4301        }
4302    }
4303    #[allow(unused_variables)]
4304    fn write(
4305        &self,
4306        stream: &mut BitWriteStream<LittleEndian>,
4307        definition: &GameEventDefinition,
4308    ) -> Result<()> {
4309        for entry in &definition.entries {
4310            let value = self
4311                .get_field(&entry.name)
4312                .unwrap_or_else(|_| entry.kind.default_value());
4313            stream.write(&value)?;
4314        }
4315        Ok(())
4316    }
4317}
4318#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4319#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4320pub struct TeamPlayReadyRestartEvent {}
4321impl TeamPlayReadyRestartEvent {
4322    #[allow(unused_variables)]
4323    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4324        Ok(TeamPlayReadyRestartEvent {})
4325    }
4326    #[allow(unused_variables)]
4327    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4328        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4329        match field {
4330            _ => Err(ParseError::MissingGameEventValue {
4331                ty: "TeamPlayReadyRestart",
4332                field: field.into(),
4333            }),
4334        }
4335    }
4336    #[allow(unused_variables)]
4337    fn write(
4338        &self,
4339        stream: &mut BitWriteStream<LittleEndian>,
4340        definition: &GameEventDefinition,
4341    ) -> Result<()> {
4342        for entry in &definition.entries {
4343            let value = self
4344                .get_field(&entry.name)
4345                .unwrap_or_else(|_| entry.kind.default_value());
4346            stream.write(&value)?;
4347        }
4348        Ok(())
4349    }
4350}
4351#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4352#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4353pub struct TeamPlayRoundRestartSecondsEvent {
4354    pub seconds: u16,
4355}
4356impl TeamPlayRoundRestartSecondsEvent {
4357    #[allow(unused_variables)]
4358    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4359        Ok(TeamPlayRoundRestartSecondsEvent {
4360            seconds: read_value::<u16>(stream, definition.get_entry("seconds"), "seconds")?,
4361        })
4362    }
4363    #[allow(unused_variables)]
4364    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4365        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4366        match field {
4367            "seconds" => Ok(self.seconds.clone().into()),
4368            _ => Err(ParseError::MissingGameEventValue {
4369                ty: "TeamPlayRoundRestartSeconds",
4370                field: field.into(),
4371            }),
4372        }
4373    }
4374    #[allow(unused_variables)]
4375    fn write(
4376        &self,
4377        stream: &mut BitWriteStream<LittleEndian>,
4378        definition: &GameEventDefinition,
4379    ) -> Result<()> {
4380        for entry in &definition.entries {
4381            let value = self
4382                .get_field(&entry.name)
4383                .unwrap_or_else(|_| entry.kind.default_value());
4384            stream.write(&value)?;
4385        }
4386        Ok(())
4387    }
4388}
4389#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4390#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4391pub struct TeamPlayTeamReadyEvent {
4392    pub team: u8,
4393}
4394impl TeamPlayTeamReadyEvent {
4395    #[allow(unused_variables)]
4396    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4397        Ok(TeamPlayTeamReadyEvent {
4398            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
4399        })
4400    }
4401    #[allow(unused_variables)]
4402    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4403        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4404        match field {
4405            "team" => Ok(self.team.clone().into()),
4406            _ => Err(ParseError::MissingGameEventValue {
4407                ty: "TeamPlayTeamReady",
4408                field: field.into(),
4409            }),
4410        }
4411    }
4412    #[allow(unused_variables)]
4413    fn write(
4414        &self,
4415        stream: &mut BitWriteStream<LittleEndian>,
4416        definition: &GameEventDefinition,
4417    ) -> Result<()> {
4418        for entry in &definition.entries {
4419            let value = self
4420                .get_field(&entry.name)
4421                .unwrap_or_else(|_| entry.kind.default_value());
4422            stream.write(&value)?;
4423        }
4424        Ok(())
4425    }
4426}
4427#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4428#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4429pub struct TeamPlayRoundWinEvent {
4430    pub team: u8,
4431    pub win_reason: u8,
4432    pub flag_cap_limit: u16,
4433    pub full_round: u16,
4434    pub round_time: f32,
4435    pub losing_team_num_caps: u16,
4436    pub was_sudden_death: u8,
4437}
4438impl TeamPlayRoundWinEvent {
4439    #[allow(unused_variables)]
4440    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4441        Ok(TeamPlayRoundWinEvent {
4442            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
4443            win_reason: read_value::<u8>(stream, definition.get_entry("winreason"), "win_reason")?,
4444            flag_cap_limit: read_value::<u16>(
4445                stream,
4446                definition.get_entry("flagcaplimit"),
4447                "flag_cap_limit",
4448            )?,
4449            full_round: read_value::<u16>(
4450                stream,
4451                definition.get_entry("full_round"),
4452                "full_round",
4453            )?,
4454            round_time: read_value::<f32>(
4455                stream,
4456                definition.get_entry("round_time"),
4457                "round_time",
4458            )?,
4459            losing_team_num_caps: read_value::<u16>(
4460                stream,
4461                definition.get_entry("losing_team_num_caps"),
4462                "losing_team_num_caps",
4463            )?,
4464            was_sudden_death: read_value::<u8>(
4465                stream,
4466                definition.get_entry("was_sudden_death"),
4467                "was_sudden_death",
4468            )?,
4469        })
4470    }
4471    #[allow(unused_variables)]
4472    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4473        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4474        match field {
4475            "team" => Ok(self.team.clone().into()),
4476            "winreason" => Ok(self.win_reason.clone().into()),
4477            "flagcaplimit" => Ok(self.flag_cap_limit.clone().into()),
4478            "full_round" => Ok(self.full_round.clone().into()),
4479            "round_time" => Ok(self.round_time.clone().into()),
4480            "losing_team_num_caps" => Ok(self.losing_team_num_caps.clone().into()),
4481            "was_sudden_death" => Ok(self.was_sudden_death.clone().into()),
4482            _ => Err(ParseError::MissingGameEventValue {
4483                ty: "TeamPlayRoundWin",
4484                field: field.into(),
4485            }),
4486        }
4487    }
4488    #[allow(unused_variables)]
4489    fn write(
4490        &self,
4491        stream: &mut BitWriteStream<LittleEndian>,
4492        definition: &GameEventDefinition,
4493    ) -> Result<()> {
4494        for entry in &definition.entries {
4495            let value = self
4496                .get_field(&entry.name)
4497                .unwrap_or_else(|_| entry.kind.default_value());
4498            stream.write(&value)?;
4499        }
4500        Ok(())
4501    }
4502}
4503#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4504#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4505pub struct TeamPlayUpdateTimerEvent {}
4506impl TeamPlayUpdateTimerEvent {
4507    #[allow(unused_variables)]
4508    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4509        Ok(TeamPlayUpdateTimerEvent {})
4510    }
4511    #[allow(unused_variables)]
4512    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4513        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4514        match field {
4515            _ => Err(ParseError::MissingGameEventValue {
4516                ty: "TeamPlayUpdateTimer",
4517                field: field.into(),
4518            }),
4519        }
4520    }
4521    #[allow(unused_variables)]
4522    fn write(
4523        &self,
4524        stream: &mut BitWriteStream<LittleEndian>,
4525        definition: &GameEventDefinition,
4526    ) -> Result<()> {
4527        for entry in &definition.entries {
4528            let value = self
4529                .get_field(&entry.name)
4530                .unwrap_or_else(|_| entry.kind.default_value());
4531            stream.write(&value)?;
4532        }
4533        Ok(())
4534    }
4535}
4536#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4537#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4538pub struct TeamPlayRoundStalemateEvent {
4539    pub reason: u8,
4540}
4541impl TeamPlayRoundStalemateEvent {
4542    #[allow(unused_variables)]
4543    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4544        Ok(TeamPlayRoundStalemateEvent {
4545            reason: read_value::<u8>(stream, definition.get_entry("reason"), "reason")?,
4546        })
4547    }
4548    #[allow(unused_variables)]
4549    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4550        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4551        match field {
4552            "reason" => Ok(self.reason.clone().into()),
4553            _ => Err(ParseError::MissingGameEventValue {
4554                ty: "TeamPlayRoundStalemate",
4555                field: field.into(),
4556            }),
4557        }
4558    }
4559    #[allow(unused_variables)]
4560    fn write(
4561        &self,
4562        stream: &mut BitWriteStream<LittleEndian>,
4563        definition: &GameEventDefinition,
4564    ) -> Result<()> {
4565        for entry in &definition.entries {
4566            let value = self
4567                .get_field(&entry.name)
4568                .unwrap_or_else(|_| entry.kind.default_value());
4569            stream.write(&value)?;
4570        }
4571        Ok(())
4572    }
4573}
4574#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4575#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4576pub struct TeamPlayOvertimeBeginEvent {}
4577impl TeamPlayOvertimeBeginEvent {
4578    #[allow(unused_variables)]
4579    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4580        Ok(TeamPlayOvertimeBeginEvent {})
4581    }
4582    #[allow(unused_variables)]
4583    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4584        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4585        match field {
4586            _ => Err(ParseError::MissingGameEventValue {
4587                ty: "TeamPlayOvertimeBegin",
4588                field: field.into(),
4589            }),
4590        }
4591    }
4592    #[allow(unused_variables)]
4593    fn write(
4594        &self,
4595        stream: &mut BitWriteStream<LittleEndian>,
4596        definition: &GameEventDefinition,
4597    ) -> Result<()> {
4598        for entry in &definition.entries {
4599            let value = self
4600                .get_field(&entry.name)
4601                .unwrap_or_else(|_| entry.kind.default_value());
4602            stream.write(&value)?;
4603        }
4604        Ok(())
4605    }
4606}
4607#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4608#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4609pub struct TeamPlayOvertimeEndEvent {}
4610impl TeamPlayOvertimeEndEvent {
4611    #[allow(unused_variables)]
4612    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4613        Ok(TeamPlayOvertimeEndEvent {})
4614    }
4615    #[allow(unused_variables)]
4616    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4617        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4618        match field {
4619            _ => Err(ParseError::MissingGameEventValue {
4620                ty: "TeamPlayOvertimeEnd",
4621                field: field.into(),
4622            }),
4623        }
4624    }
4625    #[allow(unused_variables)]
4626    fn write(
4627        &self,
4628        stream: &mut BitWriteStream<LittleEndian>,
4629        definition: &GameEventDefinition,
4630    ) -> Result<()> {
4631        for entry in &definition.entries {
4632            let value = self
4633                .get_field(&entry.name)
4634                .unwrap_or_else(|_| entry.kind.default_value());
4635            stream.write(&value)?;
4636        }
4637        Ok(())
4638    }
4639}
4640#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4641#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4642pub struct TeamPlaySuddenDeathBeginEvent {}
4643impl TeamPlaySuddenDeathBeginEvent {
4644    #[allow(unused_variables)]
4645    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4646        Ok(TeamPlaySuddenDeathBeginEvent {})
4647    }
4648    #[allow(unused_variables)]
4649    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4650        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4651        match field {
4652            _ => Err(ParseError::MissingGameEventValue {
4653                ty: "TeamPlaySuddenDeathBegin",
4654                field: field.into(),
4655            }),
4656        }
4657    }
4658    #[allow(unused_variables)]
4659    fn write(
4660        &self,
4661        stream: &mut BitWriteStream<LittleEndian>,
4662        definition: &GameEventDefinition,
4663    ) -> Result<()> {
4664        for entry in &definition.entries {
4665            let value = self
4666                .get_field(&entry.name)
4667                .unwrap_or_else(|_| entry.kind.default_value());
4668            stream.write(&value)?;
4669        }
4670        Ok(())
4671    }
4672}
4673#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4674#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4675pub struct TeamPlaySuddenDeathEndEvent {}
4676impl TeamPlaySuddenDeathEndEvent {
4677    #[allow(unused_variables)]
4678    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4679        Ok(TeamPlaySuddenDeathEndEvent {})
4680    }
4681    #[allow(unused_variables)]
4682    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4683        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4684        match field {
4685            _ => Err(ParseError::MissingGameEventValue {
4686                ty: "TeamPlaySuddenDeathEnd",
4687                field: field.into(),
4688            }),
4689        }
4690    }
4691    #[allow(unused_variables)]
4692    fn write(
4693        &self,
4694        stream: &mut BitWriteStream<LittleEndian>,
4695        definition: &GameEventDefinition,
4696    ) -> Result<()> {
4697        for entry in &definition.entries {
4698            let value = self
4699                .get_field(&entry.name)
4700                .unwrap_or_else(|_| entry.kind.default_value());
4701            stream.write(&value)?;
4702        }
4703        Ok(())
4704    }
4705}
4706#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4707#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4708pub struct TeamPlayGameOverEvent {
4709    pub reason: MaybeUtf8String,
4710}
4711impl TeamPlayGameOverEvent {
4712    #[allow(unused_variables)]
4713    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4714        Ok(TeamPlayGameOverEvent {
4715            reason: read_value::<MaybeUtf8String>(
4716                stream,
4717                definition.get_entry("reason"),
4718                "reason",
4719            )?,
4720        })
4721    }
4722    #[allow(unused_variables)]
4723    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4724        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4725        match field {
4726            "reason" => Ok(self.reason.clone().into()),
4727            _ => Err(ParseError::MissingGameEventValue {
4728                ty: "TeamPlayGameOver",
4729                field: field.into(),
4730            }),
4731        }
4732    }
4733    #[allow(unused_variables)]
4734    fn write(
4735        &self,
4736        stream: &mut BitWriteStream<LittleEndian>,
4737        definition: &GameEventDefinition,
4738    ) -> Result<()> {
4739        for entry in &definition.entries {
4740            let value = self
4741                .get_field(&entry.name)
4742                .unwrap_or_else(|_| entry.kind.default_value());
4743            stream.write(&value)?;
4744        }
4745        Ok(())
4746    }
4747}
4748#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4749#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4750pub struct TeamPlayMapTimeRemainingEvent {
4751    pub seconds: u16,
4752}
4753impl TeamPlayMapTimeRemainingEvent {
4754    #[allow(unused_variables)]
4755    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4756        Ok(TeamPlayMapTimeRemainingEvent {
4757            seconds: read_value::<u16>(stream, definition.get_entry("seconds"), "seconds")?,
4758        })
4759    }
4760    #[allow(unused_variables)]
4761    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4762        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4763        match field {
4764            "seconds" => Ok(self.seconds.clone().into()),
4765            _ => Err(ParseError::MissingGameEventValue {
4766                ty: "TeamPlayMapTimeRemaining",
4767                field: field.into(),
4768            }),
4769        }
4770    }
4771    #[allow(unused_variables)]
4772    fn write(
4773        &self,
4774        stream: &mut BitWriteStream<LittleEndian>,
4775        definition: &GameEventDefinition,
4776    ) -> Result<()> {
4777        for entry in &definition.entries {
4778            let value = self
4779                .get_field(&entry.name)
4780                .unwrap_or_else(|_| entry.kind.default_value());
4781            stream.write(&value)?;
4782        }
4783        Ok(())
4784    }
4785}
4786#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4787#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4788pub struct TeamPlayTimerFlashEvent {
4789    pub time_remaining: u16,
4790}
4791impl TeamPlayTimerFlashEvent {
4792    #[allow(unused_variables)]
4793    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4794        Ok(TeamPlayTimerFlashEvent {
4795            time_remaining: read_value::<u16>(
4796                stream,
4797                definition.get_entry("time_remaining"),
4798                "time_remaining",
4799            )?,
4800        })
4801    }
4802    #[allow(unused_variables)]
4803    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4804        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4805        match field {
4806            "time_remaining" => Ok(self.time_remaining.clone().into()),
4807            _ => Err(ParseError::MissingGameEventValue {
4808                ty: "TeamPlayTimerFlash",
4809                field: field.into(),
4810            }),
4811        }
4812    }
4813    #[allow(unused_variables)]
4814    fn write(
4815        &self,
4816        stream: &mut BitWriteStream<LittleEndian>,
4817        definition: &GameEventDefinition,
4818    ) -> Result<()> {
4819        for entry in &definition.entries {
4820            let value = self
4821                .get_field(&entry.name)
4822                .unwrap_or_else(|_| entry.kind.default_value());
4823            stream.write(&value)?;
4824        }
4825        Ok(())
4826    }
4827}
4828#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4829#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4830pub struct TeamPlayTimerTimeAddedEvent {
4831    pub timer: u16,
4832    pub seconds_added: u16,
4833}
4834impl TeamPlayTimerTimeAddedEvent {
4835    #[allow(unused_variables)]
4836    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4837        Ok(TeamPlayTimerTimeAddedEvent {
4838            timer: read_value::<u16>(stream, definition.get_entry("timer"), "timer")?,
4839            seconds_added: read_value::<u16>(
4840                stream,
4841                definition.get_entry("seconds_added"),
4842                "seconds_added",
4843            )?,
4844        })
4845    }
4846    #[allow(unused_variables)]
4847    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4848        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4849        match field {
4850            "timer" => Ok(self.timer.clone().into()),
4851            "seconds_added" => Ok(self.seconds_added.clone().into()),
4852            _ => Err(ParseError::MissingGameEventValue {
4853                ty: "TeamPlayTimerTimeAdded",
4854                field: field.into(),
4855            }),
4856        }
4857    }
4858    #[allow(unused_variables)]
4859    fn write(
4860        &self,
4861        stream: &mut BitWriteStream<LittleEndian>,
4862        definition: &GameEventDefinition,
4863    ) -> Result<()> {
4864        for entry in &definition.entries {
4865            let value = self
4866                .get_field(&entry.name)
4867                .unwrap_or_else(|_| entry.kind.default_value());
4868            stream.write(&value)?;
4869        }
4870        Ok(())
4871    }
4872}
4873#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4874#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4875pub struct TeamPlayPointStartCaptureEvent {
4876    pub cp: u8,
4877    pub cp_name: MaybeUtf8String,
4878    pub team: u8,
4879    pub cap_team: u8,
4880    pub cappers: MaybeUtf8String,
4881    pub cap_time: f32,
4882}
4883impl TeamPlayPointStartCaptureEvent {
4884    #[allow(unused_variables)]
4885    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4886        Ok(TeamPlayPointStartCaptureEvent {
4887            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
4888            cp_name: read_value::<MaybeUtf8String>(
4889                stream,
4890                definition.get_entry("cpname"),
4891                "cp_name",
4892            )?,
4893            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
4894            cap_team: read_value::<u8>(stream, definition.get_entry("capteam"), "cap_team")?,
4895            cappers: read_value::<MaybeUtf8String>(
4896                stream,
4897                definition.get_entry("cappers"),
4898                "cappers",
4899            )?,
4900            cap_time: read_value::<f32>(stream, definition.get_entry("captime"), "cap_time")?,
4901        })
4902    }
4903    #[allow(unused_variables)]
4904    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4905        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4906        match field {
4907            "cp" => Ok(self.cp.clone().into()),
4908            "cpname" => Ok(self.cp_name.clone().into()),
4909            "team" => Ok(self.team.clone().into()),
4910            "capteam" => Ok(self.cap_team.clone().into()),
4911            "cappers" => Ok(self.cappers.clone().into()),
4912            "captime" => Ok(self.cap_time.clone().into()),
4913            _ => Err(ParseError::MissingGameEventValue {
4914                ty: "TeamPlayPointStartCapture",
4915                field: field.into(),
4916            }),
4917        }
4918    }
4919    #[allow(unused_variables)]
4920    fn write(
4921        &self,
4922        stream: &mut BitWriteStream<LittleEndian>,
4923        definition: &GameEventDefinition,
4924    ) -> Result<()> {
4925        for entry in &definition.entries {
4926            let value = self
4927                .get_field(&entry.name)
4928                .unwrap_or_else(|_| entry.kind.default_value());
4929            stream.write(&value)?;
4930        }
4931        Ok(())
4932    }
4933}
4934#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4935#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4936pub struct TeamPlayPointCapturedEvent {
4937    pub cp: u8,
4938    pub cp_name: MaybeUtf8String,
4939    pub team: u8,
4940    pub cappers: MaybeUtf8String,
4941}
4942impl TeamPlayPointCapturedEvent {
4943    #[allow(unused_variables)]
4944    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4945        Ok(TeamPlayPointCapturedEvent {
4946            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
4947            cp_name: read_value::<MaybeUtf8String>(
4948                stream,
4949                definition.get_entry("cpname"),
4950                "cp_name",
4951            )?,
4952            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
4953            cappers: read_value::<MaybeUtf8String>(
4954                stream,
4955                definition.get_entry("cappers"),
4956                "cappers",
4957            )?,
4958        })
4959    }
4960    #[allow(unused_variables)]
4961    fn get_field(&self, field: &str) -> Result<GameEventValue> {
4962        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
4963        match field {
4964            "cp" => Ok(self.cp.clone().into()),
4965            "cpname" => Ok(self.cp_name.clone().into()),
4966            "team" => Ok(self.team.clone().into()),
4967            "cappers" => Ok(self.cappers.clone().into()),
4968            _ => Err(ParseError::MissingGameEventValue {
4969                ty: "TeamPlayPointCaptured",
4970                field: field.into(),
4971            }),
4972        }
4973    }
4974    #[allow(unused_variables)]
4975    fn write(
4976        &self,
4977        stream: &mut BitWriteStream<LittleEndian>,
4978        definition: &GameEventDefinition,
4979    ) -> Result<()> {
4980        for entry in &definition.entries {
4981            let value = self
4982                .get_field(&entry.name)
4983                .unwrap_or_else(|_| entry.kind.default_value());
4984            stream.write(&value)?;
4985        }
4986        Ok(())
4987    }
4988}
4989#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4990#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4991pub struct TeamPlayPointLockedEvent {
4992    pub cp: u8,
4993    pub cp_name: MaybeUtf8String,
4994    pub team: u8,
4995}
4996impl TeamPlayPointLockedEvent {
4997    #[allow(unused_variables)]
4998    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
4999        Ok(TeamPlayPointLockedEvent {
5000            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
5001            cp_name: read_value::<MaybeUtf8String>(
5002                stream,
5003                definition.get_entry("cpname"),
5004                "cp_name",
5005            )?,
5006            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
5007        })
5008    }
5009    #[allow(unused_variables)]
5010    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5011        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5012        match field {
5013            "cp" => Ok(self.cp.clone().into()),
5014            "cpname" => Ok(self.cp_name.clone().into()),
5015            "team" => Ok(self.team.clone().into()),
5016            _ => Err(ParseError::MissingGameEventValue {
5017                ty: "TeamPlayPointLocked",
5018                field: field.into(),
5019            }),
5020        }
5021    }
5022    #[allow(unused_variables)]
5023    fn write(
5024        &self,
5025        stream: &mut BitWriteStream<LittleEndian>,
5026        definition: &GameEventDefinition,
5027    ) -> Result<()> {
5028        for entry in &definition.entries {
5029            let value = self
5030                .get_field(&entry.name)
5031                .unwrap_or_else(|_| entry.kind.default_value());
5032            stream.write(&value)?;
5033        }
5034        Ok(())
5035    }
5036}
5037#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5038#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5039pub struct TeamPlayPointUnlockedEvent {
5040    pub cp: u8,
5041    pub cp_name: MaybeUtf8String,
5042    pub team: u8,
5043}
5044impl TeamPlayPointUnlockedEvent {
5045    #[allow(unused_variables)]
5046    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5047        Ok(TeamPlayPointUnlockedEvent {
5048            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
5049            cp_name: read_value::<MaybeUtf8String>(
5050                stream,
5051                definition.get_entry("cpname"),
5052                "cp_name",
5053            )?,
5054            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
5055        })
5056    }
5057    #[allow(unused_variables)]
5058    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5059        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5060        match field {
5061            "cp" => Ok(self.cp.clone().into()),
5062            "cpname" => Ok(self.cp_name.clone().into()),
5063            "team" => Ok(self.team.clone().into()),
5064            _ => Err(ParseError::MissingGameEventValue {
5065                ty: "TeamPlayPointUnlocked",
5066                field: field.into(),
5067            }),
5068        }
5069    }
5070    #[allow(unused_variables)]
5071    fn write(
5072        &self,
5073        stream: &mut BitWriteStream<LittleEndian>,
5074        definition: &GameEventDefinition,
5075    ) -> Result<()> {
5076        for entry in &definition.entries {
5077            let value = self
5078                .get_field(&entry.name)
5079                .unwrap_or_else(|_| entry.kind.default_value());
5080            stream.write(&value)?;
5081        }
5082        Ok(())
5083    }
5084}
5085#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5086#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5087pub struct TeamPlayCaptureBrokenEvent {
5088    pub cp: u8,
5089    pub cp_name: MaybeUtf8String,
5090    pub time_remaining: f32,
5091}
5092impl TeamPlayCaptureBrokenEvent {
5093    #[allow(unused_variables)]
5094    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5095        Ok(TeamPlayCaptureBrokenEvent {
5096            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
5097            cp_name: read_value::<MaybeUtf8String>(
5098                stream,
5099                definition.get_entry("cpname"),
5100                "cp_name",
5101            )?,
5102            time_remaining: read_value::<f32>(
5103                stream,
5104                definition.get_entry("time_remaining"),
5105                "time_remaining",
5106            )?,
5107        })
5108    }
5109    #[allow(unused_variables)]
5110    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5111        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5112        match field {
5113            "cp" => Ok(self.cp.clone().into()),
5114            "cpname" => Ok(self.cp_name.clone().into()),
5115            "time_remaining" => Ok(self.time_remaining.clone().into()),
5116            _ => Err(ParseError::MissingGameEventValue {
5117                ty: "TeamPlayCaptureBroken",
5118                field: field.into(),
5119            }),
5120        }
5121    }
5122    #[allow(unused_variables)]
5123    fn write(
5124        &self,
5125        stream: &mut BitWriteStream<LittleEndian>,
5126        definition: &GameEventDefinition,
5127    ) -> Result<()> {
5128        for entry in &definition.entries {
5129            let value = self
5130                .get_field(&entry.name)
5131                .unwrap_or_else(|_| entry.kind.default_value());
5132            stream.write(&value)?;
5133        }
5134        Ok(())
5135    }
5136}
5137#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5138#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5139pub struct TeamPlayCaptureBlockedEvent {
5140    pub cp: u8,
5141    pub cp_name: MaybeUtf8String,
5142    pub blocker: u8,
5143    pub victim: u8,
5144}
5145impl TeamPlayCaptureBlockedEvent {
5146    #[allow(unused_variables)]
5147    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5148        Ok(TeamPlayCaptureBlockedEvent {
5149            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
5150            cp_name: read_value::<MaybeUtf8String>(
5151                stream,
5152                definition.get_entry("cpname"),
5153                "cp_name",
5154            )?,
5155            blocker: read_value::<u8>(stream, definition.get_entry("blocker"), "blocker")?,
5156            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
5157        })
5158    }
5159    #[allow(unused_variables)]
5160    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5161        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5162        match field {
5163            "cp" => Ok(self.cp.clone().into()),
5164            "cpname" => Ok(self.cp_name.clone().into()),
5165            "blocker" => Ok(self.blocker.clone().into()),
5166            "victim" => Ok(self.victim.clone().into()),
5167            _ => Err(ParseError::MissingGameEventValue {
5168                ty: "TeamPlayCaptureBlocked",
5169                field: field.into(),
5170            }),
5171        }
5172    }
5173    #[allow(unused_variables)]
5174    fn write(
5175        &self,
5176        stream: &mut BitWriteStream<LittleEndian>,
5177        definition: &GameEventDefinition,
5178    ) -> Result<()> {
5179        for entry in &definition.entries {
5180            let value = self
5181                .get_field(&entry.name)
5182                .unwrap_or_else(|_| entry.kind.default_value());
5183            stream.write(&value)?;
5184        }
5185        Ok(())
5186    }
5187}
5188#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5189#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5190pub struct TeamPlayFlagEventEvent {
5191    pub player: u16,
5192    pub carrier: u16,
5193    pub event_type: u16,
5194    pub home: u8,
5195    pub team: u8,
5196}
5197impl TeamPlayFlagEventEvent {
5198    #[allow(unused_variables)]
5199    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5200        Ok(TeamPlayFlagEventEvent {
5201            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
5202            carrier: read_value::<u16>(stream, definition.get_entry("carrier"), "carrier")?,
5203            event_type: read_value::<u16>(stream, definition.get_entry("eventtype"), "event_type")?,
5204            home: read_value::<u8>(stream, definition.get_entry("home"), "home")?,
5205            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
5206        })
5207    }
5208    #[allow(unused_variables)]
5209    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5210        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5211        match field {
5212            "player" => Ok(self.player.clone().into()),
5213            "carrier" => Ok(self.carrier.clone().into()),
5214            "eventtype" => Ok(self.event_type.clone().into()),
5215            "home" => Ok(self.home.clone().into()),
5216            "team" => Ok(self.team.clone().into()),
5217            _ => Err(ParseError::MissingGameEventValue {
5218                ty: "TeamPlayFlagEvent",
5219                field: field.into(),
5220            }),
5221        }
5222    }
5223    #[allow(unused_variables)]
5224    fn write(
5225        &self,
5226        stream: &mut BitWriteStream<LittleEndian>,
5227        definition: &GameEventDefinition,
5228    ) -> Result<()> {
5229        for entry in &definition.entries {
5230            let value = self
5231                .get_field(&entry.name)
5232                .unwrap_or_else(|_| entry.kind.default_value());
5233            stream.write(&value)?;
5234        }
5235        Ok(())
5236    }
5237}
5238#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5239#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5240pub struct TeamPlayWinPanelEvent {
5241    pub panel_style: u8,
5242    pub winning_team: u8,
5243    pub win_reason: u8,
5244    pub cappers: MaybeUtf8String,
5245    pub flag_cap_limit: u16,
5246    pub blue_score: u16,
5247    pub red_score: u16,
5248    pub blue_score_prev: u16,
5249    pub red_score_prev: u16,
5250    pub round_complete: u16,
5251    pub rounds_remaining: u16,
5252    pub player_1: u16,
5253    pub player_1_points: u16,
5254    pub player_2: u16,
5255    pub player_2_points: u16,
5256    pub player_3: u16,
5257    pub player_3_points: u16,
5258    pub kill_stream_player_1: u16,
5259    pub kill_stream_player_1_count: u16,
5260    pub game_over: u8,
5261}
5262impl TeamPlayWinPanelEvent {
5263    #[allow(unused_variables)]
5264    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5265        Ok(TeamPlayWinPanelEvent {
5266            panel_style: read_value::<u8>(
5267                stream,
5268                definition.get_entry("panel_style"),
5269                "panel_style",
5270            )?,
5271            winning_team: read_value::<u8>(
5272                stream,
5273                definition.get_entry("winning_team"),
5274                "winning_team",
5275            )?,
5276            win_reason: read_value::<u8>(stream, definition.get_entry("winreason"), "win_reason")?,
5277            cappers: read_value::<MaybeUtf8String>(
5278                stream,
5279                definition.get_entry("cappers"),
5280                "cappers",
5281            )?,
5282            flag_cap_limit: read_value::<u16>(
5283                stream,
5284                definition.get_entry("flagcaplimit"),
5285                "flag_cap_limit",
5286            )?,
5287            blue_score: read_value::<u16>(
5288                stream,
5289                definition.get_entry("blue_score"),
5290                "blue_score",
5291            )?,
5292            red_score: read_value::<u16>(stream, definition.get_entry("red_score"), "red_score")?,
5293            blue_score_prev: read_value::<u16>(
5294                stream,
5295                definition.get_entry("blue_score_prev"),
5296                "blue_score_prev",
5297            )?,
5298            red_score_prev: read_value::<u16>(
5299                stream,
5300                definition.get_entry("red_score_prev"),
5301                "red_score_prev",
5302            )?,
5303            round_complete: read_value::<u16>(
5304                stream,
5305                definition.get_entry("round_complete"),
5306                "round_complete",
5307            )?,
5308            rounds_remaining: read_value::<u16>(
5309                stream,
5310                definition.get_entry("rounds_remaining"),
5311                "rounds_remaining",
5312            )?,
5313            player_1: read_value::<u16>(stream, definition.get_entry("player_1"), "player_1")?,
5314            player_1_points: read_value::<u16>(
5315                stream,
5316                definition.get_entry("player_1_points"),
5317                "player_1_points",
5318            )?,
5319            player_2: read_value::<u16>(stream, definition.get_entry("player_2"), "player_2")?,
5320            player_2_points: read_value::<u16>(
5321                stream,
5322                definition.get_entry("player_2_points"),
5323                "player_2_points",
5324            )?,
5325            player_3: read_value::<u16>(stream, definition.get_entry("player_3"), "player_3")?,
5326            player_3_points: read_value::<u16>(
5327                stream,
5328                definition.get_entry("player_3_points"),
5329                "player_3_points",
5330            )?,
5331            kill_stream_player_1: read_value::<u16>(
5332                stream,
5333                definition.get_entry("killstreak_player_1"),
5334                "kill_stream_player_1",
5335            )?,
5336            kill_stream_player_1_count: read_value::<u16>(
5337                stream,
5338                definition.get_entry("killstreak_player_1_count"),
5339                "kill_stream_player_1_count",
5340            )?,
5341            game_over: read_value::<u8>(stream, definition.get_entry("game_over"), "game_over")?,
5342        })
5343    }
5344    #[allow(unused_variables)]
5345    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5346        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5347        match field {
5348            "panel_style" => Ok(self.panel_style.clone().into()),
5349            "winning_team" => Ok(self.winning_team.clone().into()),
5350            "winreason" => Ok(self.win_reason.clone().into()),
5351            "cappers" => Ok(self.cappers.clone().into()),
5352            "flagcaplimit" => Ok(self.flag_cap_limit.clone().into()),
5353            "blue_score" => Ok(self.blue_score.clone().into()),
5354            "red_score" => Ok(self.red_score.clone().into()),
5355            "blue_score_prev" => Ok(self.blue_score_prev.clone().into()),
5356            "red_score_prev" => Ok(self.red_score_prev.clone().into()),
5357            "round_complete" => Ok(self.round_complete.clone().into()),
5358            "rounds_remaining" => Ok(self.rounds_remaining.clone().into()),
5359            "player_1" => Ok(self.player_1.clone().into()),
5360            "player_1_points" => Ok(self.player_1_points.clone().into()),
5361            "player_2" => Ok(self.player_2.clone().into()),
5362            "player_2_points" => Ok(self.player_2_points.clone().into()),
5363            "player_3" => Ok(self.player_3.clone().into()),
5364            "player_3_points" => Ok(self.player_3_points.clone().into()),
5365            "killstreak_player_1" => Ok(self.kill_stream_player_1.clone().into()),
5366            "killstreak_player_1_count" => Ok(self.kill_stream_player_1_count.clone().into()),
5367            "game_over" => Ok(self.game_over.clone().into()),
5368            _ => Err(ParseError::MissingGameEventValue {
5369                ty: "TeamPlayWinPanel",
5370                field: field.into(),
5371            }),
5372        }
5373    }
5374    #[allow(unused_variables)]
5375    fn write(
5376        &self,
5377        stream: &mut BitWriteStream<LittleEndian>,
5378        definition: &GameEventDefinition,
5379    ) -> Result<()> {
5380        for entry in &definition.entries {
5381            let value = self
5382                .get_field(&entry.name)
5383                .unwrap_or_else(|_| entry.kind.default_value());
5384            stream.write(&value)?;
5385        }
5386        Ok(())
5387    }
5388}
5389#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5390#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5391pub struct TeamPlayTeamBalancedPlayerEvent {
5392    pub player: u16,
5393    pub team: u8,
5394}
5395impl TeamPlayTeamBalancedPlayerEvent {
5396    #[allow(unused_variables)]
5397    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5398        Ok(TeamPlayTeamBalancedPlayerEvent {
5399            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
5400            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
5401        })
5402    }
5403    #[allow(unused_variables)]
5404    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5405        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5406        match field {
5407            "player" => Ok(self.player.clone().into()),
5408            "team" => Ok(self.team.clone().into()),
5409            _ => Err(ParseError::MissingGameEventValue {
5410                ty: "TeamPlayTeamBalancedPlayer",
5411                field: field.into(),
5412            }),
5413        }
5414    }
5415    #[allow(unused_variables)]
5416    fn write(
5417        &self,
5418        stream: &mut BitWriteStream<LittleEndian>,
5419        definition: &GameEventDefinition,
5420    ) -> Result<()> {
5421        for entry in &definition.entries {
5422            let value = self
5423                .get_field(&entry.name)
5424                .unwrap_or_else(|_| entry.kind.default_value());
5425            stream.write(&value)?;
5426        }
5427        Ok(())
5428    }
5429}
5430#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5431#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5432pub struct TeamPlaySetupFinishedEvent {}
5433impl TeamPlaySetupFinishedEvent {
5434    #[allow(unused_variables)]
5435    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5436        Ok(TeamPlaySetupFinishedEvent {})
5437    }
5438    #[allow(unused_variables)]
5439    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5440        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5441        match field {
5442            _ => Err(ParseError::MissingGameEventValue {
5443                ty: "TeamPlaySetupFinished",
5444                field: field.into(),
5445            }),
5446        }
5447    }
5448    #[allow(unused_variables)]
5449    fn write(
5450        &self,
5451        stream: &mut BitWriteStream<LittleEndian>,
5452        definition: &GameEventDefinition,
5453    ) -> Result<()> {
5454        for entry in &definition.entries {
5455            let value = self
5456                .get_field(&entry.name)
5457                .unwrap_or_else(|_| entry.kind.default_value());
5458            stream.write(&value)?;
5459        }
5460        Ok(())
5461    }
5462}
5463#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5464#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5465pub struct TeamPlayAlertEvent {
5466    pub alert_type: u16,
5467}
5468impl TeamPlayAlertEvent {
5469    #[allow(unused_variables)]
5470    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5471        Ok(TeamPlayAlertEvent {
5472            alert_type: read_value::<u16>(
5473                stream,
5474                definition.get_entry("alert_type"),
5475                "alert_type",
5476            )?,
5477        })
5478    }
5479    #[allow(unused_variables)]
5480    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5481        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5482        match field {
5483            "alert_type" => Ok(self.alert_type.clone().into()),
5484            _ => Err(ParseError::MissingGameEventValue {
5485                ty: "TeamPlayAlert",
5486                field: field.into(),
5487            }),
5488        }
5489    }
5490    #[allow(unused_variables)]
5491    fn write(
5492        &self,
5493        stream: &mut BitWriteStream<LittleEndian>,
5494        definition: &GameEventDefinition,
5495    ) -> Result<()> {
5496        for entry in &definition.entries {
5497            let value = self
5498                .get_field(&entry.name)
5499                .unwrap_or_else(|_| entry.kind.default_value());
5500            stream.write(&value)?;
5501        }
5502        Ok(())
5503    }
5504}
5505#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5506#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5507pub struct TrainingCompleteEvent {
5508    pub next_map: MaybeUtf8String,
5509    pub map: MaybeUtf8String,
5510    pub text: MaybeUtf8String,
5511}
5512impl TrainingCompleteEvent {
5513    #[allow(unused_variables)]
5514    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5515        Ok(TrainingCompleteEvent {
5516            next_map: read_value::<MaybeUtf8String>(
5517                stream,
5518                definition.get_entry("next_map"),
5519                "next_map",
5520            )?,
5521            map: read_value::<MaybeUtf8String>(stream, definition.get_entry("map"), "map")?,
5522            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
5523        })
5524    }
5525    #[allow(unused_variables)]
5526    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5527        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5528        match field {
5529            "next_map" => Ok(self.next_map.clone().into()),
5530            "map" => Ok(self.map.clone().into()),
5531            "text" => Ok(self.text.clone().into()),
5532            _ => Err(ParseError::MissingGameEventValue {
5533                ty: "TrainingComplete",
5534                field: field.into(),
5535            }),
5536        }
5537    }
5538    #[allow(unused_variables)]
5539    fn write(
5540        &self,
5541        stream: &mut BitWriteStream<LittleEndian>,
5542        definition: &GameEventDefinition,
5543    ) -> Result<()> {
5544        for entry in &definition.entries {
5545            let value = self
5546                .get_field(&entry.name)
5547                .unwrap_or_else(|_| entry.kind.default_value());
5548            stream.write(&value)?;
5549        }
5550        Ok(())
5551    }
5552}
5553#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5554#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5555pub struct ShowFreezePanelEvent {
5556    pub killer: u16,
5557}
5558impl ShowFreezePanelEvent {
5559    #[allow(unused_variables)]
5560    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5561        Ok(ShowFreezePanelEvent {
5562            killer: read_value::<u16>(stream, definition.get_entry("killer"), "killer")?,
5563        })
5564    }
5565    #[allow(unused_variables)]
5566    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5567        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5568        match field {
5569            "killer" => Ok(self.killer.clone().into()),
5570            _ => Err(ParseError::MissingGameEventValue {
5571                ty: "ShowFreezePanel",
5572                field: field.into(),
5573            }),
5574        }
5575    }
5576    #[allow(unused_variables)]
5577    fn write(
5578        &self,
5579        stream: &mut BitWriteStream<LittleEndian>,
5580        definition: &GameEventDefinition,
5581    ) -> Result<()> {
5582        for entry in &definition.entries {
5583            let value = self
5584                .get_field(&entry.name)
5585                .unwrap_or_else(|_| entry.kind.default_value());
5586            stream.write(&value)?;
5587        }
5588        Ok(())
5589    }
5590}
5591#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5592#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5593pub struct HideFreezePanelEvent {}
5594impl HideFreezePanelEvent {
5595    #[allow(unused_variables)]
5596    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5597        Ok(HideFreezePanelEvent {})
5598    }
5599    #[allow(unused_variables)]
5600    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5601        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5602        match field {
5603            _ => Err(ParseError::MissingGameEventValue {
5604                ty: "HideFreezePanel",
5605                field: field.into(),
5606            }),
5607        }
5608    }
5609    #[allow(unused_variables)]
5610    fn write(
5611        &self,
5612        stream: &mut BitWriteStream<LittleEndian>,
5613        definition: &GameEventDefinition,
5614    ) -> Result<()> {
5615        for entry in &definition.entries {
5616            let value = self
5617                .get_field(&entry.name)
5618                .unwrap_or_else(|_| entry.kind.default_value());
5619            stream.write(&value)?;
5620        }
5621        Ok(())
5622    }
5623}
5624#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5625#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5626pub struct FreezeCamStartedEvent {}
5627impl FreezeCamStartedEvent {
5628    #[allow(unused_variables)]
5629    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5630        Ok(FreezeCamStartedEvent {})
5631    }
5632    #[allow(unused_variables)]
5633    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5634        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5635        match field {
5636            _ => Err(ParseError::MissingGameEventValue {
5637                ty: "FreezeCamStarted",
5638                field: field.into(),
5639            }),
5640        }
5641    }
5642    #[allow(unused_variables)]
5643    fn write(
5644        &self,
5645        stream: &mut BitWriteStream<LittleEndian>,
5646        definition: &GameEventDefinition,
5647    ) -> Result<()> {
5648        for entry in &definition.entries {
5649            let value = self
5650                .get_field(&entry.name)
5651                .unwrap_or_else(|_| entry.kind.default_value());
5652            stream.write(&value)?;
5653        }
5654        Ok(())
5655    }
5656}
5657#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5658#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5659pub struct LocalPlayerChangeTeamEvent {}
5660impl LocalPlayerChangeTeamEvent {
5661    #[allow(unused_variables)]
5662    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5663        Ok(LocalPlayerChangeTeamEvent {})
5664    }
5665    #[allow(unused_variables)]
5666    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5667        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5668        match field {
5669            _ => Err(ParseError::MissingGameEventValue {
5670                ty: "LocalPlayerChangeTeam",
5671                field: field.into(),
5672            }),
5673        }
5674    }
5675    #[allow(unused_variables)]
5676    fn write(
5677        &self,
5678        stream: &mut BitWriteStream<LittleEndian>,
5679        definition: &GameEventDefinition,
5680    ) -> Result<()> {
5681        for entry in &definition.entries {
5682            let value = self
5683                .get_field(&entry.name)
5684                .unwrap_or_else(|_| entry.kind.default_value());
5685            stream.write(&value)?;
5686        }
5687        Ok(())
5688    }
5689}
5690#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5691#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5692pub struct LocalPlayerScoreChangedEvent {
5693    pub score: u16,
5694}
5695impl LocalPlayerScoreChangedEvent {
5696    #[allow(unused_variables)]
5697    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5698        Ok(LocalPlayerScoreChangedEvent {
5699            score: read_value::<u16>(stream, definition.get_entry("score"), "score")?,
5700        })
5701    }
5702    #[allow(unused_variables)]
5703    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5704        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5705        match field {
5706            "score" => Ok(self.score.clone().into()),
5707            _ => Err(ParseError::MissingGameEventValue {
5708                ty: "LocalPlayerScoreChanged",
5709                field: field.into(),
5710            }),
5711        }
5712    }
5713    #[allow(unused_variables)]
5714    fn write(
5715        &self,
5716        stream: &mut BitWriteStream<LittleEndian>,
5717        definition: &GameEventDefinition,
5718    ) -> Result<()> {
5719        for entry in &definition.entries {
5720            let value = self
5721                .get_field(&entry.name)
5722                .unwrap_or_else(|_| entry.kind.default_value());
5723            stream.write(&value)?;
5724        }
5725        Ok(())
5726    }
5727}
5728#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5729#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5730pub struct LocalPlayerChangeClassEvent {}
5731impl LocalPlayerChangeClassEvent {
5732    #[allow(unused_variables)]
5733    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5734        Ok(LocalPlayerChangeClassEvent {})
5735    }
5736    #[allow(unused_variables)]
5737    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5738        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5739        match field {
5740            _ => Err(ParseError::MissingGameEventValue {
5741                ty: "LocalPlayerChangeClass",
5742                field: field.into(),
5743            }),
5744        }
5745    }
5746    #[allow(unused_variables)]
5747    fn write(
5748        &self,
5749        stream: &mut BitWriteStream<LittleEndian>,
5750        definition: &GameEventDefinition,
5751    ) -> Result<()> {
5752        for entry in &definition.entries {
5753            let value = self
5754                .get_field(&entry.name)
5755                .unwrap_or_else(|_| entry.kind.default_value());
5756            stream.write(&value)?;
5757        }
5758        Ok(())
5759    }
5760}
5761#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5762#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5763pub struct LocalPlayerRespawnEvent {}
5764impl LocalPlayerRespawnEvent {
5765    #[allow(unused_variables)]
5766    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5767        Ok(LocalPlayerRespawnEvent {})
5768    }
5769    #[allow(unused_variables)]
5770    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5771        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5772        match field {
5773            _ => Err(ParseError::MissingGameEventValue {
5774                ty: "LocalPlayerRespawn",
5775                field: field.into(),
5776            }),
5777        }
5778    }
5779    #[allow(unused_variables)]
5780    fn write(
5781        &self,
5782        stream: &mut BitWriteStream<LittleEndian>,
5783        definition: &GameEventDefinition,
5784    ) -> Result<()> {
5785        for entry in &definition.entries {
5786            let value = self
5787                .get_field(&entry.name)
5788                .unwrap_or_else(|_| entry.kind.default_value());
5789            stream.write(&value)?;
5790        }
5791        Ok(())
5792    }
5793}
5794#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5795#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5796pub struct BuildingInfoChangedEvent {
5797    pub building_type: u8,
5798    pub object_mode: u8,
5799    pub remove: u8,
5800}
5801impl BuildingInfoChangedEvent {
5802    #[allow(unused_variables)]
5803    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5804        Ok(BuildingInfoChangedEvent {
5805            building_type: read_value::<u8>(
5806                stream,
5807                definition.get_entry("building_type"),
5808                "building_type",
5809            )?,
5810            object_mode: read_value::<u8>(
5811                stream,
5812                definition.get_entry("object_mode"),
5813                "object_mode",
5814            )?,
5815            remove: read_value::<u8>(stream, definition.get_entry("remove"), "remove")?,
5816        })
5817    }
5818    #[allow(unused_variables)]
5819    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5820        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5821        match field {
5822            "building_type" => Ok(self.building_type.clone().into()),
5823            "object_mode" => Ok(self.object_mode.clone().into()),
5824            "remove" => Ok(self.remove.clone().into()),
5825            _ => Err(ParseError::MissingGameEventValue {
5826                ty: "BuildingInfoChanged",
5827                field: field.into(),
5828            }),
5829        }
5830    }
5831    #[allow(unused_variables)]
5832    fn write(
5833        &self,
5834        stream: &mut BitWriteStream<LittleEndian>,
5835        definition: &GameEventDefinition,
5836    ) -> Result<()> {
5837        for entry in &definition.entries {
5838            let value = self
5839                .get_field(&entry.name)
5840                .unwrap_or_else(|_| entry.kind.default_value());
5841            stream.write(&value)?;
5842        }
5843        Ok(())
5844    }
5845}
5846#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5847#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5848pub struct LocalPlayerChangeDisguiseEvent {
5849    pub disguised: bool,
5850}
5851impl LocalPlayerChangeDisguiseEvent {
5852    #[allow(unused_variables)]
5853    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5854        Ok(LocalPlayerChangeDisguiseEvent {
5855            disguised: read_value::<bool>(stream, definition.get_entry("disguised"), "disguised")?,
5856        })
5857    }
5858    #[allow(unused_variables)]
5859    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5860        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5861        match field {
5862            "disguised" => Ok(self.disguised.clone().into()),
5863            _ => Err(ParseError::MissingGameEventValue {
5864                ty: "LocalPlayerChangeDisguise",
5865                field: field.into(),
5866            }),
5867        }
5868    }
5869    #[allow(unused_variables)]
5870    fn write(
5871        &self,
5872        stream: &mut BitWriteStream<LittleEndian>,
5873        definition: &GameEventDefinition,
5874    ) -> Result<()> {
5875        for entry in &definition.entries {
5876            let value = self
5877                .get_field(&entry.name)
5878                .unwrap_or_else(|_| entry.kind.default_value());
5879            stream.write(&value)?;
5880        }
5881        Ok(())
5882    }
5883}
5884#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5885#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5886pub struct PlayerAccountChangedEvent {
5887    pub old_value: u16,
5888    pub new_value: u16,
5889}
5890impl PlayerAccountChangedEvent {
5891    #[allow(unused_variables)]
5892    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5893        Ok(PlayerAccountChangedEvent {
5894            old_value: read_value::<u16>(stream, definition.get_entry("old_value"), "old_value")?,
5895            new_value: read_value::<u16>(stream, definition.get_entry("new_value"), "new_value")?,
5896        })
5897    }
5898    #[allow(unused_variables)]
5899    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5900        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5901        match field {
5902            "old_value" => Ok(self.old_value.clone().into()),
5903            "new_value" => Ok(self.new_value.clone().into()),
5904            _ => Err(ParseError::MissingGameEventValue {
5905                ty: "PlayerAccountChanged",
5906                field: field.into(),
5907            }),
5908        }
5909    }
5910    #[allow(unused_variables)]
5911    fn write(
5912        &self,
5913        stream: &mut BitWriteStream<LittleEndian>,
5914        definition: &GameEventDefinition,
5915    ) -> Result<()> {
5916        for entry in &definition.entries {
5917            let value = self
5918                .get_field(&entry.name)
5919                .unwrap_or_else(|_| entry.kind.default_value());
5920            stream.write(&value)?;
5921        }
5922        Ok(())
5923    }
5924}
5925#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5926#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5927pub struct SpyPdaResetEvent {}
5928impl SpyPdaResetEvent {
5929    #[allow(unused_variables)]
5930    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5931        Ok(SpyPdaResetEvent {})
5932    }
5933    #[allow(unused_variables)]
5934    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5935        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5936        match field {
5937            _ => Err(ParseError::MissingGameEventValue {
5938                ty: "SpyPdaReset",
5939                field: field.into(),
5940            }),
5941        }
5942    }
5943    #[allow(unused_variables)]
5944    fn write(
5945        &self,
5946        stream: &mut BitWriteStream<LittleEndian>,
5947        definition: &GameEventDefinition,
5948    ) -> Result<()> {
5949        for entry in &definition.entries {
5950            let value = self
5951                .get_field(&entry.name)
5952                .unwrap_or_else(|_| entry.kind.default_value());
5953            stream.write(&value)?;
5954        }
5955        Ok(())
5956    }
5957}
5958#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5959#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
5960pub struct FlagStatusUpdateEvent {
5961    pub user_id: u16,
5962    pub ent_index: u32,
5963}
5964impl FlagStatusUpdateEvent {
5965    #[allow(unused_variables)]
5966    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
5967        Ok(FlagStatusUpdateEvent {
5968            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
5969            ent_index: read_value::<u32>(stream, definition.get_entry("entindex"), "ent_index")?,
5970        })
5971    }
5972    #[allow(unused_variables)]
5973    fn get_field(&self, field: &str) -> Result<GameEventValue> {
5974        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
5975        match field {
5976            "userid" => Ok(self.user_id.clone().into()),
5977            "entindex" => Ok(self.ent_index.clone().into()),
5978            _ => Err(ParseError::MissingGameEventValue {
5979                ty: "FlagStatusUpdate",
5980                field: field.into(),
5981            }),
5982        }
5983    }
5984    #[allow(unused_variables)]
5985    fn write(
5986        &self,
5987        stream: &mut BitWriteStream<LittleEndian>,
5988        definition: &GameEventDefinition,
5989    ) -> Result<()> {
5990        for entry in &definition.entries {
5991            let value = self
5992                .get_field(&entry.name)
5993                .unwrap_or_else(|_| entry.kind.default_value());
5994            stream.write(&value)?;
5995        }
5996        Ok(())
5997    }
5998}
5999#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6000#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6001pub struct PlayerStatsUpdatedEvent {
6002    pub force_upload: bool,
6003}
6004impl PlayerStatsUpdatedEvent {
6005    #[allow(unused_variables)]
6006    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6007        Ok(PlayerStatsUpdatedEvent {
6008            force_upload: read_value::<bool>(
6009                stream,
6010                definition.get_entry("forceupload"),
6011                "force_upload",
6012            )?,
6013        })
6014    }
6015    #[allow(unused_variables)]
6016    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6017        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6018        match field {
6019            "forceupload" => Ok(self.force_upload.clone().into()),
6020            _ => Err(ParseError::MissingGameEventValue {
6021                ty: "PlayerStatsUpdated",
6022                field: field.into(),
6023            }),
6024        }
6025    }
6026    #[allow(unused_variables)]
6027    fn write(
6028        &self,
6029        stream: &mut BitWriteStream<LittleEndian>,
6030        definition: &GameEventDefinition,
6031    ) -> Result<()> {
6032        for entry in &definition.entries {
6033            let value = self
6034                .get_field(&entry.name)
6035                .unwrap_or_else(|_| entry.kind.default_value());
6036            stream.write(&value)?;
6037        }
6038        Ok(())
6039    }
6040}
6041#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6042#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6043pub struct PlayingCommentaryEvent {}
6044impl PlayingCommentaryEvent {
6045    #[allow(unused_variables)]
6046    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6047        Ok(PlayingCommentaryEvent {})
6048    }
6049    #[allow(unused_variables)]
6050    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6051        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6052        match field {
6053            _ => Err(ParseError::MissingGameEventValue {
6054                ty: "PlayingCommentary",
6055                field: field.into(),
6056            }),
6057        }
6058    }
6059    #[allow(unused_variables)]
6060    fn write(
6061        &self,
6062        stream: &mut BitWriteStream<LittleEndian>,
6063        definition: &GameEventDefinition,
6064    ) -> Result<()> {
6065        for entry in &definition.entries {
6066            let value = self
6067                .get_field(&entry.name)
6068                .unwrap_or_else(|_| entry.kind.default_value());
6069            stream.write(&value)?;
6070        }
6071        Ok(())
6072    }
6073}
6074#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6075#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6076pub struct PlayerChargeDeployedEvent {
6077    pub user_id: u16,
6078    pub target_id: u16,
6079}
6080impl PlayerChargeDeployedEvent {
6081    #[allow(unused_variables)]
6082    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6083        Ok(PlayerChargeDeployedEvent {
6084            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6085            target_id: read_value::<u16>(stream, definition.get_entry("targetid"), "target_id")?,
6086        })
6087    }
6088    #[allow(unused_variables)]
6089    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6090        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6091        match field {
6092            "userid" => Ok(self.user_id.clone().into()),
6093            "targetid" => Ok(self.target_id.clone().into()),
6094            _ => Err(ParseError::MissingGameEventValue {
6095                ty: "PlayerChargeDeployed",
6096                field: field.into(),
6097            }),
6098        }
6099    }
6100    #[allow(unused_variables)]
6101    fn write(
6102        &self,
6103        stream: &mut BitWriteStream<LittleEndian>,
6104        definition: &GameEventDefinition,
6105    ) -> Result<()> {
6106        for entry in &definition.entries {
6107            let value = self
6108                .get_field(&entry.name)
6109                .unwrap_or_else(|_| entry.kind.default_value());
6110            stream.write(&value)?;
6111        }
6112        Ok(())
6113    }
6114}
6115#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6116#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6117pub struct PlayerBuiltObjectEvent {
6118    pub user_id: u16,
6119    pub object: u16,
6120    pub index: u16,
6121}
6122impl PlayerBuiltObjectEvent {
6123    #[allow(unused_variables)]
6124    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6125        Ok(PlayerBuiltObjectEvent {
6126            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6127            object: read_value::<u16>(stream, definition.get_entry("object"), "object")?,
6128            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6129        })
6130    }
6131    #[allow(unused_variables)]
6132    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6133        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6134        match field {
6135            "userid" => Ok(self.user_id.clone().into()),
6136            "object" => Ok(self.object.clone().into()),
6137            "index" => Ok(self.index.clone().into()),
6138            _ => Err(ParseError::MissingGameEventValue {
6139                ty: "PlayerBuiltObject",
6140                field: field.into(),
6141            }),
6142        }
6143    }
6144    #[allow(unused_variables)]
6145    fn write(
6146        &self,
6147        stream: &mut BitWriteStream<LittleEndian>,
6148        definition: &GameEventDefinition,
6149    ) -> Result<()> {
6150        for entry in &definition.entries {
6151            let value = self
6152                .get_field(&entry.name)
6153                .unwrap_or_else(|_| entry.kind.default_value());
6154            stream.write(&value)?;
6155        }
6156        Ok(())
6157    }
6158}
6159#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6160#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6161pub struct PlayerUpgradedObjectEvent {
6162    pub user_id: u16,
6163    pub object: u16,
6164    pub index: u16,
6165    pub is_builder: bool,
6166}
6167impl PlayerUpgradedObjectEvent {
6168    #[allow(unused_variables)]
6169    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6170        Ok(PlayerUpgradedObjectEvent {
6171            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6172            object: read_value::<u16>(stream, definition.get_entry("object"), "object")?,
6173            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6174            is_builder: read_value::<bool>(
6175                stream,
6176                definition.get_entry("isbuilder"),
6177                "is_builder",
6178            )?,
6179        })
6180    }
6181    #[allow(unused_variables)]
6182    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6183        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6184        match field {
6185            "userid" => Ok(self.user_id.clone().into()),
6186            "object" => Ok(self.object.clone().into()),
6187            "index" => Ok(self.index.clone().into()),
6188            "isbuilder" => Ok(self.is_builder.clone().into()),
6189            _ => Err(ParseError::MissingGameEventValue {
6190                ty: "PlayerUpgradedObject",
6191                field: field.into(),
6192            }),
6193        }
6194    }
6195    #[allow(unused_variables)]
6196    fn write(
6197        &self,
6198        stream: &mut BitWriteStream<LittleEndian>,
6199        definition: &GameEventDefinition,
6200    ) -> Result<()> {
6201        for entry in &definition.entries {
6202            let value = self
6203                .get_field(&entry.name)
6204                .unwrap_or_else(|_| entry.kind.default_value());
6205            stream.write(&value)?;
6206        }
6207        Ok(())
6208    }
6209}
6210#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6211#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6212pub struct PlayerCarryObjectEvent {
6213    pub user_id: u16,
6214    pub object: u16,
6215    pub index: u16,
6216}
6217impl PlayerCarryObjectEvent {
6218    #[allow(unused_variables)]
6219    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6220        Ok(PlayerCarryObjectEvent {
6221            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6222            object: read_value::<u16>(stream, definition.get_entry("object"), "object")?,
6223            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6224        })
6225    }
6226    #[allow(unused_variables)]
6227    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6228        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6229        match field {
6230            "userid" => Ok(self.user_id.clone().into()),
6231            "object" => Ok(self.object.clone().into()),
6232            "index" => Ok(self.index.clone().into()),
6233            _ => Err(ParseError::MissingGameEventValue {
6234                ty: "PlayerCarryObject",
6235                field: field.into(),
6236            }),
6237        }
6238    }
6239    #[allow(unused_variables)]
6240    fn write(
6241        &self,
6242        stream: &mut BitWriteStream<LittleEndian>,
6243        definition: &GameEventDefinition,
6244    ) -> Result<()> {
6245        for entry in &definition.entries {
6246            let value = self
6247                .get_field(&entry.name)
6248                .unwrap_or_else(|_| entry.kind.default_value());
6249            stream.write(&value)?;
6250        }
6251        Ok(())
6252    }
6253}
6254#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6255#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6256pub struct PlayerDropObjectEvent {
6257    pub user_id: u16,
6258    pub object: u16,
6259    pub index: u16,
6260}
6261impl PlayerDropObjectEvent {
6262    #[allow(unused_variables)]
6263    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6264        Ok(PlayerDropObjectEvent {
6265            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6266            object: read_value::<u16>(stream, definition.get_entry("object"), "object")?,
6267            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6268        })
6269    }
6270    #[allow(unused_variables)]
6271    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6272        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6273        match field {
6274            "userid" => Ok(self.user_id.clone().into()),
6275            "object" => Ok(self.object.clone().into()),
6276            "index" => Ok(self.index.clone().into()),
6277            _ => Err(ParseError::MissingGameEventValue {
6278                ty: "PlayerDropObject",
6279                field: field.into(),
6280            }),
6281        }
6282    }
6283    #[allow(unused_variables)]
6284    fn write(
6285        &self,
6286        stream: &mut BitWriteStream<LittleEndian>,
6287        definition: &GameEventDefinition,
6288    ) -> Result<()> {
6289        for entry in &definition.entries {
6290            let value = self
6291                .get_field(&entry.name)
6292                .unwrap_or_else(|_| entry.kind.default_value());
6293            stream.write(&value)?;
6294        }
6295        Ok(())
6296    }
6297}
6298#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6299#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6300pub struct ObjectRemovedEvent {
6301    pub user_id: u16,
6302    pub object_type: u16,
6303    pub index: u16,
6304}
6305impl ObjectRemovedEvent {
6306    #[allow(unused_variables)]
6307    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6308        Ok(ObjectRemovedEvent {
6309            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6310            object_type: read_value::<u16>(
6311                stream,
6312                definition.get_entry("objecttype"),
6313                "object_type",
6314            )?,
6315            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6316        })
6317    }
6318    #[allow(unused_variables)]
6319    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6320        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6321        match field {
6322            "userid" => Ok(self.user_id.clone().into()),
6323            "objecttype" => Ok(self.object_type.clone().into()),
6324            "index" => Ok(self.index.clone().into()),
6325            _ => Err(ParseError::MissingGameEventValue {
6326                ty: "ObjectRemoved",
6327                field: field.into(),
6328            }),
6329        }
6330    }
6331    #[allow(unused_variables)]
6332    fn write(
6333        &self,
6334        stream: &mut BitWriteStream<LittleEndian>,
6335        definition: &GameEventDefinition,
6336    ) -> Result<()> {
6337        for entry in &definition.entries {
6338            let value = self
6339                .get_field(&entry.name)
6340                .unwrap_or_else(|_| entry.kind.default_value());
6341            stream.write(&value)?;
6342        }
6343        Ok(())
6344    }
6345}
6346#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6347#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6348pub struct ObjectDestroyedEvent {
6349    pub user_id: u16,
6350    pub attacker: u16,
6351    pub assister: u16,
6352    pub weapon: MaybeUtf8String,
6353    pub weapon_id: u16,
6354    pub object_type: u16,
6355    pub index: u16,
6356    pub was_building: bool,
6357}
6358impl ObjectDestroyedEvent {
6359    #[allow(unused_variables)]
6360    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6361        Ok(ObjectDestroyedEvent {
6362            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6363            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
6364            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
6365            weapon: read_value::<MaybeUtf8String>(
6366                stream,
6367                definition.get_entry("weapon"),
6368                "weapon",
6369            )?,
6370            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
6371            object_type: read_value::<u16>(
6372                stream,
6373                definition.get_entry("objecttype"),
6374                "object_type",
6375            )?,
6376            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6377            was_building: read_value::<bool>(
6378                stream,
6379                definition.get_entry("was_building"),
6380                "was_building",
6381            )?,
6382        })
6383    }
6384    #[allow(unused_variables)]
6385    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6386        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6387        match field {
6388            "userid" => Ok(self.user_id.clone().into()),
6389            "attacker" => Ok(self.attacker.clone().into()),
6390            "assister" => Ok(self.assister.clone().into()),
6391            "weapon" => Ok(self.weapon.clone().into()),
6392            "weaponid" => Ok(self.weapon_id.clone().into()),
6393            "objecttype" => Ok(self.object_type.clone().into()),
6394            "index" => Ok(self.index.clone().into()),
6395            "was_building" => Ok(self.was_building.clone().into()),
6396            _ => Err(ParseError::MissingGameEventValue {
6397                ty: "ObjectDestroyed",
6398                field: field.into(),
6399            }),
6400        }
6401    }
6402    #[allow(unused_variables)]
6403    fn write(
6404        &self,
6405        stream: &mut BitWriteStream<LittleEndian>,
6406        definition: &GameEventDefinition,
6407    ) -> Result<()> {
6408        for entry in &definition.entries {
6409            let value = self
6410                .get_field(&entry.name)
6411                .unwrap_or_else(|_| entry.kind.default_value());
6412            stream.write(&value)?;
6413        }
6414        Ok(())
6415    }
6416}
6417#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6418#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6419pub struct ObjectDetonatedEvent {
6420    pub user_id: u16,
6421    pub object_type: u16,
6422    pub index: u16,
6423}
6424impl ObjectDetonatedEvent {
6425    #[allow(unused_variables)]
6426    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6427        Ok(ObjectDetonatedEvent {
6428            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6429            object_type: read_value::<u16>(
6430                stream,
6431                definition.get_entry("objecttype"),
6432                "object_type",
6433            )?,
6434            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
6435        })
6436    }
6437    #[allow(unused_variables)]
6438    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6439        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6440        match field {
6441            "userid" => Ok(self.user_id.clone().into()),
6442            "objecttype" => Ok(self.object_type.clone().into()),
6443            "index" => Ok(self.index.clone().into()),
6444            _ => Err(ParseError::MissingGameEventValue {
6445                ty: "ObjectDetonated",
6446                field: field.into(),
6447            }),
6448        }
6449    }
6450    #[allow(unused_variables)]
6451    fn write(
6452        &self,
6453        stream: &mut BitWriteStream<LittleEndian>,
6454        definition: &GameEventDefinition,
6455    ) -> Result<()> {
6456        for entry in &definition.entries {
6457            let value = self
6458                .get_field(&entry.name)
6459                .unwrap_or_else(|_| entry.kind.default_value());
6460            stream.write(&value)?;
6461        }
6462        Ok(())
6463    }
6464}
6465#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6466#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6467pub struct AchievementEarnedEvent {
6468    pub player: u8,
6469    pub achievement: u16,
6470}
6471impl AchievementEarnedEvent {
6472    #[allow(unused_variables)]
6473    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6474        Ok(AchievementEarnedEvent {
6475            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
6476            achievement: read_value::<u16>(
6477                stream,
6478                definition.get_entry("achievement"),
6479                "achievement",
6480            )?,
6481        })
6482    }
6483    #[allow(unused_variables)]
6484    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6485        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6486        match field {
6487            "player" => Ok(self.player.clone().into()),
6488            "achievement" => Ok(self.achievement.clone().into()),
6489            _ => Err(ParseError::MissingGameEventValue {
6490                ty: "AchievementEarned",
6491                field: field.into(),
6492            }),
6493        }
6494    }
6495    #[allow(unused_variables)]
6496    fn write(
6497        &self,
6498        stream: &mut BitWriteStream<LittleEndian>,
6499        definition: &GameEventDefinition,
6500    ) -> Result<()> {
6501        for entry in &definition.entries {
6502            let value = self
6503                .get_field(&entry.name)
6504                .unwrap_or_else(|_| entry.kind.default_value());
6505            stream.write(&value)?;
6506        }
6507        Ok(())
6508    }
6509}
6510#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6511#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6512pub struct SpecTargetUpdatedEvent {}
6513impl SpecTargetUpdatedEvent {
6514    #[allow(unused_variables)]
6515    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6516        Ok(SpecTargetUpdatedEvent {})
6517    }
6518    #[allow(unused_variables)]
6519    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6520        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6521        match field {
6522            _ => Err(ParseError::MissingGameEventValue {
6523                ty: "SpecTargetUpdated",
6524                field: field.into(),
6525            }),
6526        }
6527    }
6528    #[allow(unused_variables)]
6529    fn write(
6530        &self,
6531        stream: &mut BitWriteStream<LittleEndian>,
6532        definition: &GameEventDefinition,
6533    ) -> Result<()> {
6534        for entry in &definition.entries {
6535            let value = self
6536                .get_field(&entry.name)
6537                .unwrap_or_else(|_| entry.kind.default_value());
6538            stream.write(&value)?;
6539        }
6540        Ok(())
6541    }
6542}
6543#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6544#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6545pub struct TournamentStateUpdateEvent {
6546    pub user_id: u16,
6547    pub name_change: bool,
6548    pub ready_state: u16,
6549    pub new_name: MaybeUtf8String,
6550}
6551impl TournamentStateUpdateEvent {
6552    #[allow(unused_variables)]
6553    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6554        Ok(TournamentStateUpdateEvent {
6555            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6556            name_change: read_value::<bool>(
6557                stream,
6558                definition.get_entry("namechange"),
6559                "name_change",
6560            )?,
6561            ready_state: read_value::<u16>(
6562                stream,
6563                definition.get_entry("readystate"),
6564                "ready_state",
6565            )?,
6566            new_name: read_value::<MaybeUtf8String>(
6567                stream,
6568                definition.get_entry("newname"),
6569                "new_name",
6570            )?,
6571        })
6572    }
6573    #[allow(unused_variables)]
6574    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6575        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6576        match field {
6577            "userid" => Ok(self.user_id.clone().into()),
6578            "namechange" => Ok(self.name_change.clone().into()),
6579            "readystate" => Ok(self.ready_state.clone().into()),
6580            "newname" => Ok(self.new_name.clone().into()),
6581            _ => Err(ParseError::MissingGameEventValue {
6582                ty: "TournamentStateUpdate",
6583                field: field.into(),
6584            }),
6585        }
6586    }
6587    #[allow(unused_variables)]
6588    fn write(
6589        &self,
6590        stream: &mut BitWriteStream<LittleEndian>,
6591        definition: &GameEventDefinition,
6592    ) -> Result<()> {
6593        for entry in &definition.entries {
6594            let value = self
6595                .get_field(&entry.name)
6596                .unwrap_or_else(|_| entry.kind.default_value());
6597            stream.write(&value)?;
6598        }
6599        Ok(())
6600    }
6601}
6602#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6603#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6604pub struct TournamentEnableCountdownEvent {}
6605impl TournamentEnableCountdownEvent {
6606    #[allow(unused_variables)]
6607    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6608        Ok(TournamentEnableCountdownEvent {})
6609    }
6610    #[allow(unused_variables)]
6611    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6612        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6613        match field {
6614            _ => Err(ParseError::MissingGameEventValue {
6615                ty: "TournamentEnableCountdown",
6616                field: field.into(),
6617            }),
6618        }
6619    }
6620    #[allow(unused_variables)]
6621    fn write(
6622        &self,
6623        stream: &mut BitWriteStream<LittleEndian>,
6624        definition: &GameEventDefinition,
6625    ) -> Result<()> {
6626        for entry in &definition.entries {
6627            let value = self
6628                .get_field(&entry.name)
6629                .unwrap_or_else(|_| entry.kind.default_value());
6630            stream.write(&value)?;
6631        }
6632        Ok(())
6633    }
6634}
6635#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6636#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6637pub struct PlayerCalledForMedicEvent {
6638    pub user_id: u16,
6639}
6640impl PlayerCalledForMedicEvent {
6641    #[allow(unused_variables)]
6642    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6643        Ok(PlayerCalledForMedicEvent {
6644            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6645        })
6646    }
6647    #[allow(unused_variables)]
6648    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6649        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6650        match field {
6651            "userid" => Ok(self.user_id.clone().into()),
6652            _ => Err(ParseError::MissingGameEventValue {
6653                ty: "PlayerCalledForMedic",
6654                field: field.into(),
6655            }),
6656        }
6657    }
6658    #[allow(unused_variables)]
6659    fn write(
6660        &self,
6661        stream: &mut BitWriteStream<LittleEndian>,
6662        definition: &GameEventDefinition,
6663    ) -> Result<()> {
6664        for entry in &definition.entries {
6665            let value = self
6666                .get_field(&entry.name)
6667                .unwrap_or_else(|_| entry.kind.default_value());
6668            stream.write(&value)?;
6669        }
6670        Ok(())
6671    }
6672}
6673#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6674#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6675pub struct PlayerAskedForBallEvent {
6676    pub user_id: u16,
6677}
6678impl PlayerAskedForBallEvent {
6679    #[allow(unused_variables)]
6680    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6681        Ok(PlayerAskedForBallEvent {
6682            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6683        })
6684    }
6685    #[allow(unused_variables)]
6686    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6687        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6688        match field {
6689            "userid" => Ok(self.user_id.clone().into()),
6690            _ => Err(ParseError::MissingGameEventValue {
6691                ty: "PlayerAskedForBall",
6692                field: field.into(),
6693            }),
6694        }
6695    }
6696    #[allow(unused_variables)]
6697    fn write(
6698        &self,
6699        stream: &mut BitWriteStream<LittleEndian>,
6700        definition: &GameEventDefinition,
6701    ) -> Result<()> {
6702        for entry in &definition.entries {
6703            let value = self
6704                .get_field(&entry.name)
6705                .unwrap_or_else(|_| entry.kind.default_value());
6706            stream.write(&value)?;
6707        }
6708        Ok(())
6709    }
6710}
6711#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6712#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6713pub struct LocalPlayerBecameObserverEvent {}
6714impl LocalPlayerBecameObserverEvent {
6715    #[allow(unused_variables)]
6716    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6717        Ok(LocalPlayerBecameObserverEvent {})
6718    }
6719    #[allow(unused_variables)]
6720    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6721        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6722        match field {
6723            _ => Err(ParseError::MissingGameEventValue {
6724                ty: "LocalPlayerBecameObserver",
6725                field: field.into(),
6726            }),
6727        }
6728    }
6729    #[allow(unused_variables)]
6730    fn write(
6731        &self,
6732        stream: &mut BitWriteStream<LittleEndian>,
6733        definition: &GameEventDefinition,
6734    ) -> Result<()> {
6735        for entry in &definition.entries {
6736            let value = self
6737                .get_field(&entry.name)
6738                .unwrap_or_else(|_| entry.kind.default_value());
6739            stream.write(&value)?;
6740        }
6741        Ok(())
6742    }
6743}
6744#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6745#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6746pub struct PlayerIgnitedInvEvent {
6747    pub pyro_ent_index: u8,
6748    pub victim_ent_index: u8,
6749    pub medic_ent_index: u8,
6750}
6751impl PlayerIgnitedInvEvent {
6752    #[allow(unused_variables)]
6753    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6754        Ok(PlayerIgnitedInvEvent {
6755            pyro_ent_index: read_value::<u8>(
6756                stream,
6757                definition.get_entry("pyro_entindex"),
6758                "pyro_ent_index",
6759            )?,
6760            victim_ent_index: read_value::<u8>(
6761                stream,
6762                definition.get_entry("victim_entindex"),
6763                "victim_ent_index",
6764            )?,
6765            medic_ent_index: read_value::<u8>(
6766                stream,
6767                definition.get_entry("medic_entindex"),
6768                "medic_ent_index",
6769            )?,
6770        })
6771    }
6772    #[allow(unused_variables)]
6773    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6774        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6775        match field {
6776            "pyro_entindex" => Ok(self.pyro_ent_index.clone().into()),
6777            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
6778            "medic_entindex" => Ok(self.medic_ent_index.clone().into()),
6779            _ => Err(ParseError::MissingGameEventValue {
6780                ty: "PlayerIgnitedInv",
6781                field: field.into(),
6782            }),
6783        }
6784    }
6785    #[allow(unused_variables)]
6786    fn write(
6787        &self,
6788        stream: &mut BitWriteStream<LittleEndian>,
6789        definition: &GameEventDefinition,
6790    ) -> Result<()> {
6791        for entry in &definition.entries {
6792            let value = self
6793                .get_field(&entry.name)
6794                .unwrap_or_else(|_| entry.kind.default_value());
6795            stream.write(&value)?;
6796        }
6797        Ok(())
6798    }
6799}
6800#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6801#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6802pub struct PlayerIgnitedEvent {
6803    pub pyro_ent_index: u8,
6804    pub victim_ent_index: u8,
6805    pub weapon_id: u8,
6806}
6807impl PlayerIgnitedEvent {
6808    #[allow(unused_variables)]
6809    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6810        Ok(PlayerIgnitedEvent {
6811            pyro_ent_index: read_value::<u8>(
6812                stream,
6813                definition.get_entry("pyro_entindex"),
6814                "pyro_ent_index",
6815            )?,
6816            victim_ent_index: read_value::<u8>(
6817                stream,
6818                definition.get_entry("victim_entindex"),
6819                "victim_ent_index",
6820            )?,
6821            weapon_id: read_value::<u8>(stream, definition.get_entry("weaponid"), "weapon_id")?,
6822        })
6823    }
6824    #[allow(unused_variables)]
6825    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6826        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6827        match field {
6828            "pyro_entindex" => Ok(self.pyro_ent_index.clone().into()),
6829            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
6830            "weaponid" => Ok(self.weapon_id.clone().into()),
6831            _ => Err(ParseError::MissingGameEventValue {
6832                ty: "PlayerIgnited",
6833                field: field.into(),
6834            }),
6835        }
6836    }
6837    #[allow(unused_variables)]
6838    fn write(
6839        &self,
6840        stream: &mut BitWriteStream<LittleEndian>,
6841        definition: &GameEventDefinition,
6842    ) -> Result<()> {
6843        for entry in &definition.entries {
6844            let value = self
6845                .get_field(&entry.name)
6846                .unwrap_or_else(|_| entry.kind.default_value());
6847            stream.write(&value)?;
6848        }
6849        Ok(())
6850    }
6851}
6852#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6853#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6854pub struct PlayerExtinguishedEvent {
6855    pub victim: u8,
6856    pub healer: u8,
6857    pub item_definition_index: u16,
6858}
6859impl PlayerExtinguishedEvent {
6860    #[allow(unused_variables)]
6861    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6862        Ok(PlayerExtinguishedEvent {
6863            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
6864            healer: read_value::<u8>(stream, definition.get_entry("healer"), "healer")?,
6865            item_definition_index: read_value::<u16>(
6866                stream,
6867                definition.get_entry("itemdefindex"),
6868                "item_definition_index",
6869            )?,
6870        })
6871    }
6872    #[allow(unused_variables)]
6873    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6874        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6875        match field {
6876            "victim" => Ok(self.victim.clone().into()),
6877            "healer" => Ok(self.healer.clone().into()),
6878            "itemdefindex" => Ok(self.item_definition_index.clone().into()),
6879            _ => Err(ParseError::MissingGameEventValue {
6880                ty: "PlayerExtinguished",
6881                field: field.into(),
6882            }),
6883        }
6884    }
6885    #[allow(unused_variables)]
6886    fn write(
6887        &self,
6888        stream: &mut BitWriteStream<LittleEndian>,
6889        definition: &GameEventDefinition,
6890    ) -> Result<()> {
6891        for entry in &definition.entries {
6892            let value = self
6893                .get_field(&entry.name)
6894                .unwrap_or_else(|_| entry.kind.default_value());
6895            stream.write(&value)?;
6896        }
6897        Ok(())
6898    }
6899}
6900#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6901#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6902pub struct PlayerTeleportedEvent {
6903    pub user_id: u16,
6904    pub builder_id: u16,
6905    pub dist: f32,
6906}
6907impl PlayerTeleportedEvent {
6908    #[allow(unused_variables)]
6909    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6910        Ok(PlayerTeleportedEvent {
6911            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6912            builder_id: read_value::<u16>(stream, definition.get_entry("builderid"), "builder_id")?,
6913            dist: read_value::<f32>(stream, definition.get_entry("dist"), "dist")?,
6914        })
6915    }
6916    #[allow(unused_variables)]
6917    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6918        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6919        match field {
6920            "userid" => Ok(self.user_id.clone().into()),
6921            "builderid" => Ok(self.builder_id.clone().into()),
6922            "dist" => Ok(self.dist.clone().into()),
6923            _ => Err(ParseError::MissingGameEventValue {
6924                ty: "PlayerTeleported",
6925                field: field.into(),
6926            }),
6927        }
6928    }
6929    #[allow(unused_variables)]
6930    fn write(
6931        &self,
6932        stream: &mut BitWriteStream<LittleEndian>,
6933        definition: &GameEventDefinition,
6934    ) -> Result<()> {
6935        for entry in &definition.entries {
6936            let value = self
6937                .get_field(&entry.name)
6938                .unwrap_or_else(|_| entry.kind.default_value());
6939            stream.write(&value)?;
6940        }
6941        Ok(())
6942    }
6943}
6944#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6945#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6946pub struct PlayerHealedMedicCallEvent {
6947    pub user_id: u16,
6948}
6949impl PlayerHealedMedicCallEvent {
6950    #[allow(unused_variables)]
6951    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6952        Ok(PlayerHealedMedicCallEvent {
6953            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
6954        })
6955    }
6956    #[allow(unused_variables)]
6957    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6958        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6959        match field {
6960            "userid" => Ok(self.user_id.clone().into()),
6961            _ => Err(ParseError::MissingGameEventValue {
6962                ty: "PlayerHealedMedicCall",
6963                field: field.into(),
6964            }),
6965        }
6966    }
6967    #[allow(unused_variables)]
6968    fn write(
6969        &self,
6970        stream: &mut BitWriteStream<LittleEndian>,
6971        definition: &GameEventDefinition,
6972    ) -> Result<()> {
6973        for entry in &definition.entries {
6974            let value = self
6975                .get_field(&entry.name)
6976                .unwrap_or_else(|_| entry.kind.default_value());
6977            stream.write(&value)?;
6978        }
6979        Ok(())
6980    }
6981}
6982#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6983#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
6984pub struct LocalPlayerChargeReadyEvent {}
6985impl LocalPlayerChargeReadyEvent {
6986    #[allow(unused_variables)]
6987    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
6988        Ok(LocalPlayerChargeReadyEvent {})
6989    }
6990    #[allow(unused_variables)]
6991    fn get_field(&self, field: &str) -> Result<GameEventValue> {
6992        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
6993        match field {
6994            _ => Err(ParseError::MissingGameEventValue {
6995                ty: "LocalPlayerChargeReady",
6996                field: field.into(),
6997            }),
6998        }
6999    }
7000    #[allow(unused_variables)]
7001    fn write(
7002        &self,
7003        stream: &mut BitWriteStream<LittleEndian>,
7004        definition: &GameEventDefinition,
7005    ) -> Result<()> {
7006        for entry in &definition.entries {
7007            let value = self
7008                .get_field(&entry.name)
7009                .unwrap_or_else(|_| entry.kind.default_value());
7010            stream.write(&value)?;
7011        }
7012        Ok(())
7013    }
7014}
7015#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7016#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7017pub struct LocalPlayerWindDownEvent {}
7018impl LocalPlayerWindDownEvent {
7019    #[allow(unused_variables)]
7020    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7021        Ok(LocalPlayerWindDownEvent {})
7022    }
7023    #[allow(unused_variables)]
7024    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7025        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7026        match field {
7027            _ => Err(ParseError::MissingGameEventValue {
7028                ty: "LocalPlayerWindDown",
7029                field: field.into(),
7030            }),
7031        }
7032    }
7033    #[allow(unused_variables)]
7034    fn write(
7035        &self,
7036        stream: &mut BitWriteStream<LittleEndian>,
7037        definition: &GameEventDefinition,
7038    ) -> Result<()> {
7039        for entry in &definition.entries {
7040            let value = self
7041                .get_field(&entry.name)
7042                .unwrap_or_else(|_| entry.kind.default_value());
7043            stream.write(&value)?;
7044        }
7045        Ok(())
7046    }
7047}
7048#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7049#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7050pub struct PlayerInvulnedEvent {
7051    pub user_id: u16,
7052    pub medic_user_id: u16,
7053}
7054impl PlayerInvulnedEvent {
7055    #[allow(unused_variables)]
7056    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7057        Ok(PlayerInvulnedEvent {
7058            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
7059            medic_user_id: read_value::<u16>(
7060                stream,
7061                definition.get_entry("medic_userid"),
7062                "medic_user_id",
7063            )?,
7064        })
7065    }
7066    #[allow(unused_variables)]
7067    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7068        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7069        match field {
7070            "userid" => Ok(self.user_id.clone().into()),
7071            "medic_userid" => Ok(self.medic_user_id.clone().into()),
7072            _ => Err(ParseError::MissingGameEventValue {
7073                ty: "PlayerInvulned",
7074                field: field.into(),
7075            }),
7076        }
7077    }
7078    #[allow(unused_variables)]
7079    fn write(
7080        &self,
7081        stream: &mut BitWriteStream<LittleEndian>,
7082        definition: &GameEventDefinition,
7083    ) -> Result<()> {
7084        for entry in &definition.entries {
7085            let value = self
7086                .get_field(&entry.name)
7087                .unwrap_or_else(|_| entry.kind.default_value());
7088            stream.write(&value)?;
7089        }
7090        Ok(())
7091    }
7092}
7093#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7094#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7095pub struct EscortSpeedEvent {
7096    pub team: u8,
7097    pub speed: u8,
7098    pub players: u8,
7099}
7100impl EscortSpeedEvent {
7101    #[allow(unused_variables)]
7102    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7103        Ok(EscortSpeedEvent {
7104            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
7105            speed: read_value::<u8>(stream, definition.get_entry("speed"), "speed")?,
7106            players: read_value::<u8>(stream, definition.get_entry("players"), "players")?,
7107        })
7108    }
7109    #[allow(unused_variables)]
7110    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7111        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7112        match field {
7113            "team" => Ok(self.team.clone().into()),
7114            "speed" => Ok(self.speed.clone().into()),
7115            "players" => Ok(self.players.clone().into()),
7116            _ => Err(ParseError::MissingGameEventValue {
7117                ty: "EscortSpeed",
7118                field: field.into(),
7119            }),
7120        }
7121    }
7122    #[allow(unused_variables)]
7123    fn write(
7124        &self,
7125        stream: &mut BitWriteStream<LittleEndian>,
7126        definition: &GameEventDefinition,
7127    ) -> Result<()> {
7128        for entry in &definition.entries {
7129            let value = self
7130                .get_field(&entry.name)
7131                .unwrap_or_else(|_| entry.kind.default_value());
7132            stream.write(&value)?;
7133        }
7134        Ok(())
7135    }
7136}
7137#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7138#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7139pub struct EscortProgressEvent {
7140    pub team: u8,
7141    pub progress: f32,
7142    pub reset: bool,
7143}
7144impl EscortProgressEvent {
7145    #[allow(unused_variables)]
7146    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7147        Ok(EscortProgressEvent {
7148            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
7149            progress: read_value::<f32>(stream, definition.get_entry("progress"), "progress")?,
7150            reset: read_value::<bool>(stream, definition.get_entry("reset"), "reset")?,
7151        })
7152    }
7153    #[allow(unused_variables)]
7154    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7155        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7156        match field {
7157            "team" => Ok(self.team.clone().into()),
7158            "progress" => Ok(self.progress.clone().into()),
7159            "reset" => Ok(self.reset.clone().into()),
7160            _ => Err(ParseError::MissingGameEventValue {
7161                ty: "EscortProgress",
7162                field: field.into(),
7163            }),
7164        }
7165    }
7166    #[allow(unused_variables)]
7167    fn write(
7168        &self,
7169        stream: &mut BitWriteStream<LittleEndian>,
7170        definition: &GameEventDefinition,
7171    ) -> Result<()> {
7172        for entry in &definition.entries {
7173            let value = self
7174                .get_field(&entry.name)
7175                .unwrap_or_else(|_| entry.kind.default_value());
7176            stream.write(&value)?;
7177        }
7178        Ok(())
7179    }
7180}
7181#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7182#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7183pub struct EscortRecedeEvent {
7184    pub team: u8,
7185    pub recede_time: f32,
7186}
7187impl EscortRecedeEvent {
7188    #[allow(unused_variables)]
7189    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7190        Ok(EscortRecedeEvent {
7191            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
7192            recede_time: read_value::<f32>(
7193                stream,
7194                definition.get_entry("recedetime"),
7195                "recede_time",
7196            )?,
7197        })
7198    }
7199    #[allow(unused_variables)]
7200    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7201        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7202        match field {
7203            "team" => Ok(self.team.clone().into()),
7204            "recedetime" => Ok(self.recede_time.clone().into()),
7205            _ => Err(ParseError::MissingGameEventValue {
7206                ty: "EscortRecede",
7207                field: field.into(),
7208            }),
7209        }
7210    }
7211    #[allow(unused_variables)]
7212    fn write(
7213        &self,
7214        stream: &mut BitWriteStream<LittleEndian>,
7215        definition: &GameEventDefinition,
7216    ) -> Result<()> {
7217        for entry in &definition.entries {
7218            let value = self
7219                .get_field(&entry.name)
7220                .unwrap_or_else(|_| entry.kind.default_value());
7221            stream.write(&value)?;
7222        }
7223        Ok(())
7224    }
7225}
7226#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7227#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7228pub struct GameUIActivatedEvent {}
7229impl GameUIActivatedEvent {
7230    #[allow(unused_variables)]
7231    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7232        Ok(GameUIActivatedEvent {})
7233    }
7234    #[allow(unused_variables)]
7235    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7236        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7237        match field {
7238            _ => Err(ParseError::MissingGameEventValue {
7239                ty: "GameUIActivated",
7240                field: field.into(),
7241            }),
7242        }
7243    }
7244    #[allow(unused_variables)]
7245    fn write(
7246        &self,
7247        stream: &mut BitWriteStream<LittleEndian>,
7248        definition: &GameEventDefinition,
7249    ) -> Result<()> {
7250        for entry in &definition.entries {
7251            let value = self
7252                .get_field(&entry.name)
7253                .unwrap_or_else(|_| entry.kind.default_value());
7254            stream.write(&value)?;
7255        }
7256        Ok(())
7257    }
7258}
7259#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7260#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7261pub struct GameUIHiddenEvent {}
7262impl GameUIHiddenEvent {
7263    #[allow(unused_variables)]
7264    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7265        Ok(GameUIHiddenEvent {})
7266    }
7267    #[allow(unused_variables)]
7268    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7269        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7270        match field {
7271            _ => Err(ParseError::MissingGameEventValue {
7272                ty: "GameUIHidden",
7273                field: field.into(),
7274            }),
7275        }
7276    }
7277    #[allow(unused_variables)]
7278    fn write(
7279        &self,
7280        stream: &mut BitWriteStream<LittleEndian>,
7281        definition: &GameEventDefinition,
7282    ) -> Result<()> {
7283        for entry in &definition.entries {
7284            let value = self
7285                .get_field(&entry.name)
7286                .unwrap_or_else(|_| entry.kind.default_value());
7287            stream.write(&value)?;
7288        }
7289        Ok(())
7290    }
7291}
7292#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7293#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7294pub struct PlayerEscortScoreEvent {
7295    pub player: u8,
7296    pub points: u8,
7297}
7298impl PlayerEscortScoreEvent {
7299    #[allow(unused_variables)]
7300    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7301        Ok(PlayerEscortScoreEvent {
7302            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
7303            points: read_value::<u8>(stream, definition.get_entry("points"), "points")?,
7304        })
7305    }
7306    #[allow(unused_variables)]
7307    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7308        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7309        match field {
7310            "player" => Ok(self.player.clone().into()),
7311            "points" => Ok(self.points.clone().into()),
7312            _ => Err(ParseError::MissingGameEventValue {
7313                ty: "PlayerEscortScore",
7314                field: field.into(),
7315            }),
7316        }
7317    }
7318    #[allow(unused_variables)]
7319    fn write(
7320        &self,
7321        stream: &mut BitWriteStream<LittleEndian>,
7322        definition: &GameEventDefinition,
7323    ) -> Result<()> {
7324        for entry in &definition.entries {
7325            let value = self
7326                .get_field(&entry.name)
7327                .unwrap_or_else(|_| entry.kind.default_value());
7328            stream.write(&value)?;
7329        }
7330        Ok(())
7331    }
7332}
7333#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7334#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7335pub struct PlayerHealOnHitEvent {
7336    pub amount: u16,
7337    pub ent_index: u8,
7338    pub weapon_def_index: u32,
7339}
7340impl PlayerHealOnHitEvent {
7341    #[allow(unused_variables)]
7342    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7343        Ok(PlayerHealOnHitEvent {
7344            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
7345            ent_index: read_value::<u8>(stream, definition.get_entry("entindex"), "ent_index")?,
7346            weapon_def_index: read_value::<u32>(
7347                stream,
7348                definition.get_entry("weapon_def_index"),
7349                "weapon_def_index",
7350            )?,
7351        })
7352    }
7353    #[allow(unused_variables)]
7354    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7355        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7356        match field {
7357            "amount" => Ok(self.amount.clone().into()),
7358            "entindex" => Ok(self.ent_index.clone().into()),
7359            "weapon_def_index" => Ok(self.weapon_def_index.clone().into()),
7360            _ => Err(ParseError::MissingGameEventValue {
7361                ty: "PlayerHealOnHit",
7362                field: field.into(),
7363            }),
7364        }
7365    }
7366    #[allow(unused_variables)]
7367    fn write(
7368        &self,
7369        stream: &mut BitWriteStream<LittleEndian>,
7370        definition: &GameEventDefinition,
7371    ) -> Result<()> {
7372        for entry in &definition.entries {
7373            let value = self
7374                .get_field(&entry.name)
7375                .unwrap_or_else(|_| entry.kind.default_value());
7376            stream.write(&value)?;
7377        }
7378        Ok(())
7379    }
7380}
7381#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7382#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7383pub struct PlayerStealSandvichEvent {
7384    pub owner: u16,
7385    pub target: u16,
7386}
7387impl PlayerStealSandvichEvent {
7388    #[allow(unused_variables)]
7389    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7390        Ok(PlayerStealSandvichEvent {
7391            owner: read_value::<u16>(stream, definition.get_entry("owner"), "owner")?,
7392            target: read_value::<u16>(stream, definition.get_entry("target"), "target")?,
7393        })
7394    }
7395    #[allow(unused_variables)]
7396    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7397        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7398        match field {
7399            "owner" => Ok(self.owner.clone().into()),
7400            "target" => Ok(self.target.clone().into()),
7401            _ => Err(ParseError::MissingGameEventValue {
7402                ty: "PlayerStealSandvich",
7403                field: field.into(),
7404            }),
7405        }
7406    }
7407    #[allow(unused_variables)]
7408    fn write(
7409        &self,
7410        stream: &mut BitWriteStream<LittleEndian>,
7411        definition: &GameEventDefinition,
7412    ) -> Result<()> {
7413        for entry in &definition.entries {
7414            let value = self
7415                .get_field(&entry.name)
7416                .unwrap_or_else(|_| entry.kind.default_value());
7417            stream.write(&value)?;
7418        }
7419        Ok(())
7420    }
7421}
7422#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7423#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7424pub struct ShowClassLayoutEvent {
7425    pub show: bool,
7426}
7427impl ShowClassLayoutEvent {
7428    #[allow(unused_variables)]
7429    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7430        Ok(ShowClassLayoutEvent {
7431            show: read_value::<bool>(stream, definition.get_entry("show"), "show")?,
7432        })
7433    }
7434    #[allow(unused_variables)]
7435    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7436        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7437        match field {
7438            "show" => Ok(self.show.clone().into()),
7439            _ => Err(ParseError::MissingGameEventValue {
7440                ty: "ShowClassLayout",
7441                field: field.into(),
7442            }),
7443        }
7444    }
7445    #[allow(unused_variables)]
7446    fn write(
7447        &self,
7448        stream: &mut BitWriteStream<LittleEndian>,
7449        definition: &GameEventDefinition,
7450    ) -> Result<()> {
7451        for entry in &definition.entries {
7452            let value = self
7453                .get_field(&entry.name)
7454                .unwrap_or_else(|_| entry.kind.default_value());
7455            stream.write(&value)?;
7456        }
7457        Ok(())
7458    }
7459}
7460#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7461#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7462pub struct ShowVsPanelEvent {
7463    pub show: bool,
7464}
7465impl ShowVsPanelEvent {
7466    #[allow(unused_variables)]
7467    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7468        Ok(ShowVsPanelEvent {
7469            show: read_value::<bool>(stream, definition.get_entry("show"), "show")?,
7470        })
7471    }
7472    #[allow(unused_variables)]
7473    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7474        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7475        match field {
7476            "show" => Ok(self.show.clone().into()),
7477            _ => Err(ParseError::MissingGameEventValue {
7478                ty: "ShowVsPanel",
7479                field: field.into(),
7480            }),
7481        }
7482    }
7483    #[allow(unused_variables)]
7484    fn write(
7485        &self,
7486        stream: &mut BitWriteStream<LittleEndian>,
7487        definition: &GameEventDefinition,
7488    ) -> Result<()> {
7489        for entry in &definition.entries {
7490            let value = self
7491                .get_field(&entry.name)
7492                .unwrap_or_else(|_| entry.kind.default_value());
7493            stream.write(&value)?;
7494        }
7495        Ok(())
7496    }
7497}
7498#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7499#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7500pub struct PlayerDamagedEvent {
7501    pub amount: u16,
7502    pub kind: u32,
7503}
7504impl PlayerDamagedEvent {
7505    #[allow(unused_variables)]
7506    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7507        Ok(PlayerDamagedEvent {
7508            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
7509            kind: read_value::<u32>(stream, definition.get_entry("type"), "kind")?,
7510        })
7511    }
7512    #[allow(unused_variables)]
7513    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7514        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7515        match field {
7516            "amount" => Ok(self.amount.clone().into()),
7517            "type" => Ok(self.kind.clone().into()),
7518            _ => Err(ParseError::MissingGameEventValue {
7519                ty: "PlayerDamaged",
7520                field: field.into(),
7521            }),
7522        }
7523    }
7524    #[allow(unused_variables)]
7525    fn write(
7526        &self,
7527        stream: &mut BitWriteStream<LittleEndian>,
7528        definition: &GameEventDefinition,
7529    ) -> Result<()> {
7530        for entry in &definition.entries {
7531            let value = self
7532                .get_field(&entry.name)
7533                .unwrap_or_else(|_| entry.kind.default_value());
7534            stream.write(&value)?;
7535        }
7536        Ok(())
7537    }
7538}
7539#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7540#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7541pub struct ArenaPlayerNotificationEvent {
7542    pub player: u8,
7543    pub message: u8,
7544}
7545impl ArenaPlayerNotificationEvent {
7546    #[allow(unused_variables)]
7547    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7548        Ok(ArenaPlayerNotificationEvent {
7549            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
7550            message: read_value::<u8>(stream, definition.get_entry("message"), "message")?,
7551        })
7552    }
7553    #[allow(unused_variables)]
7554    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7555        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7556        match field {
7557            "player" => Ok(self.player.clone().into()),
7558            "message" => Ok(self.message.clone().into()),
7559            _ => Err(ParseError::MissingGameEventValue {
7560                ty: "ArenaPlayerNotification",
7561                field: field.into(),
7562            }),
7563        }
7564    }
7565    #[allow(unused_variables)]
7566    fn write(
7567        &self,
7568        stream: &mut BitWriteStream<LittleEndian>,
7569        definition: &GameEventDefinition,
7570    ) -> Result<()> {
7571        for entry in &definition.entries {
7572            let value = self
7573                .get_field(&entry.name)
7574                .unwrap_or_else(|_| entry.kind.default_value());
7575            stream.write(&value)?;
7576        }
7577        Ok(())
7578    }
7579}
7580#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7581#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7582pub struct ArenaMatchMaxStreakEvent {
7583    pub team: u8,
7584    pub streak: u8,
7585}
7586impl ArenaMatchMaxStreakEvent {
7587    #[allow(unused_variables)]
7588    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7589        Ok(ArenaMatchMaxStreakEvent {
7590            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
7591            streak: read_value::<u8>(stream, definition.get_entry("streak"), "streak")?,
7592        })
7593    }
7594    #[allow(unused_variables)]
7595    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7596        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7597        match field {
7598            "team" => Ok(self.team.clone().into()),
7599            "streak" => Ok(self.streak.clone().into()),
7600            _ => Err(ParseError::MissingGameEventValue {
7601                ty: "ArenaMatchMaxStreak",
7602                field: field.into(),
7603            }),
7604        }
7605    }
7606    #[allow(unused_variables)]
7607    fn write(
7608        &self,
7609        stream: &mut BitWriteStream<LittleEndian>,
7610        definition: &GameEventDefinition,
7611    ) -> Result<()> {
7612        for entry in &definition.entries {
7613            let value = self
7614                .get_field(&entry.name)
7615                .unwrap_or_else(|_| entry.kind.default_value());
7616            stream.write(&value)?;
7617        }
7618        Ok(())
7619    }
7620}
7621#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7622#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7623pub struct ArenaRoundStartEvent {}
7624impl ArenaRoundStartEvent {
7625    #[allow(unused_variables)]
7626    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7627        Ok(ArenaRoundStartEvent {})
7628    }
7629    #[allow(unused_variables)]
7630    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7631        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7632        match field {
7633            _ => Err(ParseError::MissingGameEventValue {
7634                ty: "ArenaRoundStart",
7635                field: field.into(),
7636            }),
7637        }
7638    }
7639    #[allow(unused_variables)]
7640    fn write(
7641        &self,
7642        stream: &mut BitWriteStream<LittleEndian>,
7643        definition: &GameEventDefinition,
7644    ) -> Result<()> {
7645        for entry in &definition.entries {
7646            let value = self
7647                .get_field(&entry.name)
7648                .unwrap_or_else(|_| entry.kind.default_value());
7649            stream.write(&value)?;
7650        }
7651        Ok(())
7652    }
7653}
7654#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7655#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7656pub struct ArenaWinPanelEvent {
7657    pub panel_style: u8,
7658    pub winning_team: u8,
7659    pub win_reason: u8,
7660    pub cappers: MaybeUtf8String,
7661    pub flag_cap_limit: u16,
7662    pub blue_score: u16,
7663    pub red_score: u16,
7664    pub blue_score_prev: u16,
7665    pub red_score_prev: u16,
7666    pub round_complete: u16,
7667    pub player_1: u16,
7668    pub player_1_damage: u16,
7669    pub player_1_healing: u16,
7670    pub player_1_lifetime: u16,
7671    pub player_1_kills: u16,
7672    pub player_2: u16,
7673    pub player_2_damage: u16,
7674    pub player_2_healing: u16,
7675    pub player_2_lifetime: u16,
7676    pub player_2_kills: u16,
7677    pub player_3: u16,
7678    pub player_3_damage: u16,
7679    pub player_3_healing: u16,
7680    pub player_3_lifetime: u16,
7681    pub player_3_kills: u16,
7682    pub player_4: u16,
7683    pub player_4_damage: u16,
7684    pub player_4_healing: u16,
7685    pub player_4_lifetime: u16,
7686    pub player_4_kills: u16,
7687    pub player_5: u16,
7688    pub player_5_damage: u16,
7689    pub player_5_healing: u16,
7690    pub player_5_lifetime: u16,
7691    pub player_5_kills: u16,
7692    pub player_6: u16,
7693    pub player_6_damage: u16,
7694    pub player_6_healing: u16,
7695    pub player_6_lifetime: u16,
7696    pub player_6_kills: u16,
7697}
7698impl ArenaWinPanelEvent {
7699    #[allow(unused_variables)]
7700    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7701        Ok(ArenaWinPanelEvent {
7702            panel_style: read_value::<u8>(
7703                stream,
7704                definition.get_entry("panel_style"),
7705                "panel_style",
7706            )?,
7707            winning_team: read_value::<u8>(
7708                stream,
7709                definition.get_entry("winning_team"),
7710                "winning_team",
7711            )?,
7712            win_reason: read_value::<u8>(stream, definition.get_entry("winreason"), "win_reason")?,
7713            cappers: read_value::<MaybeUtf8String>(
7714                stream,
7715                definition.get_entry("cappers"),
7716                "cappers",
7717            )?,
7718            flag_cap_limit: read_value::<u16>(
7719                stream,
7720                definition.get_entry("flagcaplimit"),
7721                "flag_cap_limit",
7722            )?,
7723            blue_score: read_value::<u16>(
7724                stream,
7725                definition.get_entry("blue_score"),
7726                "blue_score",
7727            )?,
7728            red_score: read_value::<u16>(stream, definition.get_entry("red_score"), "red_score")?,
7729            blue_score_prev: read_value::<u16>(
7730                stream,
7731                definition.get_entry("blue_score_prev"),
7732                "blue_score_prev",
7733            )?,
7734            red_score_prev: read_value::<u16>(
7735                stream,
7736                definition.get_entry("red_score_prev"),
7737                "red_score_prev",
7738            )?,
7739            round_complete: read_value::<u16>(
7740                stream,
7741                definition.get_entry("round_complete"),
7742                "round_complete",
7743            )?,
7744            player_1: read_value::<u16>(stream, definition.get_entry("player_1"), "player_1")?,
7745            player_1_damage: read_value::<u16>(
7746                stream,
7747                definition.get_entry("player_1_damage"),
7748                "player_1_damage",
7749            )?,
7750            player_1_healing: read_value::<u16>(
7751                stream,
7752                definition.get_entry("player_1_healing"),
7753                "player_1_healing",
7754            )?,
7755            player_1_lifetime: read_value::<u16>(
7756                stream,
7757                definition.get_entry("player_1_lifetime"),
7758                "player_1_lifetime",
7759            )?,
7760            player_1_kills: read_value::<u16>(
7761                stream,
7762                definition.get_entry("player_1_kills"),
7763                "player_1_kills",
7764            )?,
7765            player_2: read_value::<u16>(stream, definition.get_entry("player_2"), "player_2")?,
7766            player_2_damage: read_value::<u16>(
7767                stream,
7768                definition.get_entry("player_2_damage"),
7769                "player_2_damage",
7770            )?,
7771            player_2_healing: read_value::<u16>(
7772                stream,
7773                definition.get_entry("player_2_healing"),
7774                "player_2_healing",
7775            )?,
7776            player_2_lifetime: read_value::<u16>(
7777                stream,
7778                definition.get_entry("player_2_lifetime"),
7779                "player_2_lifetime",
7780            )?,
7781            player_2_kills: read_value::<u16>(
7782                stream,
7783                definition.get_entry("player_2_kills"),
7784                "player_2_kills",
7785            )?,
7786            player_3: read_value::<u16>(stream, definition.get_entry("player_3"), "player_3")?,
7787            player_3_damage: read_value::<u16>(
7788                stream,
7789                definition.get_entry("player_3_damage"),
7790                "player_3_damage",
7791            )?,
7792            player_3_healing: read_value::<u16>(
7793                stream,
7794                definition.get_entry("player_3_healing"),
7795                "player_3_healing",
7796            )?,
7797            player_3_lifetime: read_value::<u16>(
7798                stream,
7799                definition.get_entry("player_3_lifetime"),
7800                "player_3_lifetime",
7801            )?,
7802            player_3_kills: read_value::<u16>(
7803                stream,
7804                definition.get_entry("player_3_kills"),
7805                "player_3_kills",
7806            )?,
7807            player_4: read_value::<u16>(stream, definition.get_entry("player_4"), "player_4")?,
7808            player_4_damage: read_value::<u16>(
7809                stream,
7810                definition.get_entry("player_4_damage"),
7811                "player_4_damage",
7812            )?,
7813            player_4_healing: read_value::<u16>(
7814                stream,
7815                definition.get_entry("player_4_healing"),
7816                "player_4_healing",
7817            )?,
7818            player_4_lifetime: read_value::<u16>(
7819                stream,
7820                definition.get_entry("player_4_lifetime"),
7821                "player_4_lifetime",
7822            )?,
7823            player_4_kills: read_value::<u16>(
7824                stream,
7825                definition.get_entry("player_4_kills"),
7826                "player_4_kills",
7827            )?,
7828            player_5: read_value::<u16>(stream, definition.get_entry("player_5"), "player_5")?,
7829            player_5_damage: read_value::<u16>(
7830                stream,
7831                definition.get_entry("player_5_damage"),
7832                "player_5_damage",
7833            )?,
7834            player_5_healing: read_value::<u16>(
7835                stream,
7836                definition.get_entry("player_5_healing"),
7837                "player_5_healing",
7838            )?,
7839            player_5_lifetime: read_value::<u16>(
7840                stream,
7841                definition.get_entry("player_5_lifetime"),
7842                "player_5_lifetime",
7843            )?,
7844            player_5_kills: read_value::<u16>(
7845                stream,
7846                definition.get_entry("player_5_kills"),
7847                "player_5_kills",
7848            )?,
7849            player_6: read_value::<u16>(stream, definition.get_entry("player_6"), "player_6")?,
7850            player_6_damage: read_value::<u16>(
7851                stream,
7852                definition.get_entry("player_6_damage"),
7853                "player_6_damage",
7854            )?,
7855            player_6_healing: read_value::<u16>(
7856                stream,
7857                definition.get_entry("player_6_healing"),
7858                "player_6_healing",
7859            )?,
7860            player_6_lifetime: read_value::<u16>(
7861                stream,
7862                definition.get_entry("player_6_lifetime"),
7863                "player_6_lifetime",
7864            )?,
7865            player_6_kills: read_value::<u16>(
7866                stream,
7867                definition.get_entry("player_6_kills"),
7868                "player_6_kills",
7869            )?,
7870        })
7871    }
7872    #[allow(unused_variables)]
7873    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7874        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7875        match field {
7876            "panel_style" => Ok(self.panel_style.clone().into()),
7877            "winning_team" => Ok(self.winning_team.clone().into()),
7878            "winreason" => Ok(self.win_reason.clone().into()),
7879            "cappers" => Ok(self.cappers.clone().into()),
7880            "flagcaplimit" => Ok(self.flag_cap_limit.clone().into()),
7881            "blue_score" => Ok(self.blue_score.clone().into()),
7882            "red_score" => Ok(self.red_score.clone().into()),
7883            "blue_score_prev" => Ok(self.blue_score_prev.clone().into()),
7884            "red_score_prev" => Ok(self.red_score_prev.clone().into()),
7885            "round_complete" => Ok(self.round_complete.clone().into()),
7886            "player_1" => Ok(self.player_1.clone().into()),
7887            "player_1_damage" => Ok(self.player_1_damage.clone().into()),
7888            "player_1_healing" => Ok(self.player_1_healing.clone().into()),
7889            "player_1_lifetime" => Ok(self.player_1_lifetime.clone().into()),
7890            "player_1_kills" => Ok(self.player_1_kills.clone().into()),
7891            "player_2" => Ok(self.player_2.clone().into()),
7892            "player_2_damage" => Ok(self.player_2_damage.clone().into()),
7893            "player_2_healing" => Ok(self.player_2_healing.clone().into()),
7894            "player_2_lifetime" => Ok(self.player_2_lifetime.clone().into()),
7895            "player_2_kills" => Ok(self.player_2_kills.clone().into()),
7896            "player_3" => Ok(self.player_3.clone().into()),
7897            "player_3_damage" => Ok(self.player_3_damage.clone().into()),
7898            "player_3_healing" => Ok(self.player_3_healing.clone().into()),
7899            "player_3_lifetime" => Ok(self.player_3_lifetime.clone().into()),
7900            "player_3_kills" => Ok(self.player_3_kills.clone().into()),
7901            "player_4" => Ok(self.player_4.clone().into()),
7902            "player_4_damage" => Ok(self.player_4_damage.clone().into()),
7903            "player_4_healing" => Ok(self.player_4_healing.clone().into()),
7904            "player_4_lifetime" => Ok(self.player_4_lifetime.clone().into()),
7905            "player_4_kills" => Ok(self.player_4_kills.clone().into()),
7906            "player_5" => Ok(self.player_5.clone().into()),
7907            "player_5_damage" => Ok(self.player_5_damage.clone().into()),
7908            "player_5_healing" => Ok(self.player_5_healing.clone().into()),
7909            "player_5_lifetime" => Ok(self.player_5_lifetime.clone().into()),
7910            "player_5_kills" => Ok(self.player_5_kills.clone().into()),
7911            "player_6" => Ok(self.player_6.clone().into()),
7912            "player_6_damage" => Ok(self.player_6_damage.clone().into()),
7913            "player_6_healing" => Ok(self.player_6_healing.clone().into()),
7914            "player_6_lifetime" => Ok(self.player_6_lifetime.clone().into()),
7915            "player_6_kills" => Ok(self.player_6_kills.clone().into()),
7916            _ => Err(ParseError::MissingGameEventValue {
7917                ty: "ArenaWinPanel",
7918                field: field.into(),
7919            }),
7920        }
7921    }
7922    #[allow(unused_variables)]
7923    fn write(
7924        &self,
7925        stream: &mut BitWriteStream<LittleEndian>,
7926        definition: &GameEventDefinition,
7927    ) -> Result<()> {
7928        for entry in &definition.entries {
7929            let value = self
7930                .get_field(&entry.name)
7931                .unwrap_or_else(|_| entry.kind.default_value());
7932            stream.write(&value)?;
7933        }
7934        Ok(())
7935    }
7936}
7937#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7938#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7939pub struct PveWinPanelEvent {
7940    pub panel_style: u8,
7941    pub winning_team: u8,
7942    pub win_reason: u8,
7943}
7944impl PveWinPanelEvent {
7945    #[allow(unused_variables)]
7946    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7947        Ok(PveWinPanelEvent {
7948            panel_style: read_value::<u8>(
7949                stream,
7950                definition.get_entry("panel_style"),
7951                "panel_style",
7952            )?,
7953            winning_team: read_value::<u8>(
7954                stream,
7955                definition.get_entry("winning_team"),
7956                "winning_team",
7957            )?,
7958            win_reason: read_value::<u8>(stream, definition.get_entry("winreason"), "win_reason")?,
7959        })
7960    }
7961    #[allow(unused_variables)]
7962    fn get_field(&self, field: &str) -> Result<GameEventValue> {
7963        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
7964        match field {
7965            "panel_style" => Ok(self.panel_style.clone().into()),
7966            "winning_team" => Ok(self.winning_team.clone().into()),
7967            "winreason" => Ok(self.win_reason.clone().into()),
7968            _ => Err(ParseError::MissingGameEventValue {
7969                ty: "PveWinPanel",
7970                field: field.into(),
7971            }),
7972        }
7973    }
7974    #[allow(unused_variables)]
7975    fn write(
7976        &self,
7977        stream: &mut BitWriteStream<LittleEndian>,
7978        definition: &GameEventDefinition,
7979    ) -> Result<()> {
7980        for entry in &definition.entries {
7981            let value = self
7982                .get_field(&entry.name)
7983                .unwrap_or_else(|_| entry.kind.default_value());
7984            stream.write(&value)?;
7985        }
7986        Ok(())
7987    }
7988}
7989#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7990#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
7991pub struct AirDashEvent {
7992    pub player: u8,
7993}
7994impl AirDashEvent {
7995    #[allow(unused_variables)]
7996    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
7997        Ok(AirDashEvent {
7998            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
7999        })
8000    }
8001    #[allow(unused_variables)]
8002    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8003        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8004        match field {
8005            "player" => Ok(self.player.clone().into()),
8006            _ => Err(ParseError::MissingGameEventValue {
8007                ty: "AirDash",
8008                field: field.into(),
8009            }),
8010        }
8011    }
8012    #[allow(unused_variables)]
8013    fn write(
8014        &self,
8015        stream: &mut BitWriteStream<LittleEndian>,
8016        definition: &GameEventDefinition,
8017    ) -> Result<()> {
8018        for entry in &definition.entries {
8019            let value = self
8020                .get_field(&entry.name)
8021                .unwrap_or_else(|_| entry.kind.default_value());
8022            stream.write(&value)?;
8023        }
8024        Ok(())
8025    }
8026}
8027#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8028#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8029pub struct LandedEvent {
8030    pub player: u8,
8031}
8032impl LandedEvent {
8033    #[allow(unused_variables)]
8034    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8035        Ok(LandedEvent {
8036            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
8037        })
8038    }
8039    #[allow(unused_variables)]
8040    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8041        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8042        match field {
8043            "player" => Ok(self.player.clone().into()),
8044            _ => Err(ParseError::MissingGameEventValue {
8045                ty: "Landed",
8046                field: field.into(),
8047            }),
8048        }
8049    }
8050    #[allow(unused_variables)]
8051    fn write(
8052        &self,
8053        stream: &mut BitWriteStream<LittleEndian>,
8054        definition: &GameEventDefinition,
8055    ) -> Result<()> {
8056        for entry in &definition.entries {
8057            let value = self
8058                .get_field(&entry.name)
8059                .unwrap_or_else(|_| entry.kind.default_value());
8060            stream.write(&value)?;
8061        }
8062        Ok(())
8063    }
8064}
8065#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8066#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8067pub struct PlayerDamageDodgedEvent {
8068    pub damage: u16,
8069}
8070impl PlayerDamageDodgedEvent {
8071    #[allow(unused_variables)]
8072    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8073        Ok(PlayerDamageDodgedEvent {
8074            damage: read_value::<u16>(stream, definition.get_entry("damage"), "damage")?,
8075        })
8076    }
8077    #[allow(unused_variables)]
8078    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8079        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8080        match field {
8081            "damage" => Ok(self.damage.clone().into()),
8082            _ => Err(ParseError::MissingGameEventValue {
8083                ty: "PlayerDamageDodged",
8084                field: field.into(),
8085            }),
8086        }
8087    }
8088    #[allow(unused_variables)]
8089    fn write(
8090        &self,
8091        stream: &mut BitWriteStream<LittleEndian>,
8092        definition: &GameEventDefinition,
8093    ) -> Result<()> {
8094        for entry in &definition.entries {
8095            let value = self
8096                .get_field(&entry.name)
8097                .unwrap_or_else(|_| entry.kind.default_value());
8098            stream.write(&value)?;
8099        }
8100        Ok(())
8101    }
8102}
8103#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8104#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8105pub struct PlayerStunnedEvent {
8106    pub stunner: u16,
8107    pub victim: u16,
8108    pub victim_capping: bool,
8109    pub big_stun: bool,
8110}
8111impl PlayerStunnedEvent {
8112    #[allow(unused_variables)]
8113    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8114        Ok(PlayerStunnedEvent {
8115            stunner: read_value::<u16>(stream, definition.get_entry("stunner"), "stunner")?,
8116            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
8117            victim_capping: read_value::<bool>(
8118                stream,
8119                definition.get_entry("victim_capping"),
8120                "victim_capping",
8121            )?,
8122            big_stun: read_value::<bool>(stream, definition.get_entry("big_stun"), "big_stun")?,
8123        })
8124    }
8125    #[allow(unused_variables)]
8126    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8127        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8128        match field {
8129            "stunner" => Ok(self.stunner.clone().into()),
8130            "victim" => Ok(self.victim.clone().into()),
8131            "victim_capping" => Ok(self.victim_capping.clone().into()),
8132            "big_stun" => Ok(self.big_stun.clone().into()),
8133            _ => Err(ParseError::MissingGameEventValue {
8134                ty: "PlayerStunned",
8135                field: field.into(),
8136            }),
8137        }
8138    }
8139    #[allow(unused_variables)]
8140    fn write(
8141        &self,
8142        stream: &mut BitWriteStream<LittleEndian>,
8143        definition: &GameEventDefinition,
8144    ) -> Result<()> {
8145        for entry in &definition.entries {
8146            let value = self
8147                .get_field(&entry.name)
8148                .unwrap_or_else(|_| entry.kind.default_value());
8149            stream.write(&value)?;
8150        }
8151        Ok(())
8152    }
8153}
8154#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8155#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8156pub struct ScoutGrandSlamEvent {
8157    pub scout_id: u16,
8158    pub target_id: u16,
8159}
8160impl ScoutGrandSlamEvent {
8161    #[allow(unused_variables)]
8162    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8163        Ok(ScoutGrandSlamEvent {
8164            scout_id: read_value::<u16>(stream, definition.get_entry("scout_id"), "scout_id")?,
8165            target_id: read_value::<u16>(stream, definition.get_entry("target_id"), "target_id")?,
8166        })
8167    }
8168    #[allow(unused_variables)]
8169    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8170        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8171        match field {
8172            "scout_id" => Ok(self.scout_id.clone().into()),
8173            "target_id" => Ok(self.target_id.clone().into()),
8174            _ => Err(ParseError::MissingGameEventValue {
8175                ty: "ScoutGrandSlam",
8176                field: field.into(),
8177            }),
8178        }
8179    }
8180    #[allow(unused_variables)]
8181    fn write(
8182        &self,
8183        stream: &mut BitWriteStream<LittleEndian>,
8184        definition: &GameEventDefinition,
8185    ) -> Result<()> {
8186        for entry in &definition.entries {
8187            let value = self
8188                .get_field(&entry.name)
8189                .unwrap_or_else(|_| entry.kind.default_value());
8190            stream.write(&value)?;
8191        }
8192        Ok(())
8193    }
8194}
8195#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8196#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8197pub struct ScoutSlamdollLandedEvent {
8198    pub target_index: u16,
8199    pub x: f32,
8200    pub y: f32,
8201    pub z: f32,
8202}
8203impl ScoutSlamdollLandedEvent {
8204    #[allow(unused_variables)]
8205    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8206        Ok(ScoutSlamdollLandedEvent {
8207            target_index: read_value::<u16>(
8208                stream,
8209                definition.get_entry("target_index"),
8210                "target_index",
8211            )?,
8212            x: read_value::<f32>(stream, definition.get_entry("x"), "x")?,
8213            y: read_value::<f32>(stream, definition.get_entry("y"), "y")?,
8214            z: read_value::<f32>(stream, definition.get_entry("z"), "z")?,
8215        })
8216    }
8217    #[allow(unused_variables)]
8218    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8219        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8220        match field {
8221            "target_index" => Ok(self.target_index.clone().into()),
8222            "x" => Ok(self.x.clone().into()),
8223            "y" => Ok(self.y.clone().into()),
8224            "z" => Ok(self.z.clone().into()),
8225            _ => Err(ParseError::MissingGameEventValue {
8226                ty: "ScoutSlamdollLanded",
8227                field: field.into(),
8228            }),
8229        }
8230    }
8231    #[allow(unused_variables)]
8232    fn write(
8233        &self,
8234        stream: &mut BitWriteStream<LittleEndian>,
8235        definition: &GameEventDefinition,
8236    ) -> Result<()> {
8237        for entry in &definition.entries {
8238            let value = self
8239                .get_field(&entry.name)
8240                .unwrap_or_else(|_| entry.kind.default_value());
8241            stream.write(&value)?;
8242        }
8243        Ok(())
8244    }
8245}
8246#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8247#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8248pub struct ArrowImpactEvent {
8249    pub attached_entity: u16,
8250    pub shooter: u16,
8251    pub bone_index_attached: u16,
8252    pub bone_position_x: f32,
8253    pub bone_position_y: f32,
8254    pub bone_position_z: f32,
8255    pub bone_angles_x: f32,
8256    pub bone_angles_y: f32,
8257    pub bone_angles_z: f32,
8258    pub projectile_type: u16,
8259    pub is_crit: bool,
8260}
8261impl ArrowImpactEvent {
8262    #[allow(unused_variables)]
8263    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8264        Ok(ArrowImpactEvent {
8265            attached_entity: read_value::<u16>(
8266                stream,
8267                definition.get_entry("attachedEntity"),
8268                "attached_entity",
8269            )?,
8270            shooter: read_value::<u16>(stream, definition.get_entry("shooter"), "shooter")?,
8271            bone_index_attached: read_value::<u16>(
8272                stream,
8273                definition.get_entry("boneIndexAttached"),
8274                "bone_index_attached",
8275            )?,
8276            bone_position_x: read_value::<f32>(
8277                stream,
8278                definition.get_entry("bonePositionX"),
8279                "bone_position_x",
8280            )?,
8281            bone_position_y: read_value::<f32>(
8282                stream,
8283                definition.get_entry("bonePositionY"),
8284                "bone_position_y",
8285            )?,
8286            bone_position_z: read_value::<f32>(
8287                stream,
8288                definition.get_entry("bonePositionZ"),
8289                "bone_position_z",
8290            )?,
8291            bone_angles_x: read_value::<f32>(
8292                stream,
8293                definition.get_entry("boneAnglesX"),
8294                "bone_angles_x",
8295            )?,
8296            bone_angles_y: read_value::<f32>(
8297                stream,
8298                definition.get_entry("boneAnglesY"),
8299                "bone_angles_y",
8300            )?,
8301            bone_angles_z: read_value::<f32>(
8302                stream,
8303                definition.get_entry("boneAnglesZ"),
8304                "bone_angles_z",
8305            )?,
8306            projectile_type: read_value::<u16>(
8307                stream,
8308                definition.get_entry("projectileType"),
8309                "projectile_type",
8310            )?,
8311            is_crit: read_value::<bool>(stream, definition.get_entry("isCrit"), "is_crit")?,
8312        })
8313    }
8314    #[allow(unused_variables)]
8315    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8316        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8317        match field {
8318            "attachedEntity" => Ok(self.attached_entity.clone().into()),
8319            "shooter" => Ok(self.shooter.clone().into()),
8320            "boneIndexAttached" => Ok(self.bone_index_attached.clone().into()),
8321            "bonePositionX" => Ok(self.bone_position_x.clone().into()),
8322            "bonePositionY" => Ok(self.bone_position_y.clone().into()),
8323            "bonePositionZ" => Ok(self.bone_position_z.clone().into()),
8324            "boneAnglesX" => Ok(self.bone_angles_x.clone().into()),
8325            "boneAnglesY" => Ok(self.bone_angles_y.clone().into()),
8326            "boneAnglesZ" => Ok(self.bone_angles_z.clone().into()),
8327            "projectileType" => Ok(self.projectile_type.clone().into()),
8328            "isCrit" => Ok(self.is_crit.clone().into()),
8329            _ => Err(ParseError::MissingGameEventValue {
8330                ty: "ArrowImpact",
8331                field: field.into(),
8332            }),
8333        }
8334    }
8335    #[allow(unused_variables)]
8336    fn write(
8337        &self,
8338        stream: &mut BitWriteStream<LittleEndian>,
8339        definition: &GameEventDefinition,
8340    ) -> Result<()> {
8341        for entry in &definition.entries {
8342            let value = self
8343                .get_field(&entry.name)
8344                .unwrap_or_else(|_| entry.kind.default_value());
8345            stream.write(&value)?;
8346        }
8347        Ok(())
8348    }
8349}
8350#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8351#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8352pub struct PlayerJaratedEvent {
8353    pub thrower_ent_index: u8,
8354    pub victim_ent_index: u8,
8355}
8356impl PlayerJaratedEvent {
8357    #[allow(unused_variables)]
8358    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8359        Ok(PlayerJaratedEvent {
8360            thrower_ent_index: read_value::<u8>(
8361                stream,
8362                definition.get_entry("thrower_entindex"),
8363                "thrower_ent_index",
8364            )?,
8365            victim_ent_index: read_value::<u8>(
8366                stream,
8367                definition.get_entry("victim_entindex"),
8368                "victim_ent_index",
8369            )?,
8370        })
8371    }
8372    #[allow(unused_variables)]
8373    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8374        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8375        match field {
8376            "thrower_entindex" => Ok(self.thrower_ent_index.clone().into()),
8377            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
8378            _ => Err(ParseError::MissingGameEventValue {
8379                ty: "PlayerJarated",
8380                field: field.into(),
8381            }),
8382        }
8383    }
8384    #[allow(unused_variables)]
8385    fn write(
8386        &self,
8387        stream: &mut BitWriteStream<LittleEndian>,
8388        definition: &GameEventDefinition,
8389    ) -> Result<()> {
8390        for entry in &definition.entries {
8391            let value = self
8392                .get_field(&entry.name)
8393                .unwrap_or_else(|_| entry.kind.default_value());
8394            stream.write(&value)?;
8395        }
8396        Ok(())
8397    }
8398}
8399#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8400#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8401pub struct PlayerJaratedFadeEvent {
8402    pub thrower_ent_index: u8,
8403    pub victim_ent_index: u8,
8404}
8405impl PlayerJaratedFadeEvent {
8406    #[allow(unused_variables)]
8407    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8408        Ok(PlayerJaratedFadeEvent {
8409            thrower_ent_index: read_value::<u8>(
8410                stream,
8411                definition.get_entry("thrower_entindex"),
8412                "thrower_ent_index",
8413            )?,
8414            victim_ent_index: read_value::<u8>(
8415                stream,
8416                definition.get_entry("victim_entindex"),
8417                "victim_ent_index",
8418            )?,
8419        })
8420    }
8421    #[allow(unused_variables)]
8422    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8423        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8424        match field {
8425            "thrower_entindex" => Ok(self.thrower_ent_index.clone().into()),
8426            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
8427            _ => Err(ParseError::MissingGameEventValue {
8428                ty: "PlayerJaratedFade",
8429                field: field.into(),
8430            }),
8431        }
8432    }
8433    #[allow(unused_variables)]
8434    fn write(
8435        &self,
8436        stream: &mut BitWriteStream<LittleEndian>,
8437        definition: &GameEventDefinition,
8438    ) -> Result<()> {
8439        for entry in &definition.entries {
8440            let value = self
8441                .get_field(&entry.name)
8442                .unwrap_or_else(|_| entry.kind.default_value());
8443            stream.write(&value)?;
8444        }
8445        Ok(())
8446    }
8447}
8448#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8449#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8450pub struct PlayerShieldBlockedEvent {
8451    pub attacker_ent_index: u8,
8452    pub blocker_ent_index: u8,
8453}
8454impl PlayerShieldBlockedEvent {
8455    #[allow(unused_variables)]
8456    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8457        Ok(PlayerShieldBlockedEvent {
8458            attacker_ent_index: read_value::<u8>(
8459                stream,
8460                definition.get_entry("attacker_entindex"),
8461                "attacker_ent_index",
8462            )?,
8463            blocker_ent_index: read_value::<u8>(
8464                stream,
8465                definition.get_entry("blocker_entindex"),
8466                "blocker_ent_index",
8467            )?,
8468        })
8469    }
8470    #[allow(unused_variables)]
8471    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8472        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8473        match field {
8474            "attacker_entindex" => Ok(self.attacker_ent_index.clone().into()),
8475            "blocker_entindex" => Ok(self.blocker_ent_index.clone().into()),
8476            _ => Err(ParseError::MissingGameEventValue {
8477                ty: "PlayerShieldBlocked",
8478                field: field.into(),
8479            }),
8480        }
8481    }
8482    #[allow(unused_variables)]
8483    fn write(
8484        &self,
8485        stream: &mut BitWriteStream<LittleEndian>,
8486        definition: &GameEventDefinition,
8487    ) -> Result<()> {
8488        for entry in &definition.entries {
8489            let value = self
8490                .get_field(&entry.name)
8491                .unwrap_or_else(|_| entry.kind.default_value());
8492            stream.write(&value)?;
8493        }
8494        Ok(())
8495    }
8496}
8497#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8498#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8499pub struct PlayerPinnedEvent {
8500    pub pinned: u8,
8501}
8502impl PlayerPinnedEvent {
8503    #[allow(unused_variables)]
8504    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8505        Ok(PlayerPinnedEvent {
8506            pinned: read_value::<u8>(stream, definition.get_entry("pinned"), "pinned")?,
8507        })
8508    }
8509    #[allow(unused_variables)]
8510    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8511        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8512        match field {
8513            "pinned" => Ok(self.pinned.clone().into()),
8514            _ => Err(ParseError::MissingGameEventValue {
8515                ty: "PlayerPinned",
8516                field: field.into(),
8517            }),
8518        }
8519    }
8520    #[allow(unused_variables)]
8521    fn write(
8522        &self,
8523        stream: &mut BitWriteStream<LittleEndian>,
8524        definition: &GameEventDefinition,
8525    ) -> Result<()> {
8526        for entry in &definition.entries {
8527            let value = self
8528                .get_field(&entry.name)
8529                .unwrap_or_else(|_| entry.kind.default_value());
8530            stream.write(&value)?;
8531        }
8532        Ok(())
8533    }
8534}
8535#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8536#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8537pub struct PlayerHealedByMedicEvent {
8538    pub medic: u8,
8539}
8540impl PlayerHealedByMedicEvent {
8541    #[allow(unused_variables)]
8542    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8543        Ok(PlayerHealedByMedicEvent {
8544            medic: read_value::<u8>(stream, definition.get_entry("medic"), "medic")?,
8545        })
8546    }
8547    #[allow(unused_variables)]
8548    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8549        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8550        match field {
8551            "medic" => Ok(self.medic.clone().into()),
8552            _ => Err(ParseError::MissingGameEventValue {
8553                ty: "PlayerHealedByMedic",
8554                field: field.into(),
8555            }),
8556        }
8557    }
8558    #[allow(unused_variables)]
8559    fn write(
8560        &self,
8561        stream: &mut BitWriteStream<LittleEndian>,
8562        definition: &GameEventDefinition,
8563    ) -> Result<()> {
8564        for entry in &definition.entries {
8565            let value = self
8566                .get_field(&entry.name)
8567                .unwrap_or_else(|_| entry.kind.default_value());
8568            stream.write(&value)?;
8569        }
8570        Ok(())
8571    }
8572}
8573#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8574#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8575pub struct PlayerSappedObjectEvent {
8576    pub user_id: u16,
8577    pub owner_id: u16,
8578    pub object: u8,
8579    pub sapper_id: u16,
8580}
8581impl PlayerSappedObjectEvent {
8582    #[allow(unused_variables)]
8583    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8584        Ok(PlayerSappedObjectEvent {
8585            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
8586            owner_id: read_value::<u16>(stream, definition.get_entry("ownerid"), "owner_id")?,
8587            object: read_value::<u8>(stream, definition.get_entry("object"), "object")?,
8588            sapper_id: read_value::<u16>(stream, definition.get_entry("sapperid"), "sapper_id")?,
8589        })
8590    }
8591    #[allow(unused_variables)]
8592    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8593        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8594        match field {
8595            "userid" => Ok(self.user_id.clone().into()),
8596            "ownerid" => Ok(self.owner_id.clone().into()),
8597            "object" => Ok(self.object.clone().into()),
8598            "sapperid" => Ok(self.sapper_id.clone().into()),
8599            _ => Err(ParseError::MissingGameEventValue {
8600                ty: "PlayerSappedObject",
8601                field: field.into(),
8602            }),
8603        }
8604    }
8605    #[allow(unused_variables)]
8606    fn write(
8607        &self,
8608        stream: &mut BitWriteStream<LittleEndian>,
8609        definition: &GameEventDefinition,
8610    ) -> Result<()> {
8611        for entry in &definition.entries {
8612            let value = self
8613                .get_field(&entry.name)
8614                .unwrap_or_else(|_| entry.kind.default_value());
8615            stream.write(&value)?;
8616        }
8617        Ok(())
8618    }
8619}
8620#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8621#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8622pub struct ItemFoundEvent {
8623    pub player: u8,
8624    pub quality: u8,
8625    pub method: u8,
8626    pub item_def: u32,
8627    pub is_strange: u8,
8628    pub is_unusual: u8,
8629    pub wear: f32,
8630}
8631impl ItemFoundEvent {
8632    #[allow(unused_variables)]
8633    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8634        Ok(ItemFoundEvent {
8635            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
8636            quality: read_value::<u8>(stream, definition.get_entry("quality"), "quality")?,
8637            method: read_value::<u8>(stream, definition.get_entry("method"), "method")?,
8638            item_def: read_value::<u32>(stream, definition.get_entry("itemdef"), "item_def")?,
8639            is_strange: read_value::<u8>(stream, definition.get_entry("isstrange"), "is_strange")?,
8640            is_unusual: read_value::<u8>(stream, definition.get_entry("isunusual"), "is_unusual")?,
8641            wear: read_value::<f32>(stream, definition.get_entry("wear"), "wear")?,
8642        })
8643    }
8644    #[allow(unused_variables)]
8645    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8646        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8647        match field {
8648            "player" => Ok(self.player.clone().into()),
8649            "quality" => Ok(self.quality.clone().into()),
8650            "method" => Ok(self.method.clone().into()),
8651            "itemdef" => Ok(self.item_def.clone().into()),
8652            "isstrange" => Ok(self.is_strange.clone().into()),
8653            "isunusual" => Ok(self.is_unusual.clone().into()),
8654            "wear" => Ok(self.wear.clone().into()),
8655            _ => Err(ParseError::MissingGameEventValue {
8656                ty: "ItemFound",
8657                field: field.into(),
8658            }),
8659        }
8660    }
8661    #[allow(unused_variables)]
8662    fn write(
8663        &self,
8664        stream: &mut BitWriteStream<LittleEndian>,
8665        definition: &GameEventDefinition,
8666    ) -> Result<()> {
8667        for entry in &definition.entries {
8668            let value = self
8669                .get_field(&entry.name)
8670                .unwrap_or_else(|_| entry.kind.default_value());
8671            stream.write(&value)?;
8672        }
8673        Ok(())
8674    }
8675}
8676#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8677#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8678pub struct ShowAnnotationEvent {
8679    pub world_pos_x: f32,
8680    pub world_pos_y: f32,
8681    pub world_pos_z: f32,
8682    pub world_normal_x: f32,
8683    pub world_normal_y: f32,
8684    pub world_normal_z: f32,
8685    pub id: u32,
8686    pub text: MaybeUtf8String,
8687    pub lifetime: f32,
8688    pub visibility_bit_field: u32,
8689    pub follow_ent_index: u32,
8690    pub show_distance: bool,
8691    pub play_sound: MaybeUtf8String,
8692    pub show_effect: bool,
8693}
8694impl ShowAnnotationEvent {
8695    #[allow(unused_variables)]
8696    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8697        Ok(ShowAnnotationEvent {
8698            world_pos_x: read_value::<f32>(
8699                stream,
8700                definition.get_entry("worldPosX"),
8701                "world_pos_x",
8702            )?,
8703            world_pos_y: read_value::<f32>(
8704                stream,
8705                definition.get_entry("worldPosY"),
8706                "world_pos_y",
8707            )?,
8708            world_pos_z: read_value::<f32>(
8709                stream,
8710                definition.get_entry("worldPosZ"),
8711                "world_pos_z",
8712            )?,
8713            world_normal_x: read_value::<f32>(
8714                stream,
8715                definition.get_entry("worldNormalX"),
8716                "world_normal_x",
8717            )?,
8718            world_normal_y: read_value::<f32>(
8719                stream,
8720                definition.get_entry("worldNormalY"),
8721                "world_normal_y",
8722            )?,
8723            world_normal_z: read_value::<f32>(
8724                stream,
8725                definition.get_entry("worldNormalZ"),
8726                "world_normal_z",
8727            )?,
8728            id: read_value::<u32>(stream, definition.get_entry("id"), "id")?,
8729            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
8730            lifetime: read_value::<f32>(stream, definition.get_entry("lifetime"), "lifetime")?,
8731            visibility_bit_field: read_value::<u32>(
8732                stream,
8733                definition.get_entry("visibilityBitfield"),
8734                "visibility_bit_field",
8735            )?,
8736            follow_ent_index: read_value::<u32>(
8737                stream,
8738                definition.get_entry("follow_entindex"),
8739                "follow_ent_index",
8740            )?,
8741            show_distance: read_value::<bool>(
8742                stream,
8743                definition.get_entry("show_distance"),
8744                "show_distance",
8745            )?,
8746            play_sound: read_value::<MaybeUtf8String>(
8747                stream,
8748                definition.get_entry("play_sound"),
8749                "play_sound",
8750            )?,
8751            show_effect: read_value::<bool>(
8752                stream,
8753                definition.get_entry("show_effect"),
8754                "show_effect",
8755            )?,
8756        })
8757    }
8758    #[allow(unused_variables)]
8759    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8760        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8761        match field {
8762            "worldPosX" => Ok(self.world_pos_x.clone().into()),
8763            "worldPosY" => Ok(self.world_pos_y.clone().into()),
8764            "worldPosZ" => Ok(self.world_pos_z.clone().into()),
8765            "worldNormalX" => Ok(self.world_normal_x.clone().into()),
8766            "worldNormalY" => Ok(self.world_normal_y.clone().into()),
8767            "worldNormalZ" => Ok(self.world_normal_z.clone().into()),
8768            "id" => Ok(self.id.clone().into()),
8769            "text" => Ok(self.text.clone().into()),
8770            "lifetime" => Ok(self.lifetime.clone().into()),
8771            "visibilityBitfield" => Ok(self.visibility_bit_field.clone().into()),
8772            "follow_entindex" => Ok(self.follow_ent_index.clone().into()),
8773            "show_distance" => Ok(self.show_distance.clone().into()),
8774            "play_sound" => Ok(self.play_sound.clone().into()),
8775            "show_effect" => Ok(self.show_effect.clone().into()),
8776            _ => Err(ParseError::MissingGameEventValue {
8777                ty: "ShowAnnotation",
8778                field: field.into(),
8779            }),
8780        }
8781    }
8782    #[allow(unused_variables)]
8783    fn write(
8784        &self,
8785        stream: &mut BitWriteStream<LittleEndian>,
8786        definition: &GameEventDefinition,
8787    ) -> Result<()> {
8788        for entry in &definition.entries {
8789            let value = self
8790                .get_field(&entry.name)
8791                .unwrap_or_else(|_| entry.kind.default_value());
8792            stream.write(&value)?;
8793        }
8794        Ok(())
8795    }
8796}
8797#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8798#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8799pub struct HideAnnotationEvent {
8800    pub id: u32,
8801}
8802impl HideAnnotationEvent {
8803    #[allow(unused_variables)]
8804    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8805        Ok(HideAnnotationEvent {
8806            id: read_value::<u32>(stream, definition.get_entry("id"), "id")?,
8807        })
8808    }
8809    #[allow(unused_variables)]
8810    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8811        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8812        match field {
8813            "id" => Ok(self.id.clone().into()),
8814            _ => Err(ParseError::MissingGameEventValue {
8815                ty: "HideAnnotation",
8816                field: field.into(),
8817            }),
8818        }
8819    }
8820    #[allow(unused_variables)]
8821    fn write(
8822        &self,
8823        stream: &mut BitWriteStream<LittleEndian>,
8824        definition: &GameEventDefinition,
8825    ) -> Result<()> {
8826        for entry in &definition.entries {
8827            let value = self
8828                .get_field(&entry.name)
8829                .unwrap_or_else(|_| entry.kind.default_value());
8830            stream.write(&value)?;
8831        }
8832        Ok(())
8833    }
8834}
8835#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8836#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8837pub struct PostInventoryApplicationEvent {
8838    pub user_id: u16,
8839}
8840impl PostInventoryApplicationEvent {
8841    #[allow(unused_variables)]
8842    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8843        Ok(PostInventoryApplicationEvent {
8844            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
8845        })
8846    }
8847    #[allow(unused_variables)]
8848    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8849        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8850        match field {
8851            "userid" => Ok(self.user_id.clone().into()),
8852            _ => Err(ParseError::MissingGameEventValue {
8853                ty: "PostInventoryApplication",
8854                field: field.into(),
8855            }),
8856        }
8857    }
8858    #[allow(unused_variables)]
8859    fn write(
8860        &self,
8861        stream: &mut BitWriteStream<LittleEndian>,
8862        definition: &GameEventDefinition,
8863    ) -> Result<()> {
8864        for entry in &definition.entries {
8865            let value = self
8866                .get_field(&entry.name)
8867                .unwrap_or_else(|_| entry.kind.default_value());
8868            stream.write(&value)?;
8869        }
8870        Ok(())
8871    }
8872}
8873#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8874#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8875pub struct ControlPointUnlockUpdatedEvent {
8876    pub index: u16,
8877    pub time: f32,
8878}
8879impl ControlPointUnlockUpdatedEvent {
8880    #[allow(unused_variables)]
8881    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8882        Ok(ControlPointUnlockUpdatedEvent {
8883            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
8884            time: read_value::<f32>(stream, definition.get_entry("time"), "time")?,
8885        })
8886    }
8887    #[allow(unused_variables)]
8888    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8889        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8890        match field {
8891            "index" => Ok(self.index.clone().into()),
8892            "time" => Ok(self.time.clone().into()),
8893            _ => Err(ParseError::MissingGameEventValue {
8894                ty: "ControlPointUnlockUpdated",
8895                field: field.into(),
8896            }),
8897        }
8898    }
8899    #[allow(unused_variables)]
8900    fn write(
8901        &self,
8902        stream: &mut BitWriteStream<LittleEndian>,
8903        definition: &GameEventDefinition,
8904    ) -> Result<()> {
8905        for entry in &definition.entries {
8906            let value = self
8907                .get_field(&entry.name)
8908                .unwrap_or_else(|_| entry.kind.default_value());
8909            stream.write(&value)?;
8910        }
8911        Ok(())
8912    }
8913}
8914#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8915#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8916pub struct DeployBuffBannerEvent {
8917    pub buff_type: u8,
8918    pub buff_owner: u16,
8919}
8920impl DeployBuffBannerEvent {
8921    #[allow(unused_variables)]
8922    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8923        Ok(DeployBuffBannerEvent {
8924            buff_type: read_value::<u8>(stream, definition.get_entry("buff_type"), "buff_type")?,
8925            buff_owner: read_value::<u16>(
8926                stream,
8927                definition.get_entry("buff_owner"),
8928                "buff_owner",
8929            )?,
8930        })
8931    }
8932    #[allow(unused_variables)]
8933    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8934        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8935        match field {
8936            "buff_type" => Ok(self.buff_type.clone().into()),
8937            "buff_owner" => Ok(self.buff_owner.clone().into()),
8938            _ => Err(ParseError::MissingGameEventValue {
8939                ty: "DeployBuffBanner",
8940                field: field.into(),
8941            }),
8942        }
8943    }
8944    #[allow(unused_variables)]
8945    fn write(
8946        &self,
8947        stream: &mut BitWriteStream<LittleEndian>,
8948        definition: &GameEventDefinition,
8949    ) -> Result<()> {
8950        for entry in &definition.entries {
8951            let value = self
8952                .get_field(&entry.name)
8953                .unwrap_or_else(|_| entry.kind.default_value());
8954            stream.write(&value)?;
8955        }
8956        Ok(())
8957    }
8958}
8959#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8960#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
8961pub struct PlayerBuffEvent {
8962    pub user_id: u16,
8963    pub buff_owner: u16,
8964    pub buff_type: u8,
8965}
8966impl PlayerBuffEvent {
8967    #[allow(unused_variables)]
8968    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
8969        Ok(PlayerBuffEvent {
8970            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
8971            buff_owner: read_value::<u16>(
8972                stream,
8973                definition.get_entry("buff_owner"),
8974                "buff_owner",
8975            )?,
8976            buff_type: read_value::<u8>(stream, definition.get_entry("buff_type"), "buff_type")?,
8977        })
8978    }
8979    #[allow(unused_variables)]
8980    fn get_field(&self, field: &str) -> Result<GameEventValue> {
8981        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
8982        match field {
8983            "userid" => Ok(self.user_id.clone().into()),
8984            "buff_owner" => Ok(self.buff_owner.clone().into()),
8985            "buff_type" => Ok(self.buff_type.clone().into()),
8986            _ => Err(ParseError::MissingGameEventValue {
8987                ty: "PlayerBuff",
8988                field: field.into(),
8989            }),
8990        }
8991    }
8992    #[allow(unused_variables)]
8993    fn write(
8994        &self,
8995        stream: &mut BitWriteStream<LittleEndian>,
8996        definition: &GameEventDefinition,
8997    ) -> Result<()> {
8998        for entry in &definition.entries {
8999            let value = self
9000                .get_field(&entry.name)
9001                .unwrap_or_else(|_| entry.kind.default_value());
9002            stream.write(&value)?;
9003        }
9004        Ok(())
9005    }
9006}
9007#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9008#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9009pub struct MedicDeathEvent {
9010    pub user_id: u16,
9011    pub attacker: u16,
9012    pub healing: u16,
9013    pub charged: bool,
9014}
9015impl MedicDeathEvent {
9016    #[allow(unused_variables)]
9017    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9018        Ok(MedicDeathEvent {
9019            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9020            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
9021            healing: read_value::<u16>(stream, definition.get_entry("healing"), "healing")?,
9022            charged: read_value::<bool>(stream, definition.get_entry("charged"), "charged")?,
9023        })
9024    }
9025    #[allow(unused_variables)]
9026    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9027        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9028        match field {
9029            "userid" => Ok(self.user_id.clone().into()),
9030            "attacker" => Ok(self.attacker.clone().into()),
9031            "healing" => Ok(self.healing.clone().into()),
9032            "charged" => Ok(self.charged.clone().into()),
9033            _ => Err(ParseError::MissingGameEventValue {
9034                ty: "MedicDeath",
9035                field: field.into(),
9036            }),
9037        }
9038    }
9039    #[allow(unused_variables)]
9040    fn write(
9041        &self,
9042        stream: &mut BitWriteStream<LittleEndian>,
9043        definition: &GameEventDefinition,
9044    ) -> Result<()> {
9045        for entry in &definition.entries {
9046            let value = self
9047                .get_field(&entry.name)
9048                .unwrap_or_else(|_| entry.kind.default_value());
9049            stream.write(&value)?;
9050        }
9051        Ok(())
9052    }
9053}
9054#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9055#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9056pub struct OvertimeNagEvent {}
9057impl OvertimeNagEvent {
9058    #[allow(unused_variables)]
9059    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9060        Ok(OvertimeNagEvent {})
9061    }
9062    #[allow(unused_variables)]
9063    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9064        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9065        match field {
9066            _ => Err(ParseError::MissingGameEventValue {
9067                ty: "OvertimeNag",
9068                field: field.into(),
9069            }),
9070        }
9071    }
9072    #[allow(unused_variables)]
9073    fn write(
9074        &self,
9075        stream: &mut BitWriteStream<LittleEndian>,
9076        definition: &GameEventDefinition,
9077    ) -> Result<()> {
9078        for entry in &definition.entries {
9079            let value = self
9080                .get_field(&entry.name)
9081                .unwrap_or_else(|_| entry.kind.default_value());
9082            stream.write(&value)?;
9083        }
9084        Ok(())
9085    }
9086}
9087#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9088#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9089pub struct TeamsChangedEvent {}
9090impl TeamsChangedEvent {
9091    #[allow(unused_variables)]
9092    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9093        Ok(TeamsChangedEvent {})
9094    }
9095    #[allow(unused_variables)]
9096    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9097        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9098        match field {
9099            _ => Err(ParseError::MissingGameEventValue {
9100                ty: "TeamsChanged",
9101                field: field.into(),
9102            }),
9103        }
9104    }
9105    #[allow(unused_variables)]
9106    fn write(
9107        &self,
9108        stream: &mut BitWriteStream<LittleEndian>,
9109        definition: &GameEventDefinition,
9110    ) -> Result<()> {
9111        for entry in &definition.entries {
9112            let value = self
9113                .get_field(&entry.name)
9114                .unwrap_or_else(|_| entry.kind.default_value());
9115            stream.write(&value)?;
9116        }
9117        Ok(())
9118    }
9119}
9120#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9121#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9122pub struct HalloweenPumpkinGrabEvent {
9123    pub user_id: u16,
9124}
9125impl HalloweenPumpkinGrabEvent {
9126    #[allow(unused_variables)]
9127    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9128        Ok(HalloweenPumpkinGrabEvent {
9129            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9130        })
9131    }
9132    #[allow(unused_variables)]
9133    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9134        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9135        match field {
9136            "userid" => Ok(self.user_id.clone().into()),
9137            _ => Err(ParseError::MissingGameEventValue {
9138                ty: "HalloweenPumpkinGrab",
9139                field: field.into(),
9140            }),
9141        }
9142    }
9143    #[allow(unused_variables)]
9144    fn write(
9145        &self,
9146        stream: &mut BitWriteStream<LittleEndian>,
9147        definition: &GameEventDefinition,
9148    ) -> Result<()> {
9149        for entry in &definition.entries {
9150            let value = self
9151                .get_field(&entry.name)
9152                .unwrap_or_else(|_| entry.kind.default_value());
9153            stream.write(&value)?;
9154        }
9155        Ok(())
9156    }
9157}
9158#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9159#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9160pub struct RocketJumpEvent {
9161    pub user_id: u16,
9162    pub play_sound: bool,
9163}
9164impl RocketJumpEvent {
9165    #[allow(unused_variables)]
9166    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9167        Ok(RocketJumpEvent {
9168            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9169            play_sound: read_value::<bool>(
9170                stream,
9171                definition.get_entry("playsound"),
9172                "play_sound",
9173            )?,
9174        })
9175    }
9176    #[allow(unused_variables)]
9177    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9178        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9179        match field {
9180            "userid" => Ok(self.user_id.clone().into()),
9181            "playsound" => Ok(self.play_sound.clone().into()),
9182            _ => Err(ParseError::MissingGameEventValue {
9183                ty: "RocketJump",
9184                field: field.into(),
9185            }),
9186        }
9187    }
9188    #[allow(unused_variables)]
9189    fn write(
9190        &self,
9191        stream: &mut BitWriteStream<LittleEndian>,
9192        definition: &GameEventDefinition,
9193    ) -> Result<()> {
9194        for entry in &definition.entries {
9195            let value = self
9196                .get_field(&entry.name)
9197                .unwrap_or_else(|_| entry.kind.default_value());
9198            stream.write(&value)?;
9199        }
9200        Ok(())
9201    }
9202}
9203#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9204#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9205pub struct RocketJumpLandedEvent {
9206    pub user_id: u16,
9207}
9208impl RocketJumpLandedEvent {
9209    #[allow(unused_variables)]
9210    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9211        Ok(RocketJumpLandedEvent {
9212            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9213        })
9214    }
9215    #[allow(unused_variables)]
9216    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9217        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9218        match field {
9219            "userid" => Ok(self.user_id.clone().into()),
9220            _ => Err(ParseError::MissingGameEventValue {
9221                ty: "RocketJumpLanded",
9222                field: field.into(),
9223            }),
9224        }
9225    }
9226    #[allow(unused_variables)]
9227    fn write(
9228        &self,
9229        stream: &mut BitWriteStream<LittleEndian>,
9230        definition: &GameEventDefinition,
9231    ) -> Result<()> {
9232        for entry in &definition.entries {
9233            let value = self
9234                .get_field(&entry.name)
9235                .unwrap_or_else(|_| entry.kind.default_value());
9236            stream.write(&value)?;
9237        }
9238        Ok(())
9239    }
9240}
9241#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9242#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9243pub struct StickyJumpEvent {
9244    pub user_id: u16,
9245    pub play_sound: bool,
9246}
9247impl StickyJumpEvent {
9248    #[allow(unused_variables)]
9249    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9250        Ok(StickyJumpEvent {
9251            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9252            play_sound: read_value::<bool>(
9253                stream,
9254                definition.get_entry("playsound"),
9255                "play_sound",
9256            )?,
9257        })
9258    }
9259    #[allow(unused_variables)]
9260    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9261        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9262        match field {
9263            "userid" => Ok(self.user_id.clone().into()),
9264            "playsound" => Ok(self.play_sound.clone().into()),
9265            _ => Err(ParseError::MissingGameEventValue {
9266                ty: "StickyJump",
9267                field: field.into(),
9268            }),
9269        }
9270    }
9271    #[allow(unused_variables)]
9272    fn write(
9273        &self,
9274        stream: &mut BitWriteStream<LittleEndian>,
9275        definition: &GameEventDefinition,
9276    ) -> Result<()> {
9277        for entry in &definition.entries {
9278            let value = self
9279                .get_field(&entry.name)
9280                .unwrap_or_else(|_| entry.kind.default_value());
9281            stream.write(&value)?;
9282        }
9283        Ok(())
9284    }
9285}
9286#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9287#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9288pub struct StickyJumpLandedEvent {
9289    pub user_id: u16,
9290}
9291impl StickyJumpLandedEvent {
9292    #[allow(unused_variables)]
9293    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9294        Ok(StickyJumpLandedEvent {
9295            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9296        })
9297    }
9298    #[allow(unused_variables)]
9299    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9300        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9301        match field {
9302            "userid" => Ok(self.user_id.clone().into()),
9303            _ => Err(ParseError::MissingGameEventValue {
9304                ty: "StickyJumpLanded",
9305                field: field.into(),
9306            }),
9307        }
9308    }
9309    #[allow(unused_variables)]
9310    fn write(
9311        &self,
9312        stream: &mut BitWriteStream<LittleEndian>,
9313        definition: &GameEventDefinition,
9314    ) -> Result<()> {
9315        for entry in &definition.entries {
9316            let value = self
9317                .get_field(&entry.name)
9318                .unwrap_or_else(|_| entry.kind.default_value());
9319            stream.write(&value)?;
9320        }
9321        Ok(())
9322    }
9323}
9324#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9325#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9326pub struct RocketPackLaunchEvent {
9327    pub user_id: u16,
9328    pub play_sound: bool,
9329}
9330impl RocketPackLaunchEvent {
9331    #[allow(unused_variables)]
9332    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9333        Ok(RocketPackLaunchEvent {
9334            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9335            play_sound: read_value::<bool>(
9336                stream,
9337                definition.get_entry("playsound"),
9338                "play_sound",
9339            )?,
9340        })
9341    }
9342    #[allow(unused_variables)]
9343    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9344        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9345        match field {
9346            "userid" => Ok(self.user_id.clone().into()),
9347            "playsound" => Ok(self.play_sound.clone().into()),
9348            _ => Err(ParseError::MissingGameEventValue {
9349                ty: "RocketPackLaunch",
9350                field: field.into(),
9351            }),
9352        }
9353    }
9354    #[allow(unused_variables)]
9355    fn write(
9356        &self,
9357        stream: &mut BitWriteStream<LittleEndian>,
9358        definition: &GameEventDefinition,
9359    ) -> Result<()> {
9360        for entry in &definition.entries {
9361            let value = self
9362                .get_field(&entry.name)
9363                .unwrap_or_else(|_| entry.kind.default_value());
9364            stream.write(&value)?;
9365        }
9366        Ok(())
9367    }
9368}
9369#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9370#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9371pub struct RocketPackLandedEvent {
9372    pub user_id: u16,
9373}
9374impl RocketPackLandedEvent {
9375    #[allow(unused_variables)]
9376    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9377        Ok(RocketPackLandedEvent {
9378            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9379        })
9380    }
9381    #[allow(unused_variables)]
9382    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9383        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9384        match field {
9385            "userid" => Ok(self.user_id.clone().into()),
9386            _ => Err(ParseError::MissingGameEventValue {
9387                ty: "RocketPackLanded",
9388                field: field.into(),
9389            }),
9390        }
9391    }
9392    #[allow(unused_variables)]
9393    fn write(
9394        &self,
9395        stream: &mut BitWriteStream<LittleEndian>,
9396        definition: &GameEventDefinition,
9397    ) -> Result<()> {
9398        for entry in &definition.entries {
9399            let value = self
9400                .get_field(&entry.name)
9401                .unwrap_or_else(|_| entry.kind.default_value());
9402            stream.write(&value)?;
9403        }
9404        Ok(())
9405    }
9406}
9407#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9408#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9409pub struct MedicDefendedEvent {
9410    pub user_id: u16,
9411    pub medic: u16,
9412}
9413impl MedicDefendedEvent {
9414    #[allow(unused_variables)]
9415    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9416        Ok(MedicDefendedEvent {
9417            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9418            medic: read_value::<u16>(stream, definition.get_entry("medic"), "medic")?,
9419        })
9420    }
9421    #[allow(unused_variables)]
9422    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9423        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9424        match field {
9425            "userid" => Ok(self.user_id.clone().into()),
9426            "medic" => Ok(self.medic.clone().into()),
9427            _ => Err(ParseError::MissingGameEventValue {
9428                ty: "MedicDefended",
9429                field: field.into(),
9430            }),
9431        }
9432    }
9433    #[allow(unused_variables)]
9434    fn write(
9435        &self,
9436        stream: &mut BitWriteStream<LittleEndian>,
9437        definition: &GameEventDefinition,
9438    ) -> Result<()> {
9439        for entry in &definition.entries {
9440            let value = self
9441                .get_field(&entry.name)
9442                .unwrap_or_else(|_| entry.kind.default_value());
9443            stream.write(&value)?;
9444        }
9445        Ok(())
9446    }
9447}
9448#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9449#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9450pub struct LocalPlayerHealedEvent {
9451    pub amount: u16,
9452}
9453impl LocalPlayerHealedEvent {
9454    #[allow(unused_variables)]
9455    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9456        Ok(LocalPlayerHealedEvent {
9457            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
9458        })
9459    }
9460    #[allow(unused_variables)]
9461    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9462        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9463        match field {
9464            "amount" => Ok(self.amount.clone().into()),
9465            _ => Err(ParseError::MissingGameEventValue {
9466                ty: "LocalPlayerHealed",
9467                field: field.into(),
9468            }),
9469        }
9470    }
9471    #[allow(unused_variables)]
9472    fn write(
9473        &self,
9474        stream: &mut BitWriteStream<LittleEndian>,
9475        definition: &GameEventDefinition,
9476    ) -> Result<()> {
9477        for entry in &definition.entries {
9478            let value = self
9479                .get_field(&entry.name)
9480                .unwrap_or_else(|_| entry.kind.default_value());
9481            stream.write(&value)?;
9482        }
9483        Ok(())
9484    }
9485}
9486#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9487#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9488pub struct PlayerDestroyedPipeBombEvent {
9489    pub user_id: u16,
9490}
9491impl PlayerDestroyedPipeBombEvent {
9492    #[allow(unused_variables)]
9493    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9494        Ok(PlayerDestroyedPipeBombEvent {
9495            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9496        })
9497    }
9498    #[allow(unused_variables)]
9499    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9500        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9501        match field {
9502            "userid" => Ok(self.user_id.clone().into()),
9503            _ => Err(ParseError::MissingGameEventValue {
9504                ty: "PlayerDestroyedPipeBomb",
9505                field: field.into(),
9506            }),
9507        }
9508    }
9509    #[allow(unused_variables)]
9510    fn write(
9511        &self,
9512        stream: &mut BitWriteStream<LittleEndian>,
9513        definition: &GameEventDefinition,
9514    ) -> Result<()> {
9515        for entry in &definition.entries {
9516            let value = self
9517                .get_field(&entry.name)
9518                .unwrap_or_else(|_| entry.kind.default_value());
9519            stream.write(&value)?;
9520        }
9521        Ok(())
9522    }
9523}
9524#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9525#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9526pub struct ObjectDeflectedEvent {
9527    pub user_id: u16,
9528    pub owner_id: u16,
9529    pub weapon_id: u16,
9530    pub object_ent_index: u16,
9531}
9532impl ObjectDeflectedEvent {
9533    #[allow(unused_variables)]
9534    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9535        Ok(ObjectDeflectedEvent {
9536            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
9537            owner_id: read_value::<u16>(stream, definition.get_entry("ownerid"), "owner_id")?,
9538            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
9539            object_ent_index: read_value::<u16>(
9540                stream,
9541                definition.get_entry("object_entindex"),
9542                "object_ent_index",
9543            )?,
9544        })
9545    }
9546    #[allow(unused_variables)]
9547    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9548        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9549        match field {
9550            "userid" => Ok(self.user_id.clone().into()),
9551            "ownerid" => Ok(self.owner_id.clone().into()),
9552            "weaponid" => Ok(self.weapon_id.clone().into()),
9553            "object_entindex" => Ok(self.object_ent_index.clone().into()),
9554            _ => Err(ParseError::MissingGameEventValue {
9555                ty: "ObjectDeflected",
9556                field: field.into(),
9557            }),
9558        }
9559    }
9560    #[allow(unused_variables)]
9561    fn write(
9562        &self,
9563        stream: &mut BitWriteStream<LittleEndian>,
9564        definition: &GameEventDefinition,
9565    ) -> Result<()> {
9566        for entry in &definition.entries {
9567            let value = self
9568                .get_field(&entry.name)
9569                .unwrap_or_else(|_| entry.kind.default_value());
9570            stream.write(&value)?;
9571        }
9572        Ok(())
9573    }
9574}
9575#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9576#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9577pub struct PlayerMvpEvent {
9578    pub player: u16,
9579}
9580impl PlayerMvpEvent {
9581    #[allow(unused_variables)]
9582    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9583        Ok(PlayerMvpEvent {
9584            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
9585        })
9586    }
9587    #[allow(unused_variables)]
9588    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9589        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9590        match field {
9591            "player" => Ok(self.player.clone().into()),
9592            _ => Err(ParseError::MissingGameEventValue {
9593                ty: "PlayerMvp",
9594                field: field.into(),
9595            }),
9596        }
9597    }
9598    #[allow(unused_variables)]
9599    fn write(
9600        &self,
9601        stream: &mut BitWriteStream<LittleEndian>,
9602        definition: &GameEventDefinition,
9603    ) -> Result<()> {
9604        for entry in &definition.entries {
9605            let value = self
9606                .get_field(&entry.name)
9607                .unwrap_or_else(|_| entry.kind.default_value());
9608            stream.write(&value)?;
9609        }
9610        Ok(())
9611    }
9612}
9613#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9614#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9615pub struct RaidSpawnMobEvent {}
9616impl RaidSpawnMobEvent {
9617    #[allow(unused_variables)]
9618    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9619        Ok(RaidSpawnMobEvent {})
9620    }
9621    #[allow(unused_variables)]
9622    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9623        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9624        match field {
9625            _ => Err(ParseError::MissingGameEventValue {
9626                ty: "RaidSpawnMob",
9627                field: field.into(),
9628            }),
9629        }
9630    }
9631    #[allow(unused_variables)]
9632    fn write(
9633        &self,
9634        stream: &mut BitWriteStream<LittleEndian>,
9635        definition: &GameEventDefinition,
9636    ) -> Result<()> {
9637        for entry in &definition.entries {
9638            let value = self
9639                .get_field(&entry.name)
9640                .unwrap_or_else(|_| entry.kind.default_value());
9641            stream.write(&value)?;
9642        }
9643        Ok(())
9644    }
9645}
9646#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9647#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9648pub struct RaidSpawnSquadEvent {}
9649impl RaidSpawnSquadEvent {
9650    #[allow(unused_variables)]
9651    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9652        Ok(RaidSpawnSquadEvent {})
9653    }
9654    #[allow(unused_variables)]
9655    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9656        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9657        match field {
9658            _ => Err(ParseError::MissingGameEventValue {
9659                ty: "RaidSpawnSquad",
9660                field: field.into(),
9661            }),
9662        }
9663    }
9664    #[allow(unused_variables)]
9665    fn write(
9666        &self,
9667        stream: &mut BitWriteStream<LittleEndian>,
9668        definition: &GameEventDefinition,
9669    ) -> Result<()> {
9670        for entry in &definition.entries {
9671            let value = self
9672                .get_field(&entry.name)
9673                .unwrap_or_else(|_| entry.kind.default_value());
9674            stream.write(&value)?;
9675        }
9676        Ok(())
9677    }
9678}
9679#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9680#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9681pub struct NavBlockedEvent {
9682    pub area: u32,
9683    pub blocked: bool,
9684}
9685impl NavBlockedEvent {
9686    #[allow(unused_variables)]
9687    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9688        Ok(NavBlockedEvent {
9689            area: read_value::<u32>(stream, definition.get_entry("area"), "area")?,
9690            blocked: read_value::<bool>(stream, definition.get_entry("blocked"), "blocked")?,
9691        })
9692    }
9693    #[allow(unused_variables)]
9694    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9695        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9696        match field {
9697            "area" => Ok(self.area.clone().into()),
9698            "blocked" => Ok(self.blocked.clone().into()),
9699            _ => Err(ParseError::MissingGameEventValue {
9700                ty: "NavBlocked",
9701                field: field.into(),
9702            }),
9703        }
9704    }
9705    #[allow(unused_variables)]
9706    fn write(
9707        &self,
9708        stream: &mut BitWriteStream<LittleEndian>,
9709        definition: &GameEventDefinition,
9710    ) -> Result<()> {
9711        for entry in &definition.entries {
9712            let value = self
9713                .get_field(&entry.name)
9714                .unwrap_or_else(|_| entry.kind.default_value());
9715            stream.write(&value)?;
9716        }
9717        Ok(())
9718    }
9719}
9720#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9721#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9722pub struct PathTrackPassedEvent {
9723    pub index: u16,
9724}
9725impl PathTrackPassedEvent {
9726    #[allow(unused_variables)]
9727    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9728        Ok(PathTrackPassedEvent {
9729            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
9730        })
9731    }
9732    #[allow(unused_variables)]
9733    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9734        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9735        match field {
9736            "index" => Ok(self.index.clone().into()),
9737            _ => Err(ParseError::MissingGameEventValue {
9738                ty: "PathTrackPassed",
9739                field: field.into(),
9740            }),
9741        }
9742    }
9743    #[allow(unused_variables)]
9744    fn write(
9745        &self,
9746        stream: &mut BitWriteStream<LittleEndian>,
9747        definition: &GameEventDefinition,
9748    ) -> Result<()> {
9749        for entry in &definition.entries {
9750            let value = self
9751                .get_field(&entry.name)
9752                .unwrap_or_else(|_| entry.kind.default_value());
9753            stream.write(&value)?;
9754        }
9755        Ok(())
9756    }
9757}
9758#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9759#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9760pub struct NumCappersChangedEvent {
9761    pub index: u16,
9762    pub count: u8,
9763}
9764impl NumCappersChangedEvent {
9765    #[allow(unused_variables)]
9766    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9767        Ok(NumCappersChangedEvent {
9768            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
9769            count: read_value::<u8>(stream, definition.get_entry("count"), "count")?,
9770        })
9771    }
9772    #[allow(unused_variables)]
9773    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9774        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9775        match field {
9776            "index" => Ok(self.index.clone().into()),
9777            "count" => Ok(self.count.clone().into()),
9778            _ => Err(ParseError::MissingGameEventValue {
9779                ty: "NumCappersChanged",
9780                field: field.into(),
9781            }),
9782        }
9783    }
9784    #[allow(unused_variables)]
9785    fn write(
9786        &self,
9787        stream: &mut BitWriteStream<LittleEndian>,
9788        definition: &GameEventDefinition,
9789    ) -> Result<()> {
9790        for entry in &definition.entries {
9791            let value = self
9792                .get_field(&entry.name)
9793                .unwrap_or_else(|_| entry.kind.default_value());
9794            stream.write(&value)?;
9795        }
9796        Ok(())
9797    }
9798}
9799#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9800#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9801pub struct PlayerRegenerateEvent {}
9802impl PlayerRegenerateEvent {
9803    #[allow(unused_variables)]
9804    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9805        Ok(PlayerRegenerateEvent {})
9806    }
9807    #[allow(unused_variables)]
9808    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9809        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9810        match field {
9811            _ => Err(ParseError::MissingGameEventValue {
9812                ty: "PlayerRegenerate",
9813                field: field.into(),
9814            }),
9815        }
9816    }
9817    #[allow(unused_variables)]
9818    fn write(
9819        &self,
9820        stream: &mut BitWriteStream<LittleEndian>,
9821        definition: &GameEventDefinition,
9822    ) -> Result<()> {
9823        for entry in &definition.entries {
9824            let value = self
9825                .get_field(&entry.name)
9826                .unwrap_or_else(|_| entry.kind.default_value());
9827            stream.write(&value)?;
9828        }
9829        Ok(())
9830    }
9831}
9832#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9833#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9834pub struct UpdateStatusItemEvent {
9835    pub index: u8,
9836    pub object: u8,
9837}
9838impl UpdateStatusItemEvent {
9839    #[allow(unused_variables)]
9840    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9841        Ok(UpdateStatusItemEvent {
9842            index: read_value::<u8>(stream, definition.get_entry("index"), "index")?,
9843            object: read_value::<u8>(stream, definition.get_entry("object"), "object")?,
9844        })
9845    }
9846    #[allow(unused_variables)]
9847    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9848        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9849        match field {
9850            "index" => Ok(self.index.clone().into()),
9851            "object" => Ok(self.object.clone().into()),
9852            _ => Err(ParseError::MissingGameEventValue {
9853                ty: "UpdateStatusItem",
9854                field: field.into(),
9855            }),
9856        }
9857    }
9858    #[allow(unused_variables)]
9859    fn write(
9860        &self,
9861        stream: &mut BitWriteStream<LittleEndian>,
9862        definition: &GameEventDefinition,
9863    ) -> Result<()> {
9864        for entry in &definition.entries {
9865            let value = self
9866                .get_field(&entry.name)
9867                .unwrap_or_else(|_| entry.kind.default_value());
9868            stream.write(&value)?;
9869        }
9870        Ok(())
9871    }
9872}
9873#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9874#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9875pub struct StatsResetRoundEvent {}
9876impl StatsResetRoundEvent {
9877    #[allow(unused_variables)]
9878    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9879        Ok(StatsResetRoundEvent {})
9880    }
9881    #[allow(unused_variables)]
9882    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9883        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9884        match field {
9885            _ => Err(ParseError::MissingGameEventValue {
9886                ty: "StatsResetRound",
9887                field: field.into(),
9888            }),
9889        }
9890    }
9891    #[allow(unused_variables)]
9892    fn write(
9893        &self,
9894        stream: &mut BitWriteStream<LittleEndian>,
9895        definition: &GameEventDefinition,
9896    ) -> Result<()> {
9897        for entry in &definition.entries {
9898            let value = self
9899                .get_field(&entry.name)
9900                .unwrap_or_else(|_| entry.kind.default_value());
9901            stream.write(&value)?;
9902        }
9903        Ok(())
9904    }
9905}
9906#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9907#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9908pub struct ScoreStatsAccumulatedUpdateEvent {}
9909impl ScoreStatsAccumulatedUpdateEvent {
9910    #[allow(unused_variables)]
9911    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9912        Ok(ScoreStatsAccumulatedUpdateEvent {})
9913    }
9914    #[allow(unused_variables)]
9915    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9916        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9917        match field {
9918            _ => Err(ParseError::MissingGameEventValue {
9919                ty: "ScoreStatsAccumulatedUpdate",
9920                field: field.into(),
9921            }),
9922        }
9923    }
9924    #[allow(unused_variables)]
9925    fn write(
9926        &self,
9927        stream: &mut BitWriteStream<LittleEndian>,
9928        definition: &GameEventDefinition,
9929    ) -> Result<()> {
9930        for entry in &definition.entries {
9931            let value = self
9932                .get_field(&entry.name)
9933                .unwrap_or_else(|_| entry.kind.default_value());
9934            stream.write(&value)?;
9935        }
9936        Ok(())
9937    }
9938}
9939#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9940#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9941pub struct ScoreStatsAccumulatedResetEvent {}
9942impl ScoreStatsAccumulatedResetEvent {
9943    #[allow(unused_variables)]
9944    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9945        Ok(ScoreStatsAccumulatedResetEvent {})
9946    }
9947    #[allow(unused_variables)]
9948    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9949        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9950        match field {
9951            _ => Err(ParseError::MissingGameEventValue {
9952                ty: "ScoreStatsAccumulatedReset",
9953                field: field.into(),
9954            }),
9955        }
9956    }
9957    #[allow(unused_variables)]
9958    fn write(
9959        &self,
9960        stream: &mut BitWriteStream<LittleEndian>,
9961        definition: &GameEventDefinition,
9962    ) -> Result<()> {
9963        for entry in &definition.entries {
9964            let value = self
9965                .get_field(&entry.name)
9966                .unwrap_or_else(|_| entry.kind.default_value());
9967            stream.write(&value)?;
9968        }
9969        Ok(())
9970    }
9971}
9972#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9973#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
9974pub struct AchievementEarnedLocalEvent {
9975    pub achievement: u16,
9976}
9977impl AchievementEarnedLocalEvent {
9978    #[allow(unused_variables)]
9979    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
9980        Ok(AchievementEarnedLocalEvent {
9981            achievement: read_value::<u16>(
9982                stream,
9983                definition.get_entry("achievement"),
9984                "achievement",
9985            )?,
9986        })
9987    }
9988    #[allow(unused_variables)]
9989    fn get_field(&self, field: &str) -> Result<GameEventValue> {
9990        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
9991        match field {
9992            "achievement" => Ok(self.achievement.clone().into()),
9993            _ => Err(ParseError::MissingGameEventValue {
9994                ty: "AchievementEarnedLocal",
9995                field: field.into(),
9996            }),
9997        }
9998    }
9999    #[allow(unused_variables)]
10000    fn write(
10001        &self,
10002        stream: &mut BitWriteStream<LittleEndian>,
10003        definition: &GameEventDefinition,
10004    ) -> Result<()> {
10005        for entry in &definition.entries {
10006            let value = self
10007                .get_field(&entry.name)
10008                .unwrap_or_else(|_| entry.kind.default_value());
10009            stream.write(&value)?;
10010        }
10011        Ok(())
10012    }
10013}
10014#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10015#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10016pub struct PlayerHealedEvent {
10017    pub patient: u16,
10018    pub healer: u16,
10019    pub amount: u16,
10020}
10021impl PlayerHealedEvent {
10022    #[allow(unused_variables)]
10023    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10024        Ok(PlayerHealedEvent {
10025            patient: read_value::<u16>(stream, definition.get_entry("patient"), "patient")?,
10026            healer: read_value::<u16>(stream, definition.get_entry("healer"), "healer")?,
10027            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
10028        })
10029    }
10030    #[allow(unused_variables)]
10031    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10032        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10033        match field {
10034            "patient" => Ok(self.patient.clone().into()),
10035            "healer" => Ok(self.healer.clone().into()),
10036            "amount" => Ok(self.amount.clone().into()),
10037            _ => Err(ParseError::MissingGameEventValue {
10038                ty: "PlayerHealed",
10039                field: field.into(),
10040            }),
10041        }
10042    }
10043    #[allow(unused_variables)]
10044    fn write(
10045        &self,
10046        stream: &mut BitWriteStream<LittleEndian>,
10047        definition: &GameEventDefinition,
10048    ) -> Result<()> {
10049        for entry in &definition.entries {
10050            let value = self
10051                .get_field(&entry.name)
10052                .unwrap_or_else(|_| entry.kind.default_value());
10053            stream.write(&value)?;
10054        }
10055        Ok(())
10056    }
10057}
10058#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10059#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10060pub struct BuildingHealedEvent {
10061    pub building: u16,
10062    pub healer: u16,
10063    pub amount: u16,
10064}
10065impl BuildingHealedEvent {
10066    #[allow(unused_variables)]
10067    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10068        Ok(BuildingHealedEvent {
10069            building: read_value::<u16>(stream, definition.get_entry("building"), "building")?,
10070            healer: read_value::<u16>(stream, definition.get_entry("healer"), "healer")?,
10071            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
10072        })
10073    }
10074    #[allow(unused_variables)]
10075    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10076        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10077        match field {
10078            "building" => Ok(self.building.clone().into()),
10079            "healer" => Ok(self.healer.clone().into()),
10080            "amount" => Ok(self.amount.clone().into()),
10081            _ => Err(ParseError::MissingGameEventValue {
10082                ty: "BuildingHealed",
10083                field: field.into(),
10084            }),
10085        }
10086    }
10087    #[allow(unused_variables)]
10088    fn write(
10089        &self,
10090        stream: &mut BitWriteStream<LittleEndian>,
10091        definition: &GameEventDefinition,
10092    ) -> Result<()> {
10093        for entry in &definition.entries {
10094            let value = self
10095                .get_field(&entry.name)
10096                .unwrap_or_else(|_| entry.kind.default_value());
10097            stream.write(&value)?;
10098        }
10099        Ok(())
10100    }
10101}
10102#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10103#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10104pub struct ItemPickupEvent {
10105    pub user_id: u16,
10106    pub item: MaybeUtf8String,
10107}
10108impl ItemPickupEvent {
10109    #[allow(unused_variables)]
10110    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10111        Ok(ItemPickupEvent {
10112            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
10113            item: read_value::<MaybeUtf8String>(stream, definition.get_entry("item"), "item")?,
10114        })
10115    }
10116    #[allow(unused_variables)]
10117    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10118        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10119        match field {
10120            "userid" => Ok(self.user_id.clone().into()),
10121            "item" => Ok(self.item.clone().into()),
10122            _ => Err(ParseError::MissingGameEventValue {
10123                ty: "ItemPickup",
10124                field: field.into(),
10125            }),
10126        }
10127    }
10128    #[allow(unused_variables)]
10129    fn write(
10130        &self,
10131        stream: &mut BitWriteStream<LittleEndian>,
10132        definition: &GameEventDefinition,
10133    ) -> Result<()> {
10134        for entry in &definition.entries {
10135            let value = self
10136                .get_field(&entry.name)
10137                .unwrap_or_else(|_| entry.kind.default_value());
10138            stream.write(&value)?;
10139        }
10140        Ok(())
10141    }
10142}
10143#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10144#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10145pub struct DuelStatusEvent {
10146    pub killer: u16,
10147    pub score_type: u16,
10148    pub initiator: u16,
10149    pub target: u16,
10150    pub initiator_score: u16,
10151    pub target_score: u16,
10152}
10153impl DuelStatusEvent {
10154    #[allow(unused_variables)]
10155    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10156        Ok(DuelStatusEvent {
10157            killer: read_value::<u16>(stream, definition.get_entry("killer"), "killer")?,
10158            score_type: read_value::<u16>(
10159                stream,
10160                definition.get_entry("score_type"),
10161                "score_type",
10162            )?,
10163            initiator: read_value::<u16>(stream, definition.get_entry("initiator"), "initiator")?,
10164            target: read_value::<u16>(stream, definition.get_entry("target"), "target")?,
10165            initiator_score: read_value::<u16>(
10166                stream,
10167                definition.get_entry("initiator_score"),
10168                "initiator_score",
10169            )?,
10170            target_score: read_value::<u16>(
10171                stream,
10172                definition.get_entry("target_score"),
10173                "target_score",
10174            )?,
10175        })
10176    }
10177    #[allow(unused_variables)]
10178    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10179        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10180        match field {
10181            "killer" => Ok(self.killer.clone().into()),
10182            "score_type" => Ok(self.score_type.clone().into()),
10183            "initiator" => Ok(self.initiator.clone().into()),
10184            "target" => Ok(self.target.clone().into()),
10185            "initiator_score" => Ok(self.initiator_score.clone().into()),
10186            "target_score" => Ok(self.target_score.clone().into()),
10187            _ => Err(ParseError::MissingGameEventValue {
10188                ty: "DuelStatus",
10189                field: field.into(),
10190            }),
10191        }
10192    }
10193    #[allow(unused_variables)]
10194    fn write(
10195        &self,
10196        stream: &mut BitWriteStream<LittleEndian>,
10197        definition: &GameEventDefinition,
10198    ) -> Result<()> {
10199        for entry in &definition.entries {
10200            let value = self
10201                .get_field(&entry.name)
10202                .unwrap_or_else(|_| entry.kind.default_value());
10203            stream.write(&value)?;
10204        }
10205        Ok(())
10206    }
10207}
10208#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10209#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10210pub struct FishNoticeEvent {
10211    pub user_id: u16,
10212    pub victim_ent_index: u32,
10213    pub inflictor_ent_index: u32,
10214    pub attacker: u16,
10215    pub weapon: MaybeUtf8String,
10216    pub weapon_id: u16,
10217    pub damage_bits: u32,
10218    pub custom_kill: u16,
10219    pub assister: u16,
10220    pub weapon_log_class_name: MaybeUtf8String,
10221    pub stun_flags: u16,
10222    pub death_flags: u16,
10223    pub silent_kill: bool,
10224    pub assister_fallback: MaybeUtf8String,
10225}
10226impl FishNoticeEvent {
10227    #[allow(unused_variables)]
10228    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10229        Ok(FishNoticeEvent {
10230            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
10231            victim_ent_index: read_value::<u32>(
10232                stream,
10233                definition.get_entry("victim_entindex"),
10234                "victim_ent_index",
10235            )?,
10236            inflictor_ent_index: read_value::<u32>(
10237                stream,
10238                definition.get_entry("inflictor_entindex"),
10239                "inflictor_ent_index",
10240            )?,
10241            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
10242            weapon: read_value::<MaybeUtf8String>(
10243                stream,
10244                definition.get_entry("weapon"),
10245                "weapon",
10246            )?,
10247            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
10248            damage_bits: read_value::<u32>(
10249                stream,
10250                definition.get_entry("damagebits"),
10251                "damage_bits",
10252            )?,
10253            custom_kill: read_value::<u16>(
10254                stream,
10255                definition.get_entry("customkill"),
10256                "custom_kill",
10257            )?,
10258            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
10259            weapon_log_class_name: read_value::<MaybeUtf8String>(
10260                stream,
10261                definition.get_entry("weapon_logclassname"),
10262                "weapon_log_class_name",
10263            )?,
10264            stun_flags: read_value::<u16>(
10265                stream,
10266                definition.get_entry("stun_flags"),
10267                "stun_flags",
10268            )?,
10269            death_flags: read_value::<u16>(
10270                stream,
10271                definition.get_entry("death_flags"),
10272                "death_flags",
10273            )?,
10274            silent_kill: read_value::<bool>(
10275                stream,
10276                definition.get_entry("silent_kill"),
10277                "silent_kill",
10278            )?,
10279            assister_fallback: read_value::<MaybeUtf8String>(
10280                stream,
10281                definition.get_entry("assister_fallback"),
10282                "assister_fallback",
10283            )?,
10284        })
10285    }
10286    #[allow(unused_variables)]
10287    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10288        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10289        match field {
10290            "userid" => Ok(self.user_id.clone().into()),
10291            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
10292            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
10293            "attacker" => Ok(self.attacker.clone().into()),
10294            "weapon" => Ok(self.weapon.clone().into()),
10295            "weaponid" => Ok(self.weapon_id.clone().into()),
10296            "damagebits" => Ok(self.damage_bits.clone().into()),
10297            "customkill" => Ok(self.custom_kill.clone().into()),
10298            "assister" => Ok(self.assister.clone().into()),
10299            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
10300            "stun_flags" => Ok(self.stun_flags.clone().into()),
10301            "death_flags" => Ok(self.death_flags.clone().into()),
10302            "silent_kill" => Ok(self.silent_kill.clone().into()),
10303            "assister_fallback" => Ok(self.assister_fallback.clone().into()),
10304            _ => Err(ParseError::MissingGameEventValue {
10305                ty: "FishNotice",
10306                field: field.into(),
10307            }),
10308        }
10309    }
10310    #[allow(unused_variables)]
10311    fn write(
10312        &self,
10313        stream: &mut BitWriteStream<LittleEndian>,
10314        definition: &GameEventDefinition,
10315    ) -> Result<()> {
10316        for entry in &definition.entries {
10317            let value = self
10318                .get_field(&entry.name)
10319                .unwrap_or_else(|_| entry.kind.default_value());
10320            stream.write(&value)?;
10321        }
10322        Ok(())
10323    }
10324}
10325#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10326#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10327pub struct FishNoticeArmEvent {
10328    pub user_id: u16,
10329    pub victim_ent_index: u32,
10330    pub inflictor_ent_index: u32,
10331    pub attacker: u16,
10332    pub weapon: MaybeUtf8String,
10333    pub weapon_id: u16,
10334    pub damage_bits: u32,
10335    pub custom_kill: u16,
10336    pub assister: u16,
10337    pub weapon_log_class_name: MaybeUtf8String,
10338    pub stun_flags: u16,
10339    pub death_flags: u16,
10340    pub silent_kill: bool,
10341    pub assister_fallback: MaybeUtf8String,
10342}
10343impl FishNoticeArmEvent {
10344    #[allow(unused_variables)]
10345    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10346        Ok(FishNoticeArmEvent {
10347            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
10348            victim_ent_index: read_value::<u32>(
10349                stream,
10350                definition.get_entry("victim_entindex"),
10351                "victim_ent_index",
10352            )?,
10353            inflictor_ent_index: read_value::<u32>(
10354                stream,
10355                definition.get_entry("inflictor_entindex"),
10356                "inflictor_ent_index",
10357            )?,
10358            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
10359            weapon: read_value::<MaybeUtf8String>(
10360                stream,
10361                definition.get_entry("weapon"),
10362                "weapon",
10363            )?,
10364            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
10365            damage_bits: read_value::<u32>(
10366                stream,
10367                definition.get_entry("damagebits"),
10368                "damage_bits",
10369            )?,
10370            custom_kill: read_value::<u16>(
10371                stream,
10372                definition.get_entry("customkill"),
10373                "custom_kill",
10374            )?,
10375            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
10376            weapon_log_class_name: read_value::<MaybeUtf8String>(
10377                stream,
10378                definition.get_entry("weapon_logclassname"),
10379                "weapon_log_class_name",
10380            )?,
10381            stun_flags: read_value::<u16>(
10382                stream,
10383                definition.get_entry("stun_flags"),
10384                "stun_flags",
10385            )?,
10386            death_flags: read_value::<u16>(
10387                stream,
10388                definition.get_entry("death_flags"),
10389                "death_flags",
10390            )?,
10391            silent_kill: read_value::<bool>(
10392                stream,
10393                definition.get_entry("silent_kill"),
10394                "silent_kill",
10395            )?,
10396            assister_fallback: read_value::<MaybeUtf8String>(
10397                stream,
10398                definition.get_entry("assister_fallback"),
10399                "assister_fallback",
10400            )?,
10401        })
10402    }
10403    #[allow(unused_variables)]
10404    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10405        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10406        match field {
10407            "userid" => Ok(self.user_id.clone().into()),
10408            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
10409            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
10410            "attacker" => Ok(self.attacker.clone().into()),
10411            "weapon" => Ok(self.weapon.clone().into()),
10412            "weaponid" => Ok(self.weapon_id.clone().into()),
10413            "damagebits" => Ok(self.damage_bits.clone().into()),
10414            "customkill" => Ok(self.custom_kill.clone().into()),
10415            "assister" => Ok(self.assister.clone().into()),
10416            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
10417            "stun_flags" => Ok(self.stun_flags.clone().into()),
10418            "death_flags" => Ok(self.death_flags.clone().into()),
10419            "silent_kill" => Ok(self.silent_kill.clone().into()),
10420            "assister_fallback" => Ok(self.assister_fallback.clone().into()),
10421            _ => Err(ParseError::MissingGameEventValue {
10422                ty: "FishNoticeArm",
10423                field: field.into(),
10424            }),
10425        }
10426    }
10427    #[allow(unused_variables)]
10428    fn write(
10429        &self,
10430        stream: &mut BitWriteStream<LittleEndian>,
10431        definition: &GameEventDefinition,
10432    ) -> Result<()> {
10433        for entry in &definition.entries {
10434            let value = self
10435                .get_field(&entry.name)
10436                .unwrap_or_else(|_| entry.kind.default_value());
10437            stream.write(&value)?;
10438        }
10439        Ok(())
10440    }
10441}
10442#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10443#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10444pub struct SlapNoticeEvent {
10445    pub user_id: u16,
10446    pub victim_ent_index: u32,
10447    pub inflictor_ent_index: u32,
10448    pub attacker: u16,
10449    pub weapon: MaybeUtf8String,
10450    pub weapon_id: u16,
10451    pub damage_bits: u32,
10452    pub custom_kill: u16,
10453    pub assister: u16,
10454    pub weapon_log_class_name: MaybeUtf8String,
10455    pub stun_flags: u16,
10456    pub death_flags: u16,
10457    pub silent_kill: bool,
10458    pub assister_fallback: MaybeUtf8String,
10459}
10460impl SlapNoticeEvent {
10461    #[allow(unused_variables)]
10462    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10463        Ok(SlapNoticeEvent {
10464            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
10465            victim_ent_index: read_value::<u32>(
10466                stream,
10467                definition.get_entry("victim_entindex"),
10468                "victim_ent_index",
10469            )?,
10470            inflictor_ent_index: read_value::<u32>(
10471                stream,
10472                definition.get_entry("inflictor_entindex"),
10473                "inflictor_ent_index",
10474            )?,
10475            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
10476            weapon: read_value::<MaybeUtf8String>(
10477                stream,
10478                definition.get_entry("weapon"),
10479                "weapon",
10480            )?,
10481            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
10482            damage_bits: read_value::<u32>(
10483                stream,
10484                definition.get_entry("damagebits"),
10485                "damage_bits",
10486            )?,
10487            custom_kill: read_value::<u16>(
10488                stream,
10489                definition.get_entry("customkill"),
10490                "custom_kill",
10491            )?,
10492            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
10493            weapon_log_class_name: read_value::<MaybeUtf8String>(
10494                stream,
10495                definition.get_entry("weapon_logclassname"),
10496                "weapon_log_class_name",
10497            )?,
10498            stun_flags: read_value::<u16>(
10499                stream,
10500                definition.get_entry("stun_flags"),
10501                "stun_flags",
10502            )?,
10503            death_flags: read_value::<u16>(
10504                stream,
10505                definition.get_entry("death_flags"),
10506                "death_flags",
10507            )?,
10508            silent_kill: read_value::<bool>(
10509                stream,
10510                definition.get_entry("silent_kill"),
10511                "silent_kill",
10512            )?,
10513            assister_fallback: read_value::<MaybeUtf8String>(
10514                stream,
10515                definition.get_entry("assister_fallback"),
10516                "assister_fallback",
10517            )?,
10518        })
10519    }
10520    #[allow(unused_variables)]
10521    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10522        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10523        match field {
10524            "userid" => Ok(self.user_id.clone().into()),
10525            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
10526            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
10527            "attacker" => Ok(self.attacker.clone().into()),
10528            "weapon" => Ok(self.weapon.clone().into()),
10529            "weaponid" => Ok(self.weapon_id.clone().into()),
10530            "damagebits" => Ok(self.damage_bits.clone().into()),
10531            "customkill" => Ok(self.custom_kill.clone().into()),
10532            "assister" => Ok(self.assister.clone().into()),
10533            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
10534            "stun_flags" => Ok(self.stun_flags.clone().into()),
10535            "death_flags" => Ok(self.death_flags.clone().into()),
10536            "silent_kill" => Ok(self.silent_kill.clone().into()),
10537            "assister_fallback" => Ok(self.assister_fallback.clone().into()),
10538            _ => Err(ParseError::MissingGameEventValue {
10539                ty: "SlapNotice",
10540                field: field.into(),
10541            }),
10542        }
10543    }
10544    #[allow(unused_variables)]
10545    fn write(
10546        &self,
10547        stream: &mut BitWriteStream<LittleEndian>,
10548        definition: &GameEventDefinition,
10549    ) -> Result<()> {
10550        for entry in &definition.entries {
10551            let value = self
10552                .get_field(&entry.name)
10553                .unwrap_or_else(|_| entry.kind.default_value());
10554            stream.write(&value)?;
10555        }
10556        Ok(())
10557    }
10558}
10559#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10560#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10561pub struct ThrowableHitEvent {
10562    pub user_id: u16,
10563    pub victim_ent_index: u32,
10564    pub inflictor_ent_index: u32,
10565    pub attacker: u16,
10566    pub weapon: MaybeUtf8String,
10567    pub weapon_id: u16,
10568    pub damage_bits: u32,
10569    pub custom_kill: u16,
10570    pub assister: u16,
10571    pub weapon_log_class_name: MaybeUtf8String,
10572    pub stun_flags: u16,
10573    pub death_flags: u16,
10574    pub silent_kill: bool,
10575    pub assister_fallback: MaybeUtf8String,
10576    pub total_hits: u16,
10577}
10578impl ThrowableHitEvent {
10579    #[allow(unused_variables)]
10580    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10581        Ok(ThrowableHitEvent {
10582            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
10583            victim_ent_index: read_value::<u32>(
10584                stream,
10585                definition.get_entry("victim_entindex"),
10586                "victim_ent_index",
10587            )?,
10588            inflictor_ent_index: read_value::<u32>(
10589                stream,
10590                definition.get_entry("inflictor_entindex"),
10591                "inflictor_ent_index",
10592            )?,
10593            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
10594            weapon: read_value::<MaybeUtf8String>(
10595                stream,
10596                definition.get_entry("weapon"),
10597                "weapon",
10598            )?,
10599            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
10600            damage_bits: read_value::<u32>(
10601                stream,
10602                definition.get_entry("damagebits"),
10603                "damage_bits",
10604            )?,
10605            custom_kill: read_value::<u16>(
10606                stream,
10607                definition.get_entry("customkill"),
10608                "custom_kill",
10609            )?,
10610            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
10611            weapon_log_class_name: read_value::<MaybeUtf8String>(
10612                stream,
10613                definition.get_entry("weapon_logclassname"),
10614                "weapon_log_class_name",
10615            )?,
10616            stun_flags: read_value::<u16>(
10617                stream,
10618                definition.get_entry("stun_flags"),
10619                "stun_flags",
10620            )?,
10621            death_flags: read_value::<u16>(
10622                stream,
10623                definition.get_entry("death_flags"),
10624                "death_flags",
10625            )?,
10626            silent_kill: read_value::<bool>(
10627                stream,
10628                definition.get_entry("silent_kill"),
10629                "silent_kill",
10630            )?,
10631            assister_fallback: read_value::<MaybeUtf8String>(
10632                stream,
10633                definition.get_entry("assister_fallback"),
10634                "assister_fallback",
10635            )?,
10636            total_hits: read_value::<u16>(stream, definition.get_entry("totalhits"), "total_hits")?,
10637        })
10638    }
10639    #[allow(unused_variables)]
10640    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10641        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10642        match field {
10643            "userid" => Ok(self.user_id.clone().into()),
10644            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
10645            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
10646            "attacker" => Ok(self.attacker.clone().into()),
10647            "weapon" => Ok(self.weapon.clone().into()),
10648            "weaponid" => Ok(self.weapon_id.clone().into()),
10649            "damagebits" => Ok(self.damage_bits.clone().into()),
10650            "customkill" => Ok(self.custom_kill.clone().into()),
10651            "assister" => Ok(self.assister.clone().into()),
10652            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
10653            "stun_flags" => Ok(self.stun_flags.clone().into()),
10654            "death_flags" => Ok(self.death_flags.clone().into()),
10655            "silent_kill" => Ok(self.silent_kill.clone().into()),
10656            "assister_fallback" => Ok(self.assister_fallback.clone().into()),
10657            "totalhits" => Ok(self.total_hits.clone().into()),
10658            _ => Err(ParseError::MissingGameEventValue {
10659                ty: "ThrowableHit",
10660                field: field.into(),
10661            }),
10662        }
10663    }
10664    #[allow(unused_variables)]
10665    fn write(
10666        &self,
10667        stream: &mut BitWriteStream<LittleEndian>,
10668        definition: &GameEventDefinition,
10669    ) -> Result<()> {
10670        for entry in &definition.entries {
10671            let value = self
10672                .get_field(&entry.name)
10673                .unwrap_or_else(|_| entry.kind.default_value());
10674            stream.write(&value)?;
10675        }
10676        Ok(())
10677    }
10678}
10679#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10680#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10681pub struct PumpkinLordSummonedEvent {}
10682impl PumpkinLordSummonedEvent {
10683    #[allow(unused_variables)]
10684    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10685        Ok(PumpkinLordSummonedEvent {})
10686    }
10687    #[allow(unused_variables)]
10688    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10689        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10690        match field {
10691            _ => Err(ParseError::MissingGameEventValue {
10692                ty: "PumpkinLordSummoned",
10693                field: field.into(),
10694            }),
10695        }
10696    }
10697    #[allow(unused_variables)]
10698    fn write(
10699        &self,
10700        stream: &mut BitWriteStream<LittleEndian>,
10701        definition: &GameEventDefinition,
10702    ) -> Result<()> {
10703        for entry in &definition.entries {
10704            let value = self
10705                .get_field(&entry.name)
10706                .unwrap_or_else(|_| entry.kind.default_value());
10707            stream.write(&value)?;
10708        }
10709        Ok(())
10710    }
10711}
10712#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10713#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10714pub struct PumpkinLordKilledEvent {}
10715impl PumpkinLordKilledEvent {
10716    #[allow(unused_variables)]
10717    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10718        Ok(PumpkinLordKilledEvent {})
10719    }
10720    #[allow(unused_variables)]
10721    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10722        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10723        match field {
10724            _ => Err(ParseError::MissingGameEventValue {
10725                ty: "PumpkinLordKilled",
10726                field: field.into(),
10727            }),
10728        }
10729    }
10730    #[allow(unused_variables)]
10731    fn write(
10732        &self,
10733        stream: &mut BitWriteStream<LittleEndian>,
10734        definition: &GameEventDefinition,
10735    ) -> Result<()> {
10736        for entry in &definition.entries {
10737            let value = self
10738                .get_field(&entry.name)
10739                .unwrap_or_else(|_| entry.kind.default_value());
10740            stream.write(&value)?;
10741        }
10742        Ok(())
10743    }
10744}
10745#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10746#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10747pub struct MerasmusSummonedEvent {
10748    pub level: u16,
10749}
10750impl MerasmusSummonedEvent {
10751    #[allow(unused_variables)]
10752    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10753        Ok(MerasmusSummonedEvent {
10754            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10755        })
10756    }
10757    #[allow(unused_variables)]
10758    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10759        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10760        match field {
10761            "level" => Ok(self.level.clone().into()),
10762            _ => Err(ParseError::MissingGameEventValue {
10763                ty: "MerasmusSummoned",
10764                field: field.into(),
10765            }),
10766        }
10767    }
10768    #[allow(unused_variables)]
10769    fn write(
10770        &self,
10771        stream: &mut BitWriteStream<LittleEndian>,
10772        definition: &GameEventDefinition,
10773    ) -> Result<()> {
10774        for entry in &definition.entries {
10775            let value = self
10776                .get_field(&entry.name)
10777                .unwrap_or_else(|_| entry.kind.default_value());
10778            stream.write(&value)?;
10779        }
10780        Ok(())
10781    }
10782}
10783#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10784#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10785pub struct MerasmusKilledEvent {
10786    pub level: u16,
10787}
10788impl MerasmusKilledEvent {
10789    #[allow(unused_variables)]
10790    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10791        Ok(MerasmusKilledEvent {
10792            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10793        })
10794    }
10795    #[allow(unused_variables)]
10796    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10797        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10798        match field {
10799            "level" => Ok(self.level.clone().into()),
10800            _ => Err(ParseError::MissingGameEventValue {
10801                ty: "MerasmusKilled",
10802                field: field.into(),
10803            }),
10804        }
10805    }
10806    #[allow(unused_variables)]
10807    fn write(
10808        &self,
10809        stream: &mut BitWriteStream<LittleEndian>,
10810        definition: &GameEventDefinition,
10811    ) -> Result<()> {
10812        for entry in &definition.entries {
10813            let value = self
10814                .get_field(&entry.name)
10815                .unwrap_or_else(|_| entry.kind.default_value());
10816            stream.write(&value)?;
10817        }
10818        Ok(())
10819    }
10820}
10821#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10822#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10823pub struct MerasmusEscapeWarningEvent {
10824    pub level: u16,
10825    pub time_remaining: u8,
10826}
10827impl MerasmusEscapeWarningEvent {
10828    #[allow(unused_variables)]
10829    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10830        Ok(MerasmusEscapeWarningEvent {
10831            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10832            time_remaining: read_value::<u8>(
10833                stream,
10834                definition.get_entry("time_remaining"),
10835                "time_remaining",
10836            )?,
10837        })
10838    }
10839    #[allow(unused_variables)]
10840    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10841        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10842        match field {
10843            "level" => Ok(self.level.clone().into()),
10844            "time_remaining" => Ok(self.time_remaining.clone().into()),
10845            _ => Err(ParseError::MissingGameEventValue {
10846                ty: "MerasmusEscapeWarning",
10847                field: field.into(),
10848            }),
10849        }
10850    }
10851    #[allow(unused_variables)]
10852    fn write(
10853        &self,
10854        stream: &mut BitWriteStream<LittleEndian>,
10855        definition: &GameEventDefinition,
10856    ) -> Result<()> {
10857        for entry in &definition.entries {
10858            let value = self
10859                .get_field(&entry.name)
10860                .unwrap_or_else(|_| entry.kind.default_value());
10861            stream.write(&value)?;
10862        }
10863        Ok(())
10864    }
10865}
10866#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10867#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10868pub struct MerasmusEscapedEvent {
10869    pub level: u16,
10870}
10871impl MerasmusEscapedEvent {
10872    #[allow(unused_variables)]
10873    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10874        Ok(MerasmusEscapedEvent {
10875            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10876        })
10877    }
10878    #[allow(unused_variables)]
10879    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10880        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10881        match field {
10882            "level" => Ok(self.level.clone().into()),
10883            _ => Err(ParseError::MissingGameEventValue {
10884                ty: "MerasmusEscaped",
10885                field: field.into(),
10886            }),
10887        }
10888    }
10889    #[allow(unused_variables)]
10890    fn write(
10891        &self,
10892        stream: &mut BitWriteStream<LittleEndian>,
10893        definition: &GameEventDefinition,
10894    ) -> Result<()> {
10895        for entry in &definition.entries {
10896            let value = self
10897                .get_field(&entry.name)
10898                .unwrap_or_else(|_| entry.kind.default_value());
10899            stream.write(&value)?;
10900        }
10901        Ok(())
10902    }
10903}
10904#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10905#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10906pub struct EyeballBossSummonedEvent {
10907    pub level: u16,
10908}
10909impl EyeballBossSummonedEvent {
10910    #[allow(unused_variables)]
10911    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10912        Ok(EyeballBossSummonedEvent {
10913            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10914        })
10915    }
10916    #[allow(unused_variables)]
10917    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10918        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10919        match field {
10920            "level" => Ok(self.level.clone().into()),
10921            _ => Err(ParseError::MissingGameEventValue {
10922                ty: "EyeballBossSummoned",
10923                field: field.into(),
10924            }),
10925        }
10926    }
10927    #[allow(unused_variables)]
10928    fn write(
10929        &self,
10930        stream: &mut BitWriteStream<LittleEndian>,
10931        definition: &GameEventDefinition,
10932    ) -> Result<()> {
10933        for entry in &definition.entries {
10934            let value = self
10935                .get_field(&entry.name)
10936                .unwrap_or_else(|_| entry.kind.default_value());
10937            stream.write(&value)?;
10938        }
10939        Ok(())
10940    }
10941}
10942#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10943#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10944pub struct EyeballBossStunnedEvent {
10945    pub level: u16,
10946    pub player_ent_index: u8,
10947}
10948impl EyeballBossStunnedEvent {
10949    #[allow(unused_variables)]
10950    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10951        Ok(EyeballBossStunnedEvent {
10952            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10953            player_ent_index: read_value::<u8>(
10954                stream,
10955                definition.get_entry("player_entindex"),
10956                "player_ent_index",
10957            )?,
10958        })
10959    }
10960    #[allow(unused_variables)]
10961    fn get_field(&self, field: &str) -> Result<GameEventValue> {
10962        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
10963        match field {
10964            "level" => Ok(self.level.clone().into()),
10965            "player_entindex" => Ok(self.player_ent_index.clone().into()),
10966            _ => Err(ParseError::MissingGameEventValue {
10967                ty: "EyeballBossStunned",
10968                field: field.into(),
10969            }),
10970        }
10971    }
10972    #[allow(unused_variables)]
10973    fn write(
10974        &self,
10975        stream: &mut BitWriteStream<LittleEndian>,
10976        definition: &GameEventDefinition,
10977    ) -> Result<()> {
10978        for entry in &definition.entries {
10979            let value = self
10980                .get_field(&entry.name)
10981                .unwrap_or_else(|_| entry.kind.default_value());
10982            stream.write(&value)?;
10983        }
10984        Ok(())
10985    }
10986}
10987#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10988#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10989pub struct EyeballBossKilledEvent {
10990    pub level: u16,
10991}
10992impl EyeballBossKilledEvent {
10993    #[allow(unused_variables)]
10994    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
10995        Ok(EyeballBossKilledEvent {
10996            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
10997        })
10998    }
10999    #[allow(unused_variables)]
11000    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11001        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11002        match field {
11003            "level" => Ok(self.level.clone().into()),
11004            _ => Err(ParseError::MissingGameEventValue {
11005                ty: "EyeballBossKilled",
11006                field: field.into(),
11007            }),
11008        }
11009    }
11010    #[allow(unused_variables)]
11011    fn write(
11012        &self,
11013        stream: &mut BitWriteStream<LittleEndian>,
11014        definition: &GameEventDefinition,
11015    ) -> Result<()> {
11016        for entry in &definition.entries {
11017            let value = self
11018                .get_field(&entry.name)
11019                .unwrap_or_else(|_| entry.kind.default_value());
11020            stream.write(&value)?;
11021        }
11022        Ok(())
11023    }
11024}
11025#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11026#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11027pub struct EyeballBossKillerEvent {
11028    pub level: u16,
11029    pub player_ent_index: u8,
11030}
11031impl EyeballBossKillerEvent {
11032    #[allow(unused_variables)]
11033    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11034        Ok(EyeballBossKillerEvent {
11035            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
11036            player_ent_index: read_value::<u8>(
11037                stream,
11038                definition.get_entry("player_entindex"),
11039                "player_ent_index",
11040            )?,
11041        })
11042    }
11043    #[allow(unused_variables)]
11044    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11045        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11046        match field {
11047            "level" => Ok(self.level.clone().into()),
11048            "player_entindex" => Ok(self.player_ent_index.clone().into()),
11049            _ => Err(ParseError::MissingGameEventValue {
11050                ty: "EyeballBossKiller",
11051                field: field.into(),
11052            }),
11053        }
11054    }
11055    #[allow(unused_variables)]
11056    fn write(
11057        &self,
11058        stream: &mut BitWriteStream<LittleEndian>,
11059        definition: &GameEventDefinition,
11060    ) -> Result<()> {
11061        for entry in &definition.entries {
11062            let value = self
11063                .get_field(&entry.name)
11064                .unwrap_or_else(|_| entry.kind.default_value());
11065            stream.write(&value)?;
11066        }
11067        Ok(())
11068    }
11069}
11070#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11071#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11072pub struct EyeballBossEscapeImminentEvent {
11073    pub level: u16,
11074    pub time_remaining: u8,
11075}
11076impl EyeballBossEscapeImminentEvent {
11077    #[allow(unused_variables)]
11078    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11079        Ok(EyeballBossEscapeImminentEvent {
11080            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
11081            time_remaining: read_value::<u8>(
11082                stream,
11083                definition.get_entry("time_remaining"),
11084                "time_remaining",
11085            )?,
11086        })
11087    }
11088    #[allow(unused_variables)]
11089    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11090        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11091        match field {
11092            "level" => Ok(self.level.clone().into()),
11093            "time_remaining" => Ok(self.time_remaining.clone().into()),
11094            _ => Err(ParseError::MissingGameEventValue {
11095                ty: "EyeballBossEscapeImminent",
11096                field: field.into(),
11097            }),
11098        }
11099    }
11100    #[allow(unused_variables)]
11101    fn write(
11102        &self,
11103        stream: &mut BitWriteStream<LittleEndian>,
11104        definition: &GameEventDefinition,
11105    ) -> Result<()> {
11106        for entry in &definition.entries {
11107            let value = self
11108                .get_field(&entry.name)
11109                .unwrap_or_else(|_| entry.kind.default_value());
11110            stream.write(&value)?;
11111        }
11112        Ok(())
11113    }
11114}
11115#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11116#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11117pub struct EyeballBossEscapedEvent {
11118    pub level: u16,
11119}
11120impl EyeballBossEscapedEvent {
11121    #[allow(unused_variables)]
11122    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11123        Ok(EyeballBossEscapedEvent {
11124            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
11125        })
11126    }
11127    #[allow(unused_variables)]
11128    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11129        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11130        match field {
11131            "level" => Ok(self.level.clone().into()),
11132            _ => Err(ParseError::MissingGameEventValue {
11133                ty: "EyeballBossEscaped",
11134                field: field.into(),
11135            }),
11136        }
11137    }
11138    #[allow(unused_variables)]
11139    fn write(
11140        &self,
11141        stream: &mut BitWriteStream<LittleEndian>,
11142        definition: &GameEventDefinition,
11143    ) -> Result<()> {
11144        for entry in &definition.entries {
11145            let value = self
11146                .get_field(&entry.name)
11147                .unwrap_or_else(|_| entry.kind.default_value());
11148            stream.write(&value)?;
11149        }
11150        Ok(())
11151    }
11152}
11153#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11154#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11155pub struct NpcHurtEvent {
11156    pub ent_index: u16,
11157    pub health: u16,
11158    pub attacker_player: u16,
11159    pub weapon_id: u16,
11160    pub damage_amount: u16,
11161    pub crit: bool,
11162    pub boss: u16,
11163}
11164impl NpcHurtEvent {
11165    #[allow(unused_variables)]
11166    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11167        Ok(NpcHurtEvent {
11168            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
11169            health: read_value::<u16>(stream, definition.get_entry("health"), "health")?,
11170            attacker_player: read_value::<u16>(
11171                stream,
11172                definition.get_entry("attacker_player"),
11173                "attacker_player",
11174            )?,
11175            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
11176            damage_amount: read_value::<u16>(
11177                stream,
11178                definition.get_entry("damageamount"),
11179                "damage_amount",
11180            )?,
11181            crit: read_value::<bool>(stream, definition.get_entry("crit"), "crit")?,
11182            boss: read_value::<u16>(stream, definition.get_entry("boss"), "boss")?,
11183        })
11184    }
11185    #[allow(unused_variables)]
11186    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11187        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11188        match field {
11189            "entindex" => Ok(self.ent_index.clone().into()),
11190            "health" => Ok(self.health.clone().into()),
11191            "attacker_player" => Ok(self.attacker_player.clone().into()),
11192            "weaponid" => Ok(self.weapon_id.clone().into()),
11193            "damageamount" => Ok(self.damage_amount.clone().into()),
11194            "crit" => Ok(self.crit.clone().into()),
11195            "boss" => Ok(self.boss.clone().into()),
11196            _ => Err(ParseError::MissingGameEventValue {
11197                ty: "NpcHurt",
11198                field: field.into(),
11199            }),
11200        }
11201    }
11202    #[allow(unused_variables)]
11203    fn write(
11204        &self,
11205        stream: &mut BitWriteStream<LittleEndian>,
11206        definition: &GameEventDefinition,
11207    ) -> Result<()> {
11208        for entry in &definition.entries {
11209            let value = self
11210                .get_field(&entry.name)
11211                .unwrap_or_else(|_| entry.kind.default_value());
11212            stream.write(&value)?;
11213        }
11214        Ok(())
11215    }
11216}
11217#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11218#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11219pub struct ControlPointTimerUpdatedEvent {
11220    pub index: u16,
11221    pub time: f32,
11222}
11223impl ControlPointTimerUpdatedEvent {
11224    #[allow(unused_variables)]
11225    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11226        Ok(ControlPointTimerUpdatedEvent {
11227            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
11228            time: read_value::<f32>(stream, definition.get_entry("time"), "time")?,
11229        })
11230    }
11231    #[allow(unused_variables)]
11232    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11233        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11234        match field {
11235            "index" => Ok(self.index.clone().into()),
11236            "time" => Ok(self.time.clone().into()),
11237            _ => Err(ParseError::MissingGameEventValue {
11238                ty: "ControlPointTimerUpdated",
11239                field: field.into(),
11240            }),
11241        }
11242    }
11243    #[allow(unused_variables)]
11244    fn write(
11245        &self,
11246        stream: &mut BitWriteStream<LittleEndian>,
11247        definition: &GameEventDefinition,
11248    ) -> Result<()> {
11249        for entry in &definition.entries {
11250            let value = self
11251                .get_field(&entry.name)
11252                .unwrap_or_else(|_| entry.kind.default_value());
11253            stream.write(&value)?;
11254        }
11255        Ok(())
11256    }
11257}
11258#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11259#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11260pub struct PlayerHighFiveStartEvent {
11261    pub ent_index: u8,
11262}
11263impl PlayerHighFiveStartEvent {
11264    #[allow(unused_variables)]
11265    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11266        Ok(PlayerHighFiveStartEvent {
11267            ent_index: read_value::<u8>(stream, definition.get_entry("entindex"), "ent_index")?,
11268        })
11269    }
11270    #[allow(unused_variables)]
11271    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11272        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11273        match field {
11274            "entindex" => Ok(self.ent_index.clone().into()),
11275            _ => Err(ParseError::MissingGameEventValue {
11276                ty: "PlayerHighFiveStart",
11277                field: field.into(),
11278            }),
11279        }
11280    }
11281    #[allow(unused_variables)]
11282    fn write(
11283        &self,
11284        stream: &mut BitWriteStream<LittleEndian>,
11285        definition: &GameEventDefinition,
11286    ) -> Result<()> {
11287        for entry in &definition.entries {
11288            let value = self
11289                .get_field(&entry.name)
11290                .unwrap_or_else(|_| entry.kind.default_value());
11291            stream.write(&value)?;
11292        }
11293        Ok(())
11294    }
11295}
11296#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11297#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11298pub struct PlayerHighFiveCancelEvent {
11299    pub ent_index: u8,
11300}
11301impl PlayerHighFiveCancelEvent {
11302    #[allow(unused_variables)]
11303    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11304        Ok(PlayerHighFiveCancelEvent {
11305            ent_index: read_value::<u8>(stream, definition.get_entry("entindex"), "ent_index")?,
11306        })
11307    }
11308    #[allow(unused_variables)]
11309    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11310        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11311        match field {
11312            "entindex" => Ok(self.ent_index.clone().into()),
11313            _ => Err(ParseError::MissingGameEventValue {
11314                ty: "PlayerHighFiveCancel",
11315                field: field.into(),
11316            }),
11317        }
11318    }
11319    #[allow(unused_variables)]
11320    fn write(
11321        &self,
11322        stream: &mut BitWriteStream<LittleEndian>,
11323        definition: &GameEventDefinition,
11324    ) -> Result<()> {
11325        for entry in &definition.entries {
11326            let value = self
11327                .get_field(&entry.name)
11328                .unwrap_or_else(|_| entry.kind.default_value());
11329            stream.write(&value)?;
11330        }
11331        Ok(())
11332    }
11333}
11334#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11335#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11336pub struct PlayerHighFiveSuccessEvent {
11337    pub initiator_ent_index: u8,
11338    pub partner_ent_index: u8,
11339}
11340impl PlayerHighFiveSuccessEvent {
11341    #[allow(unused_variables)]
11342    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11343        Ok(PlayerHighFiveSuccessEvent {
11344            initiator_ent_index: read_value::<u8>(
11345                stream,
11346                definition.get_entry("initiator_entindex"),
11347                "initiator_ent_index",
11348            )?,
11349            partner_ent_index: read_value::<u8>(
11350                stream,
11351                definition.get_entry("partner_entindex"),
11352                "partner_ent_index",
11353            )?,
11354        })
11355    }
11356    #[allow(unused_variables)]
11357    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11358        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11359        match field {
11360            "initiator_entindex" => Ok(self.initiator_ent_index.clone().into()),
11361            "partner_entindex" => Ok(self.partner_ent_index.clone().into()),
11362            _ => Err(ParseError::MissingGameEventValue {
11363                ty: "PlayerHighFiveSuccess",
11364                field: field.into(),
11365            }),
11366        }
11367    }
11368    #[allow(unused_variables)]
11369    fn write(
11370        &self,
11371        stream: &mut BitWriteStream<LittleEndian>,
11372        definition: &GameEventDefinition,
11373    ) -> Result<()> {
11374        for entry in &definition.entries {
11375            let value = self
11376                .get_field(&entry.name)
11377                .unwrap_or_else(|_| entry.kind.default_value());
11378            stream.write(&value)?;
11379        }
11380        Ok(())
11381    }
11382}
11383#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11384#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11385pub struct PlayerBonusPointsEvent {
11386    pub points: u16,
11387    pub player_ent_index: u16,
11388    pub source_ent_index: u16,
11389}
11390impl PlayerBonusPointsEvent {
11391    #[allow(unused_variables)]
11392    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11393        Ok(PlayerBonusPointsEvent {
11394            points: read_value::<u16>(stream, definition.get_entry("points"), "points")?,
11395            player_ent_index: read_value::<u16>(
11396                stream,
11397                definition.get_entry("player_entindex"),
11398                "player_ent_index",
11399            )?,
11400            source_ent_index: read_value::<u16>(
11401                stream,
11402                definition.get_entry("source_entindex"),
11403                "source_ent_index",
11404            )?,
11405        })
11406    }
11407    #[allow(unused_variables)]
11408    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11409        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11410        match field {
11411            "points" => Ok(self.points.clone().into()),
11412            "player_entindex" => Ok(self.player_ent_index.clone().into()),
11413            "source_entindex" => Ok(self.source_ent_index.clone().into()),
11414            _ => Err(ParseError::MissingGameEventValue {
11415                ty: "PlayerBonusPoints",
11416                field: field.into(),
11417            }),
11418        }
11419    }
11420    #[allow(unused_variables)]
11421    fn write(
11422        &self,
11423        stream: &mut BitWriteStream<LittleEndian>,
11424        definition: &GameEventDefinition,
11425    ) -> Result<()> {
11426        for entry in &definition.entries {
11427            let value = self
11428                .get_field(&entry.name)
11429                .unwrap_or_else(|_| entry.kind.default_value());
11430            stream.write(&value)?;
11431        }
11432        Ok(())
11433    }
11434}
11435#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11436#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11437pub struct PlayerUpgradedEvent {}
11438impl PlayerUpgradedEvent {
11439    #[allow(unused_variables)]
11440    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11441        Ok(PlayerUpgradedEvent {})
11442    }
11443    #[allow(unused_variables)]
11444    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11445        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11446        match field {
11447            _ => Err(ParseError::MissingGameEventValue {
11448                ty: "PlayerUpgraded",
11449                field: field.into(),
11450            }),
11451        }
11452    }
11453    #[allow(unused_variables)]
11454    fn write(
11455        &self,
11456        stream: &mut BitWriteStream<LittleEndian>,
11457        definition: &GameEventDefinition,
11458    ) -> Result<()> {
11459        for entry in &definition.entries {
11460            let value = self
11461                .get_field(&entry.name)
11462                .unwrap_or_else(|_| entry.kind.default_value());
11463            stream.write(&value)?;
11464        }
11465        Ok(())
11466    }
11467}
11468#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11469#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11470pub struct PlayerBuybackEvent {
11471    pub player: u16,
11472    pub cost: u16,
11473}
11474impl PlayerBuybackEvent {
11475    #[allow(unused_variables)]
11476    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11477        Ok(PlayerBuybackEvent {
11478            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
11479            cost: read_value::<u16>(stream, definition.get_entry("cost"), "cost")?,
11480        })
11481    }
11482    #[allow(unused_variables)]
11483    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11484        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11485        match field {
11486            "player" => Ok(self.player.clone().into()),
11487            "cost" => Ok(self.cost.clone().into()),
11488            _ => Err(ParseError::MissingGameEventValue {
11489                ty: "PlayerBuyback",
11490                field: field.into(),
11491            }),
11492        }
11493    }
11494    #[allow(unused_variables)]
11495    fn write(
11496        &self,
11497        stream: &mut BitWriteStream<LittleEndian>,
11498        definition: &GameEventDefinition,
11499    ) -> Result<()> {
11500        for entry in &definition.entries {
11501            let value = self
11502                .get_field(&entry.name)
11503                .unwrap_or_else(|_| entry.kind.default_value());
11504            stream.write(&value)?;
11505        }
11506        Ok(())
11507    }
11508}
11509#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11510#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11511pub struct PlayerUsedPowerUpBottleEvent {
11512    pub player: u16,
11513    pub kind: u16,
11514    pub time: f32,
11515}
11516impl PlayerUsedPowerUpBottleEvent {
11517    #[allow(unused_variables)]
11518    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11519        Ok(PlayerUsedPowerUpBottleEvent {
11520            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
11521            kind: read_value::<u16>(stream, definition.get_entry("type"), "kind")?,
11522            time: read_value::<f32>(stream, definition.get_entry("time"), "time")?,
11523        })
11524    }
11525    #[allow(unused_variables)]
11526    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11527        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11528        match field {
11529            "player" => Ok(self.player.clone().into()),
11530            "type" => Ok(self.kind.clone().into()),
11531            "time" => Ok(self.time.clone().into()),
11532            _ => Err(ParseError::MissingGameEventValue {
11533                ty: "PlayerUsedPowerUpBottle",
11534                field: field.into(),
11535            }),
11536        }
11537    }
11538    #[allow(unused_variables)]
11539    fn write(
11540        &self,
11541        stream: &mut BitWriteStream<LittleEndian>,
11542        definition: &GameEventDefinition,
11543    ) -> Result<()> {
11544        for entry in &definition.entries {
11545            let value = self
11546                .get_field(&entry.name)
11547                .unwrap_or_else(|_| entry.kind.default_value());
11548            stream.write(&value)?;
11549        }
11550        Ok(())
11551    }
11552}
11553#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11554#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11555pub struct ChristmasGiftGrabEvent {
11556    pub user_id: u16,
11557}
11558impl ChristmasGiftGrabEvent {
11559    #[allow(unused_variables)]
11560    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11561        Ok(ChristmasGiftGrabEvent {
11562            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
11563        })
11564    }
11565    #[allow(unused_variables)]
11566    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11567        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11568        match field {
11569            "userid" => Ok(self.user_id.clone().into()),
11570            _ => Err(ParseError::MissingGameEventValue {
11571                ty: "ChristmasGiftGrab",
11572                field: field.into(),
11573            }),
11574        }
11575    }
11576    #[allow(unused_variables)]
11577    fn write(
11578        &self,
11579        stream: &mut BitWriteStream<LittleEndian>,
11580        definition: &GameEventDefinition,
11581    ) -> Result<()> {
11582        for entry in &definition.entries {
11583            let value = self
11584                .get_field(&entry.name)
11585                .unwrap_or_else(|_| entry.kind.default_value());
11586            stream.write(&value)?;
11587        }
11588        Ok(())
11589    }
11590}
11591#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11592#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11593pub struct PlayerKilledAchievementZoneEvent {
11594    pub attacker: u16,
11595    pub victim: u16,
11596    pub zone_id: u16,
11597}
11598impl PlayerKilledAchievementZoneEvent {
11599    #[allow(unused_variables)]
11600    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11601        Ok(PlayerKilledAchievementZoneEvent {
11602            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
11603            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
11604            zone_id: read_value::<u16>(stream, definition.get_entry("zone_id"), "zone_id")?,
11605        })
11606    }
11607    #[allow(unused_variables)]
11608    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11609        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11610        match field {
11611            "attacker" => Ok(self.attacker.clone().into()),
11612            "victim" => Ok(self.victim.clone().into()),
11613            "zone_id" => Ok(self.zone_id.clone().into()),
11614            _ => Err(ParseError::MissingGameEventValue {
11615                ty: "PlayerKilledAchievementZone",
11616                field: field.into(),
11617            }),
11618        }
11619    }
11620    #[allow(unused_variables)]
11621    fn write(
11622        &self,
11623        stream: &mut BitWriteStream<LittleEndian>,
11624        definition: &GameEventDefinition,
11625    ) -> Result<()> {
11626        for entry in &definition.entries {
11627            let value = self
11628                .get_field(&entry.name)
11629                .unwrap_or_else(|_| entry.kind.default_value());
11630            stream.write(&value)?;
11631        }
11632        Ok(())
11633    }
11634}
11635#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11636#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11637pub struct PartyUpdatedEvent {}
11638impl PartyUpdatedEvent {
11639    #[allow(unused_variables)]
11640    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11641        Ok(PartyUpdatedEvent {})
11642    }
11643    #[allow(unused_variables)]
11644    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11645        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11646        match field {
11647            _ => Err(ParseError::MissingGameEventValue {
11648                ty: "PartyUpdated",
11649                field: field.into(),
11650            }),
11651        }
11652    }
11653    #[allow(unused_variables)]
11654    fn write(
11655        &self,
11656        stream: &mut BitWriteStream<LittleEndian>,
11657        definition: &GameEventDefinition,
11658    ) -> Result<()> {
11659        for entry in &definition.entries {
11660            let value = self
11661                .get_field(&entry.name)
11662                .unwrap_or_else(|_| entry.kind.default_value());
11663            stream.write(&value)?;
11664        }
11665        Ok(())
11666    }
11667}
11668#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11669#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11670pub struct PartyPrefChangedEvent {}
11671impl PartyPrefChangedEvent {
11672    #[allow(unused_variables)]
11673    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11674        Ok(PartyPrefChangedEvent {})
11675    }
11676    #[allow(unused_variables)]
11677    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11678        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11679        match field {
11680            _ => Err(ParseError::MissingGameEventValue {
11681                ty: "PartyPrefChanged",
11682                field: field.into(),
11683            }),
11684        }
11685    }
11686    #[allow(unused_variables)]
11687    fn write(
11688        &self,
11689        stream: &mut BitWriteStream<LittleEndian>,
11690        definition: &GameEventDefinition,
11691    ) -> Result<()> {
11692        for entry in &definition.entries {
11693            let value = self
11694                .get_field(&entry.name)
11695                .unwrap_or_else(|_| entry.kind.default_value());
11696            stream.write(&value)?;
11697        }
11698        Ok(())
11699    }
11700}
11701#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11702#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11703pub struct PartyCriteriaChangedEvent {}
11704impl PartyCriteriaChangedEvent {
11705    #[allow(unused_variables)]
11706    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11707        Ok(PartyCriteriaChangedEvent {})
11708    }
11709    #[allow(unused_variables)]
11710    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11711        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11712        match field {
11713            _ => Err(ParseError::MissingGameEventValue {
11714                ty: "PartyCriteriaChanged",
11715                field: field.into(),
11716            }),
11717        }
11718    }
11719    #[allow(unused_variables)]
11720    fn write(
11721        &self,
11722        stream: &mut BitWriteStream<LittleEndian>,
11723        definition: &GameEventDefinition,
11724    ) -> Result<()> {
11725        for entry in &definition.entries {
11726            let value = self
11727                .get_field(&entry.name)
11728                .unwrap_or_else(|_| entry.kind.default_value());
11729            stream.write(&value)?;
11730        }
11731        Ok(())
11732    }
11733}
11734#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11735#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11736pub struct PartyInvitesChangedEvent {}
11737impl PartyInvitesChangedEvent {
11738    #[allow(unused_variables)]
11739    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11740        Ok(PartyInvitesChangedEvent {})
11741    }
11742    #[allow(unused_variables)]
11743    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11744        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11745        match field {
11746            _ => Err(ParseError::MissingGameEventValue {
11747                ty: "PartyInvitesChanged",
11748                field: field.into(),
11749            }),
11750        }
11751    }
11752    #[allow(unused_variables)]
11753    fn write(
11754        &self,
11755        stream: &mut BitWriteStream<LittleEndian>,
11756        definition: &GameEventDefinition,
11757    ) -> Result<()> {
11758        for entry in &definition.entries {
11759            let value = self
11760                .get_field(&entry.name)
11761                .unwrap_or_else(|_| entry.kind.default_value());
11762            stream.write(&value)?;
11763        }
11764        Ok(())
11765    }
11766}
11767#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11768#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11769pub struct PartyQueueStateChangedEvent {
11770    pub match_group: u16,
11771}
11772impl PartyQueueStateChangedEvent {
11773    #[allow(unused_variables)]
11774    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11775        Ok(PartyQueueStateChangedEvent {
11776            match_group: read_value::<u16>(
11777                stream,
11778                definition.get_entry("matchgroup"),
11779                "match_group",
11780            )?,
11781        })
11782    }
11783    #[allow(unused_variables)]
11784    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11785        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11786        match field {
11787            "matchgroup" => Ok(self.match_group.clone().into()),
11788            _ => Err(ParseError::MissingGameEventValue {
11789                ty: "PartyQueueStateChanged",
11790                field: field.into(),
11791            }),
11792        }
11793    }
11794    #[allow(unused_variables)]
11795    fn write(
11796        &self,
11797        stream: &mut BitWriteStream<LittleEndian>,
11798        definition: &GameEventDefinition,
11799    ) -> Result<()> {
11800        for entry in &definition.entries {
11801            let value = self
11802                .get_field(&entry.name)
11803                .unwrap_or_else(|_| entry.kind.default_value());
11804            stream.write(&value)?;
11805        }
11806        Ok(())
11807    }
11808}
11809#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11810#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11811pub struct PartyChatEvent {
11812    pub steam_id: MaybeUtf8String,
11813    pub text: MaybeUtf8String,
11814    pub kind: u16,
11815}
11816impl PartyChatEvent {
11817    #[allow(unused_variables)]
11818    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11819        Ok(PartyChatEvent {
11820            steam_id: read_value::<MaybeUtf8String>(
11821                stream,
11822                definition.get_entry("steamid"),
11823                "steam_id",
11824            )?,
11825            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
11826            kind: read_value::<u16>(stream, definition.get_entry("type"), "kind")?,
11827        })
11828    }
11829    #[allow(unused_variables)]
11830    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11831        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11832        match field {
11833            "steamid" => Ok(self.steam_id.clone().into()),
11834            "text" => Ok(self.text.clone().into()),
11835            "type" => Ok(self.kind.clone().into()),
11836            _ => Err(ParseError::MissingGameEventValue {
11837                ty: "PartyChat",
11838                field: field.into(),
11839            }),
11840        }
11841    }
11842    #[allow(unused_variables)]
11843    fn write(
11844        &self,
11845        stream: &mut BitWriteStream<LittleEndian>,
11846        definition: &GameEventDefinition,
11847    ) -> Result<()> {
11848        for entry in &definition.entries {
11849            let value = self
11850                .get_field(&entry.name)
11851                .unwrap_or_else(|_| entry.kind.default_value());
11852            stream.write(&value)?;
11853        }
11854        Ok(())
11855    }
11856}
11857#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11858#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11859pub struct PartyMemberJoinEvent {
11860    pub steam_id: MaybeUtf8String,
11861}
11862impl PartyMemberJoinEvent {
11863    #[allow(unused_variables)]
11864    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11865        Ok(PartyMemberJoinEvent {
11866            steam_id: read_value::<MaybeUtf8String>(
11867                stream,
11868                definition.get_entry("steamid"),
11869                "steam_id",
11870            )?,
11871        })
11872    }
11873    #[allow(unused_variables)]
11874    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11875        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11876        match field {
11877            "steamid" => Ok(self.steam_id.clone().into()),
11878            _ => Err(ParseError::MissingGameEventValue {
11879                ty: "PartyMemberJoin",
11880                field: field.into(),
11881            }),
11882        }
11883    }
11884    #[allow(unused_variables)]
11885    fn write(
11886        &self,
11887        stream: &mut BitWriteStream<LittleEndian>,
11888        definition: &GameEventDefinition,
11889    ) -> Result<()> {
11890        for entry in &definition.entries {
11891            let value = self
11892                .get_field(&entry.name)
11893                .unwrap_or_else(|_| entry.kind.default_value());
11894            stream.write(&value)?;
11895        }
11896        Ok(())
11897    }
11898}
11899#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11900#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11901pub struct PartyMemberLeaveEvent {
11902    pub steam_id: MaybeUtf8String,
11903}
11904impl PartyMemberLeaveEvent {
11905    #[allow(unused_variables)]
11906    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11907        Ok(PartyMemberLeaveEvent {
11908            steam_id: read_value::<MaybeUtf8String>(
11909                stream,
11910                definition.get_entry("steamid"),
11911                "steam_id",
11912            )?,
11913        })
11914    }
11915    #[allow(unused_variables)]
11916    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11917        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11918        match field {
11919            "steamid" => Ok(self.steam_id.clone().into()),
11920            _ => Err(ParseError::MissingGameEventValue {
11921                ty: "PartyMemberLeave",
11922                field: field.into(),
11923            }),
11924        }
11925    }
11926    #[allow(unused_variables)]
11927    fn write(
11928        &self,
11929        stream: &mut BitWriteStream<LittleEndian>,
11930        definition: &GameEventDefinition,
11931    ) -> Result<()> {
11932        for entry in &definition.entries {
11933            let value = self
11934                .get_field(&entry.name)
11935                .unwrap_or_else(|_| entry.kind.default_value());
11936            stream.write(&value)?;
11937        }
11938        Ok(())
11939    }
11940}
11941#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11942#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11943pub struct MatchInvitesUpdatedEvent {}
11944impl MatchInvitesUpdatedEvent {
11945    #[allow(unused_variables)]
11946    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11947        Ok(MatchInvitesUpdatedEvent {})
11948    }
11949    #[allow(unused_variables)]
11950    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11951        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11952        match field {
11953            _ => Err(ParseError::MissingGameEventValue {
11954                ty: "MatchInvitesUpdated",
11955                field: field.into(),
11956            }),
11957        }
11958    }
11959    #[allow(unused_variables)]
11960    fn write(
11961        &self,
11962        stream: &mut BitWriteStream<LittleEndian>,
11963        definition: &GameEventDefinition,
11964    ) -> Result<()> {
11965        for entry in &definition.entries {
11966            let value = self
11967                .get_field(&entry.name)
11968                .unwrap_or_else(|_| entry.kind.default_value());
11969            stream.write(&value)?;
11970        }
11971        Ok(())
11972    }
11973}
11974#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11975#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
11976pub struct LobbyUpdatedEvent {}
11977impl LobbyUpdatedEvent {
11978    #[allow(unused_variables)]
11979    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
11980        Ok(LobbyUpdatedEvent {})
11981    }
11982    #[allow(unused_variables)]
11983    fn get_field(&self, field: &str) -> Result<GameEventValue> {
11984        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
11985        match field {
11986            _ => Err(ParseError::MissingGameEventValue {
11987                ty: "LobbyUpdated",
11988                field: field.into(),
11989            }),
11990        }
11991    }
11992    #[allow(unused_variables)]
11993    fn write(
11994        &self,
11995        stream: &mut BitWriteStream<LittleEndian>,
11996        definition: &GameEventDefinition,
11997    ) -> Result<()> {
11998        for entry in &definition.entries {
11999            let value = self
12000                .get_field(&entry.name)
12001                .unwrap_or_else(|_| entry.kind.default_value());
12002            stream.write(&value)?;
12003        }
12004        Ok(())
12005    }
12006}
12007#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12008#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12009pub struct MvmMissionUpdateEvent {
12010    pub class: u16,
12011    pub count: u16,
12012}
12013impl MvmMissionUpdateEvent {
12014    #[allow(unused_variables)]
12015    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12016        Ok(MvmMissionUpdateEvent {
12017            class: read_value::<u16>(stream, definition.get_entry("class"), "class")?,
12018            count: read_value::<u16>(stream, definition.get_entry("count"), "count")?,
12019        })
12020    }
12021    #[allow(unused_variables)]
12022    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12023        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12024        match field {
12025            "class" => Ok(self.class.clone().into()),
12026            "count" => Ok(self.count.clone().into()),
12027            _ => Err(ParseError::MissingGameEventValue {
12028                ty: "MvmMissionUpdate",
12029                field: field.into(),
12030            }),
12031        }
12032    }
12033    #[allow(unused_variables)]
12034    fn write(
12035        &self,
12036        stream: &mut BitWriteStream<LittleEndian>,
12037        definition: &GameEventDefinition,
12038    ) -> Result<()> {
12039        for entry in &definition.entries {
12040            let value = self
12041                .get_field(&entry.name)
12042                .unwrap_or_else(|_| entry.kind.default_value());
12043            stream.write(&value)?;
12044        }
12045        Ok(())
12046    }
12047}
12048#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12049#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12050pub struct RecalculateHolidaysEvent {}
12051impl RecalculateHolidaysEvent {
12052    #[allow(unused_variables)]
12053    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12054        Ok(RecalculateHolidaysEvent {})
12055    }
12056    #[allow(unused_variables)]
12057    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12058        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12059        match field {
12060            _ => Err(ParseError::MissingGameEventValue {
12061                ty: "RecalculateHolidays",
12062                field: field.into(),
12063            }),
12064        }
12065    }
12066    #[allow(unused_variables)]
12067    fn write(
12068        &self,
12069        stream: &mut BitWriteStream<LittleEndian>,
12070        definition: &GameEventDefinition,
12071    ) -> Result<()> {
12072        for entry in &definition.entries {
12073            let value = self
12074                .get_field(&entry.name)
12075                .unwrap_or_else(|_| entry.kind.default_value());
12076            stream.write(&value)?;
12077        }
12078        Ok(())
12079    }
12080}
12081#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12082#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12083pub struct PlayerCurrencyChangedEvent {
12084    pub currency: u16,
12085}
12086impl PlayerCurrencyChangedEvent {
12087    #[allow(unused_variables)]
12088    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12089        Ok(PlayerCurrencyChangedEvent {
12090            currency: read_value::<u16>(stream, definition.get_entry("currency"), "currency")?,
12091        })
12092    }
12093    #[allow(unused_variables)]
12094    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12095        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12096        match field {
12097            "currency" => Ok(self.currency.clone().into()),
12098            _ => Err(ParseError::MissingGameEventValue {
12099                ty: "PlayerCurrencyChanged",
12100                field: field.into(),
12101            }),
12102        }
12103    }
12104    #[allow(unused_variables)]
12105    fn write(
12106        &self,
12107        stream: &mut BitWriteStream<LittleEndian>,
12108        definition: &GameEventDefinition,
12109    ) -> Result<()> {
12110        for entry in &definition.entries {
12111            let value = self
12112                .get_field(&entry.name)
12113                .unwrap_or_else(|_| entry.kind.default_value());
12114            stream.write(&value)?;
12115        }
12116        Ok(())
12117    }
12118}
12119#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12120#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12121pub struct DoomsdayRocketOpenEvent {
12122    pub team: u8,
12123}
12124impl DoomsdayRocketOpenEvent {
12125    #[allow(unused_variables)]
12126    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12127        Ok(DoomsdayRocketOpenEvent {
12128            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
12129        })
12130    }
12131    #[allow(unused_variables)]
12132    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12133        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12134        match field {
12135            "team" => Ok(self.team.clone().into()),
12136            _ => Err(ParseError::MissingGameEventValue {
12137                ty: "DoomsdayRocketOpen",
12138                field: field.into(),
12139            }),
12140        }
12141    }
12142    #[allow(unused_variables)]
12143    fn write(
12144        &self,
12145        stream: &mut BitWriteStream<LittleEndian>,
12146        definition: &GameEventDefinition,
12147    ) -> Result<()> {
12148        for entry in &definition.entries {
12149            let value = self
12150                .get_field(&entry.name)
12151                .unwrap_or_else(|_| entry.kind.default_value());
12152            stream.write(&value)?;
12153        }
12154        Ok(())
12155    }
12156}
12157#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12158#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12159pub struct RemoveNemesisRelationshipsEvent {
12160    pub player: u16,
12161}
12162impl RemoveNemesisRelationshipsEvent {
12163    #[allow(unused_variables)]
12164    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12165        Ok(RemoveNemesisRelationshipsEvent {
12166            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12167        })
12168    }
12169    #[allow(unused_variables)]
12170    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12171        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12172        match field {
12173            "player" => Ok(self.player.clone().into()),
12174            _ => Err(ParseError::MissingGameEventValue {
12175                ty: "RemoveNemesisRelationships",
12176                field: field.into(),
12177            }),
12178        }
12179    }
12180    #[allow(unused_variables)]
12181    fn write(
12182        &self,
12183        stream: &mut BitWriteStream<LittleEndian>,
12184        definition: &GameEventDefinition,
12185    ) -> Result<()> {
12186        for entry in &definition.entries {
12187            let value = self
12188                .get_field(&entry.name)
12189                .unwrap_or_else(|_| entry.kind.default_value());
12190            stream.write(&value)?;
12191        }
12192        Ok(())
12193    }
12194}
12195#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12196#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12197pub struct MvmCreditBonusWaveEvent {}
12198impl MvmCreditBonusWaveEvent {
12199    #[allow(unused_variables)]
12200    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12201        Ok(MvmCreditBonusWaveEvent {})
12202    }
12203    #[allow(unused_variables)]
12204    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12205        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12206        match field {
12207            _ => Err(ParseError::MissingGameEventValue {
12208                ty: "MvmCreditBonusWave",
12209                field: field.into(),
12210            }),
12211        }
12212    }
12213    #[allow(unused_variables)]
12214    fn write(
12215        &self,
12216        stream: &mut BitWriteStream<LittleEndian>,
12217        definition: &GameEventDefinition,
12218    ) -> Result<()> {
12219        for entry in &definition.entries {
12220            let value = self
12221                .get_field(&entry.name)
12222                .unwrap_or_else(|_| entry.kind.default_value());
12223            stream.write(&value)?;
12224        }
12225        Ok(())
12226    }
12227}
12228#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12229#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12230pub struct MvmCreditBonusAllEvent {}
12231impl MvmCreditBonusAllEvent {
12232    #[allow(unused_variables)]
12233    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12234        Ok(MvmCreditBonusAllEvent {})
12235    }
12236    #[allow(unused_variables)]
12237    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12238        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12239        match field {
12240            _ => Err(ParseError::MissingGameEventValue {
12241                ty: "MvmCreditBonusAll",
12242                field: field.into(),
12243            }),
12244        }
12245    }
12246    #[allow(unused_variables)]
12247    fn write(
12248        &self,
12249        stream: &mut BitWriteStream<LittleEndian>,
12250        definition: &GameEventDefinition,
12251    ) -> Result<()> {
12252        for entry in &definition.entries {
12253            let value = self
12254                .get_field(&entry.name)
12255                .unwrap_or_else(|_| entry.kind.default_value());
12256            stream.write(&value)?;
12257        }
12258        Ok(())
12259    }
12260}
12261#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12262#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12263pub struct MvmCreditBonusAllAdvancedEvent {}
12264impl MvmCreditBonusAllAdvancedEvent {
12265    #[allow(unused_variables)]
12266    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12267        Ok(MvmCreditBonusAllAdvancedEvent {})
12268    }
12269    #[allow(unused_variables)]
12270    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12271        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12272        match field {
12273            _ => Err(ParseError::MissingGameEventValue {
12274                ty: "MvmCreditBonusAllAdvanced",
12275                field: field.into(),
12276            }),
12277        }
12278    }
12279    #[allow(unused_variables)]
12280    fn write(
12281        &self,
12282        stream: &mut BitWriteStream<LittleEndian>,
12283        definition: &GameEventDefinition,
12284    ) -> Result<()> {
12285        for entry in &definition.entries {
12286            let value = self
12287                .get_field(&entry.name)
12288                .unwrap_or_else(|_| entry.kind.default_value());
12289            stream.write(&value)?;
12290        }
12291        Ok(())
12292    }
12293}
12294#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12295#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12296pub struct MvmQuickSentryUpgradeEvent {
12297    pub player: u16,
12298}
12299impl MvmQuickSentryUpgradeEvent {
12300    #[allow(unused_variables)]
12301    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12302        Ok(MvmQuickSentryUpgradeEvent {
12303            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12304        })
12305    }
12306    #[allow(unused_variables)]
12307    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12308        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12309        match field {
12310            "player" => Ok(self.player.clone().into()),
12311            _ => Err(ParseError::MissingGameEventValue {
12312                ty: "MvmQuickSentryUpgrade",
12313                field: field.into(),
12314            }),
12315        }
12316    }
12317    #[allow(unused_variables)]
12318    fn write(
12319        &self,
12320        stream: &mut BitWriteStream<LittleEndian>,
12321        definition: &GameEventDefinition,
12322    ) -> Result<()> {
12323        for entry in &definition.entries {
12324            let value = self
12325                .get_field(&entry.name)
12326                .unwrap_or_else(|_| entry.kind.default_value());
12327            stream.write(&value)?;
12328        }
12329        Ok(())
12330    }
12331}
12332#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12333#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12334pub struct MvmTankDestroyedByPlayersEvent {}
12335impl MvmTankDestroyedByPlayersEvent {
12336    #[allow(unused_variables)]
12337    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12338        Ok(MvmTankDestroyedByPlayersEvent {})
12339    }
12340    #[allow(unused_variables)]
12341    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12342        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12343        match field {
12344            _ => Err(ParseError::MissingGameEventValue {
12345                ty: "MvmTankDestroyedByPlayers",
12346                field: field.into(),
12347            }),
12348        }
12349    }
12350    #[allow(unused_variables)]
12351    fn write(
12352        &self,
12353        stream: &mut BitWriteStream<LittleEndian>,
12354        definition: &GameEventDefinition,
12355    ) -> Result<()> {
12356        for entry in &definition.entries {
12357            let value = self
12358                .get_field(&entry.name)
12359                .unwrap_or_else(|_| entry.kind.default_value());
12360            stream.write(&value)?;
12361        }
12362        Ok(())
12363    }
12364}
12365#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12366#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12367pub struct MvmKillRobotDeliveringBombEvent {
12368    pub player: u16,
12369}
12370impl MvmKillRobotDeliveringBombEvent {
12371    #[allow(unused_variables)]
12372    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12373        Ok(MvmKillRobotDeliveringBombEvent {
12374            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12375        })
12376    }
12377    #[allow(unused_variables)]
12378    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12379        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12380        match field {
12381            "player" => Ok(self.player.clone().into()),
12382            _ => Err(ParseError::MissingGameEventValue {
12383                ty: "MvmKillRobotDeliveringBomb",
12384                field: field.into(),
12385            }),
12386        }
12387    }
12388    #[allow(unused_variables)]
12389    fn write(
12390        &self,
12391        stream: &mut BitWriteStream<LittleEndian>,
12392        definition: &GameEventDefinition,
12393    ) -> Result<()> {
12394        for entry in &definition.entries {
12395            let value = self
12396                .get_field(&entry.name)
12397                .unwrap_or_else(|_| entry.kind.default_value());
12398            stream.write(&value)?;
12399        }
12400        Ok(())
12401    }
12402}
12403#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12404#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12405pub struct MvmPickupCurrencyEvent {
12406    pub player: u16,
12407    pub currency: u16,
12408}
12409impl MvmPickupCurrencyEvent {
12410    #[allow(unused_variables)]
12411    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12412        Ok(MvmPickupCurrencyEvent {
12413            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12414            currency: read_value::<u16>(stream, definition.get_entry("currency"), "currency")?,
12415        })
12416    }
12417    #[allow(unused_variables)]
12418    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12419        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12420        match field {
12421            "player" => Ok(self.player.clone().into()),
12422            "currency" => Ok(self.currency.clone().into()),
12423            _ => Err(ParseError::MissingGameEventValue {
12424                ty: "MvmPickupCurrency",
12425                field: field.into(),
12426            }),
12427        }
12428    }
12429    #[allow(unused_variables)]
12430    fn write(
12431        &self,
12432        stream: &mut BitWriteStream<LittleEndian>,
12433        definition: &GameEventDefinition,
12434    ) -> Result<()> {
12435        for entry in &definition.entries {
12436            let value = self
12437                .get_field(&entry.name)
12438                .unwrap_or_else(|_| entry.kind.default_value());
12439            stream.write(&value)?;
12440        }
12441        Ok(())
12442    }
12443}
12444#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12445#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12446pub struct MvmBombCarrierKilledEvent {
12447    pub level: u16,
12448}
12449impl MvmBombCarrierKilledEvent {
12450    #[allow(unused_variables)]
12451    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12452        Ok(MvmBombCarrierKilledEvent {
12453            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
12454        })
12455    }
12456    #[allow(unused_variables)]
12457    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12458        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12459        match field {
12460            "level" => Ok(self.level.clone().into()),
12461            _ => Err(ParseError::MissingGameEventValue {
12462                ty: "MvmBombCarrierKilled",
12463                field: field.into(),
12464            }),
12465        }
12466    }
12467    #[allow(unused_variables)]
12468    fn write(
12469        &self,
12470        stream: &mut BitWriteStream<LittleEndian>,
12471        definition: &GameEventDefinition,
12472    ) -> Result<()> {
12473        for entry in &definition.entries {
12474            let value = self
12475                .get_field(&entry.name)
12476                .unwrap_or_else(|_| entry.kind.default_value());
12477            stream.write(&value)?;
12478        }
12479        Ok(())
12480    }
12481}
12482#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12483#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12484pub struct MvmSentryBusterDetonateEvent {
12485    pub player: u16,
12486    pub det_x: f32,
12487    pub det_y: f32,
12488    pub det_z: f32,
12489}
12490impl MvmSentryBusterDetonateEvent {
12491    #[allow(unused_variables)]
12492    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12493        Ok(MvmSentryBusterDetonateEvent {
12494            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12495            det_x: read_value::<f32>(stream, definition.get_entry("det_x"), "det_x")?,
12496            det_y: read_value::<f32>(stream, definition.get_entry("det_y"), "det_y")?,
12497            det_z: read_value::<f32>(stream, definition.get_entry("det_z"), "det_z")?,
12498        })
12499    }
12500    #[allow(unused_variables)]
12501    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12502        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12503        match field {
12504            "player" => Ok(self.player.clone().into()),
12505            "det_x" => Ok(self.det_x.clone().into()),
12506            "det_y" => Ok(self.det_y.clone().into()),
12507            "det_z" => Ok(self.det_z.clone().into()),
12508            _ => Err(ParseError::MissingGameEventValue {
12509                ty: "MvmSentryBusterDetonate",
12510                field: field.into(),
12511            }),
12512        }
12513    }
12514    #[allow(unused_variables)]
12515    fn write(
12516        &self,
12517        stream: &mut BitWriteStream<LittleEndian>,
12518        definition: &GameEventDefinition,
12519    ) -> Result<()> {
12520        for entry in &definition.entries {
12521            let value = self
12522                .get_field(&entry.name)
12523                .unwrap_or_else(|_| entry.kind.default_value());
12524            stream.write(&value)?;
12525        }
12526        Ok(())
12527    }
12528}
12529#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12530#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12531pub struct MvmScoutMarkedForDeathEvent {
12532    pub player: u16,
12533}
12534impl MvmScoutMarkedForDeathEvent {
12535    #[allow(unused_variables)]
12536    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12537        Ok(MvmScoutMarkedForDeathEvent {
12538            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12539        })
12540    }
12541    #[allow(unused_variables)]
12542    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12543        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12544        match field {
12545            "player" => Ok(self.player.clone().into()),
12546            _ => Err(ParseError::MissingGameEventValue {
12547                ty: "MvmScoutMarkedForDeath",
12548                field: field.into(),
12549            }),
12550        }
12551    }
12552    #[allow(unused_variables)]
12553    fn write(
12554        &self,
12555        stream: &mut BitWriteStream<LittleEndian>,
12556        definition: &GameEventDefinition,
12557    ) -> Result<()> {
12558        for entry in &definition.entries {
12559            let value = self
12560                .get_field(&entry.name)
12561                .unwrap_or_else(|_| entry.kind.default_value());
12562            stream.write(&value)?;
12563        }
12564        Ok(())
12565    }
12566}
12567#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12568#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12569pub struct MvmMedicPowerUpSharedEvent {
12570    pub player: u16,
12571}
12572impl MvmMedicPowerUpSharedEvent {
12573    #[allow(unused_variables)]
12574    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12575        Ok(MvmMedicPowerUpSharedEvent {
12576            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12577        })
12578    }
12579    #[allow(unused_variables)]
12580    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12581        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12582        match field {
12583            "player" => Ok(self.player.clone().into()),
12584            _ => Err(ParseError::MissingGameEventValue {
12585                ty: "MvmMedicPowerUpShared",
12586                field: field.into(),
12587            }),
12588        }
12589    }
12590    #[allow(unused_variables)]
12591    fn write(
12592        &self,
12593        stream: &mut BitWriteStream<LittleEndian>,
12594        definition: &GameEventDefinition,
12595    ) -> Result<()> {
12596        for entry in &definition.entries {
12597            let value = self
12598                .get_field(&entry.name)
12599                .unwrap_or_else(|_| entry.kind.default_value());
12600            stream.write(&value)?;
12601        }
12602        Ok(())
12603    }
12604}
12605#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12606#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12607pub struct MvmBeginWaveEvent {
12608    pub wave_index: u16,
12609    pub max_waves: u16,
12610    pub advanced: u16,
12611}
12612impl MvmBeginWaveEvent {
12613    #[allow(unused_variables)]
12614    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12615        Ok(MvmBeginWaveEvent {
12616            wave_index: read_value::<u16>(
12617                stream,
12618                definition.get_entry("wave_index"),
12619                "wave_index",
12620            )?,
12621            max_waves: read_value::<u16>(stream, definition.get_entry("max_waves"), "max_waves")?,
12622            advanced: read_value::<u16>(stream, definition.get_entry("advanced"), "advanced")?,
12623        })
12624    }
12625    #[allow(unused_variables)]
12626    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12627        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12628        match field {
12629            "wave_index" => Ok(self.wave_index.clone().into()),
12630            "max_waves" => Ok(self.max_waves.clone().into()),
12631            "advanced" => Ok(self.advanced.clone().into()),
12632            _ => Err(ParseError::MissingGameEventValue {
12633                ty: "MvmBeginWave",
12634                field: field.into(),
12635            }),
12636        }
12637    }
12638    #[allow(unused_variables)]
12639    fn write(
12640        &self,
12641        stream: &mut BitWriteStream<LittleEndian>,
12642        definition: &GameEventDefinition,
12643    ) -> Result<()> {
12644        for entry in &definition.entries {
12645            let value = self
12646                .get_field(&entry.name)
12647                .unwrap_or_else(|_| entry.kind.default_value());
12648            stream.write(&value)?;
12649        }
12650        Ok(())
12651    }
12652}
12653#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12654#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12655pub struct MvmWaveCompleteEvent {
12656    pub advanced: bool,
12657}
12658impl MvmWaveCompleteEvent {
12659    #[allow(unused_variables)]
12660    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12661        Ok(MvmWaveCompleteEvent {
12662            advanced: read_value::<bool>(stream, definition.get_entry("advanced"), "advanced")?,
12663        })
12664    }
12665    #[allow(unused_variables)]
12666    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12667        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12668        match field {
12669            "advanced" => Ok(self.advanced.clone().into()),
12670            _ => Err(ParseError::MissingGameEventValue {
12671                ty: "MvmWaveComplete",
12672                field: field.into(),
12673            }),
12674        }
12675    }
12676    #[allow(unused_variables)]
12677    fn write(
12678        &self,
12679        stream: &mut BitWriteStream<LittleEndian>,
12680        definition: &GameEventDefinition,
12681    ) -> Result<()> {
12682        for entry in &definition.entries {
12683            let value = self
12684                .get_field(&entry.name)
12685                .unwrap_or_else(|_| entry.kind.default_value());
12686            stream.write(&value)?;
12687        }
12688        Ok(())
12689    }
12690}
12691#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12692#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12693pub struct MvmMissionCompleteEvent {
12694    pub mission: MaybeUtf8String,
12695}
12696impl MvmMissionCompleteEvent {
12697    #[allow(unused_variables)]
12698    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12699        Ok(MvmMissionCompleteEvent {
12700            mission: read_value::<MaybeUtf8String>(
12701                stream,
12702                definition.get_entry("mission"),
12703                "mission",
12704            )?,
12705        })
12706    }
12707    #[allow(unused_variables)]
12708    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12709        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12710        match field {
12711            "mission" => Ok(self.mission.clone().into()),
12712            _ => Err(ParseError::MissingGameEventValue {
12713                ty: "MvmMissionComplete",
12714                field: field.into(),
12715            }),
12716        }
12717    }
12718    #[allow(unused_variables)]
12719    fn write(
12720        &self,
12721        stream: &mut BitWriteStream<LittleEndian>,
12722        definition: &GameEventDefinition,
12723    ) -> Result<()> {
12724        for entry in &definition.entries {
12725            let value = self
12726                .get_field(&entry.name)
12727                .unwrap_or_else(|_| entry.kind.default_value());
12728            stream.write(&value)?;
12729        }
12730        Ok(())
12731    }
12732}
12733#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12734#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12735pub struct MvmBombResetByPlayerEvent {
12736    pub player: u16,
12737}
12738impl MvmBombResetByPlayerEvent {
12739    #[allow(unused_variables)]
12740    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12741        Ok(MvmBombResetByPlayerEvent {
12742            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12743        })
12744    }
12745    #[allow(unused_variables)]
12746    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12747        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12748        match field {
12749            "player" => Ok(self.player.clone().into()),
12750            _ => Err(ParseError::MissingGameEventValue {
12751                ty: "MvmBombResetByPlayer",
12752                field: field.into(),
12753            }),
12754        }
12755    }
12756    #[allow(unused_variables)]
12757    fn write(
12758        &self,
12759        stream: &mut BitWriteStream<LittleEndian>,
12760        definition: &GameEventDefinition,
12761    ) -> Result<()> {
12762        for entry in &definition.entries {
12763            let value = self
12764                .get_field(&entry.name)
12765                .unwrap_or_else(|_| entry.kind.default_value());
12766            stream.write(&value)?;
12767        }
12768        Ok(())
12769    }
12770}
12771#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12772#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12773pub struct MvmBombAlarmTriggeredEvent {}
12774impl MvmBombAlarmTriggeredEvent {
12775    #[allow(unused_variables)]
12776    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12777        Ok(MvmBombAlarmTriggeredEvent {})
12778    }
12779    #[allow(unused_variables)]
12780    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12781        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12782        match field {
12783            _ => Err(ParseError::MissingGameEventValue {
12784                ty: "MvmBombAlarmTriggered",
12785                field: field.into(),
12786            }),
12787        }
12788    }
12789    #[allow(unused_variables)]
12790    fn write(
12791        &self,
12792        stream: &mut BitWriteStream<LittleEndian>,
12793        definition: &GameEventDefinition,
12794    ) -> Result<()> {
12795        for entry in &definition.entries {
12796            let value = self
12797                .get_field(&entry.name)
12798                .unwrap_or_else(|_| entry.kind.default_value());
12799            stream.write(&value)?;
12800        }
12801        Ok(())
12802    }
12803}
12804#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12805#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12806pub struct MvmBombDeployResetByPlayerEvent {
12807    pub player: u16,
12808}
12809impl MvmBombDeployResetByPlayerEvent {
12810    #[allow(unused_variables)]
12811    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12812        Ok(MvmBombDeployResetByPlayerEvent {
12813            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
12814        })
12815    }
12816    #[allow(unused_variables)]
12817    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12818        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12819        match field {
12820            "player" => Ok(self.player.clone().into()),
12821            _ => Err(ParseError::MissingGameEventValue {
12822                ty: "MvmBombDeployResetByPlayer",
12823                field: field.into(),
12824            }),
12825        }
12826    }
12827    #[allow(unused_variables)]
12828    fn write(
12829        &self,
12830        stream: &mut BitWriteStream<LittleEndian>,
12831        definition: &GameEventDefinition,
12832    ) -> Result<()> {
12833        for entry in &definition.entries {
12834            let value = self
12835                .get_field(&entry.name)
12836                .unwrap_or_else(|_| entry.kind.default_value());
12837            stream.write(&value)?;
12838        }
12839        Ok(())
12840    }
12841}
12842#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12843#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12844pub struct MvmWaveFailedEvent {}
12845impl MvmWaveFailedEvent {
12846    #[allow(unused_variables)]
12847    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12848        Ok(MvmWaveFailedEvent {})
12849    }
12850    #[allow(unused_variables)]
12851    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12852        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12853        match field {
12854            _ => Err(ParseError::MissingGameEventValue {
12855                ty: "MvmWaveFailed",
12856                field: field.into(),
12857            }),
12858        }
12859    }
12860    #[allow(unused_variables)]
12861    fn write(
12862        &self,
12863        stream: &mut BitWriteStream<LittleEndian>,
12864        definition: &GameEventDefinition,
12865    ) -> Result<()> {
12866        for entry in &definition.entries {
12867            let value = self
12868                .get_field(&entry.name)
12869                .unwrap_or_else(|_| entry.kind.default_value());
12870            stream.write(&value)?;
12871        }
12872        Ok(())
12873    }
12874}
12875#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12876#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12877pub struct MvmResetStatsEvent {}
12878impl MvmResetStatsEvent {
12879    #[allow(unused_variables)]
12880    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12881        Ok(MvmResetStatsEvent {})
12882    }
12883    #[allow(unused_variables)]
12884    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12885        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12886        match field {
12887            _ => Err(ParseError::MissingGameEventValue {
12888                ty: "MvmResetStats",
12889                field: field.into(),
12890            }),
12891        }
12892    }
12893    #[allow(unused_variables)]
12894    fn write(
12895        &self,
12896        stream: &mut BitWriteStream<LittleEndian>,
12897        definition: &GameEventDefinition,
12898    ) -> Result<()> {
12899        for entry in &definition.entries {
12900            let value = self
12901                .get_field(&entry.name)
12902                .unwrap_or_else(|_| entry.kind.default_value());
12903            stream.write(&value)?;
12904        }
12905        Ok(())
12906    }
12907}
12908#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12909#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12910pub struct DamageResistedEvent {
12911    pub ent_index: u8,
12912}
12913impl DamageResistedEvent {
12914    #[allow(unused_variables)]
12915    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12916        Ok(DamageResistedEvent {
12917            ent_index: read_value::<u8>(stream, definition.get_entry("entindex"), "ent_index")?,
12918        })
12919    }
12920    #[allow(unused_variables)]
12921    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12922        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12923        match field {
12924            "entindex" => Ok(self.ent_index.clone().into()),
12925            _ => Err(ParseError::MissingGameEventValue {
12926                ty: "DamageResisted",
12927                field: field.into(),
12928            }),
12929        }
12930    }
12931    #[allow(unused_variables)]
12932    fn write(
12933        &self,
12934        stream: &mut BitWriteStream<LittleEndian>,
12935        definition: &GameEventDefinition,
12936    ) -> Result<()> {
12937        for entry in &definition.entries {
12938            let value = self
12939                .get_field(&entry.name)
12940                .unwrap_or_else(|_| entry.kind.default_value());
12941            stream.write(&value)?;
12942        }
12943        Ok(())
12944    }
12945}
12946#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12947#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12948pub struct RevivePlayerNotifyEvent {
12949    pub ent_index: u16,
12950    pub marker_ent_index: u16,
12951}
12952impl RevivePlayerNotifyEvent {
12953    #[allow(unused_variables)]
12954    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12955        Ok(RevivePlayerNotifyEvent {
12956            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
12957            marker_ent_index: read_value::<u16>(
12958                stream,
12959                definition.get_entry("marker_entindex"),
12960                "marker_ent_index",
12961            )?,
12962        })
12963    }
12964    #[allow(unused_variables)]
12965    fn get_field(&self, field: &str) -> Result<GameEventValue> {
12966        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
12967        match field {
12968            "entindex" => Ok(self.ent_index.clone().into()),
12969            "marker_entindex" => Ok(self.marker_ent_index.clone().into()),
12970            _ => Err(ParseError::MissingGameEventValue {
12971                ty: "RevivePlayerNotify",
12972                field: field.into(),
12973            }),
12974        }
12975    }
12976    #[allow(unused_variables)]
12977    fn write(
12978        &self,
12979        stream: &mut BitWriteStream<LittleEndian>,
12980        definition: &GameEventDefinition,
12981    ) -> Result<()> {
12982        for entry in &definition.entries {
12983            let value = self
12984                .get_field(&entry.name)
12985                .unwrap_or_else(|_| entry.kind.default_value());
12986            stream.write(&value)?;
12987        }
12988        Ok(())
12989    }
12990}
12991#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12992#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12993pub struct RevivePlayerStoppedEvent {
12994    pub ent_index: u16,
12995}
12996impl RevivePlayerStoppedEvent {
12997    #[allow(unused_variables)]
12998    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
12999        Ok(RevivePlayerStoppedEvent {
13000            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
13001        })
13002    }
13003    #[allow(unused_variables)]
13004    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13005        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13006        match field {
13007            "entindex" => Ok(self.ent_index.clone().into()),
13008            _ => Err(ParseError::MissingGameEventValue {
13009                ty: "RevivePlayerStopped",
13010                field: field.into(),
13011            }),
13012        }
13013    }
13014    #[allow(unused_variables)]
13015    fn write(
13016        &self,
13017        stream: &mut BitWriteStream<LittleEndian>,
13018        definition: &GameEventDefinition,
13019    ) -> Result<()> {
13020        for entry in &definition.entries {
13021            let value = self
13022                .get_field(&entry.name)
13023                .unwrap_or_else(|_| entry.kind.default_value());
13024            stream.write(&value)?;
13025        }
13026        Ok(())
13027    }
13028}
13029#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13030#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13031pub struct RevivePlayerCompleteEvent {
13032    pub ent_index: u16,
13033}
13034impl RevivePlayerCompleteEvent {
13035    #[allow(unused_variables)]
13036    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13037        Ok(RevivePlayerCompleteEvent {
13038            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
13039        })
13040    }
13041    #[allow(unused_variables)]
13042    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13043        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13044        match field {
13045            "entindex" => Ok(self.ent_index.clone().into()),
13046            _ => Err(ParseError::MissingGameEventValue {
13047                ty: "RevivePlayerComplete",
13048                field: field.into(),
13049            }),
13050        }
13051    }
13052    #[allow(unused_variables)]
13053    fn write(
13054        &self,
13055        stream: &mut BitWriteStream<LittleEndian>,
13056        definition: &GameEventDefinition,
13057    ) -> Result<()> {
13058        for entry in &definition.entries {
13059            let value = self
13060                .get_field(&entry.name)
13061                .unwrap_or_else(|_| entry.kind.default_value());
13062            stream.write(&value)?;
13063        }
13064        Ok(())
13065    }
13066}
13067#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13068#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13069pub struct PlayerTurnedToGhostEvent {
13070    pub user_id: u16,
13071}
13072impl PlayerTurnedToGhostEvent {
13073    #[allow(unused_variables)]
13074    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13075        Ok(PlayerTurnedToGhostEvent {
13076            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
13077        })
13078    }
13079    #[allow(unused_variables)]
13080    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13081        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13082        match field {
13083            "userid" => Ok(self.user_id.clone().into()),
13084            _ => Err(ParseError::MissingGameEventValue {
13085                ty: "PlayerTurnedToGhost",
13086                field: field.into(),
13087            }),
13088        }
13089    }
13090    #[allow(unused_variables)]
13091    fn write(
13092        &self,
13093        stream: &mut BitWriteStream<LittleEndian>,
13094        definition: &GameEventDefinition,
13095    ) -> Result<()> {
13096        for entry in &definition.entries {
13097            let value = self
13098                .get_field(&entry.name)
13099                .unwrap_or_else(|_| entry.kind.default_value());
13100            stream.write(&value)?;
13101        }
13102        Ok(())
13103    }
13104}
13105#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13106#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13107pub struct MedigunShieldBlockedDamageEvent {
13108    pub user_id: u16,
13109    pub damage: f32,
13110}
13111impl MedigunShieldBlockedDamageEvent {
13112    #[allow(unused_variables)]
13113    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13114        Ok(MedigunShieldBlockedDamageEvent {
13115            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
13116            damage: read_value::<f32>(stream, definition.get_entry("damage"), "damage")?,
13117        })
13118    }
13119    #[allow(unused_variables)]
13120    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13121        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13122        match field {
13123            "userid" => Ok(self.user_id.clone().into()),
13124            "damage" => Ok(self.damage.clone().into()),
13125            _ => Err(ParseError::MissingGameEventValue {
13126                ty: "MedigunShieldBlockedDamage",
13127                field: field.into(),
13128            }),
13129        }
13130    }
13131    #[allow(unused_variables)]
13132    fn write(
13133        &self,
13134        stream: &mut BitWriteStream<LittleEndian>,
13135        definition: &GameEventDefinition,
13136    ) -> Result<()> {
13137        for entry in &definition.entries {
13138            let value = self
13139                .get_field(&entry.name)
13140                .unwrap_or_else(|_| entry.kind.default_value());
13141            stream.write(&value)?;
13142        }
13143        Ok(())
13144    }
13145}
13146#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13147#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13148pub struct MvmAdvWaveCompleteNoGatesEvent {
13149    pub index: u16,
13150}
13151impl MvmAdvWaveCompleteNoGatesEvent {
13152    #[allow(unused_variables)]
13153    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13154        Ok(MvmAdvWaveCompleteNoGatesEvent {
13155            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13156        })
13157    }
13158    #[allow(unused_variables)]
13159    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13160        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13161        match field {
13162            "index" => Ok(self.index.clone().into()),
13163            _ => Err(ParseError::MissingGameEventValue {
13164                ty: "MvmAdvWaveCompleteNoGates",
13165                field: field.into(),
13166            }),
13167        }
13168    }
13169    #[allow(unused_variables)]
13170    fn write(
13171        &self,
13172        stream: &mut BitWriteStream<LittleEndian>,
13173        definition: &GameEventDefinition,
13174    ) -> Result<()> {
13175        for entry in &definition.entries {
13176            let value = self
13177                .get_field(&entry.name)
13178                .unwrap_or_else(|_| entry.kind.default_value());
13179            stream.write(&value)?;
13180        }
13181        Ok(())
13182    }
13183}
13184#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13185#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13186pub struct MvmSniperHeadshotCurrencyEvent {
13187    pub user_id: u16,
13188    pub currency: u16,
13189}
13190impl MvmSniperHeadshotCurrencyEvent {
13191    #[allow(unused_variables)]
13192    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13193        Ok(MvmSniperHeadshotCurrencyEvent {
13194            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
13195            currency: read_value::<u16>(stream, definition.get_entry("currency"), "currency")?,
13196        })
13197    }
13198    #[allow(unused_variables)]
13199    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13200        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13201        match field {
13202            "userid" => Ok(self.user_id.clone().into()),
13203            "currency" => Ok(self.currency.clone().into()),
13204            _ => Err(ParseError::MissingGameEventValue {
13205                ty: "MvmSniperHeadshotCurrency",
13206                field: field.into(),
13207            }),
13208        }
13209    }
13210    #[allow(unused_variables)]
13211    fn write(
13212        &self,
13213        stream: &mut BitWriteStream<LittleEndian>,
13214        definition: &GameEventDefinition,
13215    ) -> Result<()> {
13216        for entry in &definition.entries {
13217            let value = self
13218                .get_field(&entry.name)
13219                .unwrap_or_else(|_| entry.kind.default_value());
13220            stream.write(&value)?;
13221        }
13222        Ok(())
13223    }
13224}
13225#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13226#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13227pub struct MvmMannhattanPitEvent {}
13228impl MvmMannhattanPitEvent {
13229    #[allow(unused_variables)]
13230    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13231        Ok(MvmMannhattanPitEvent {})
13232    }
13233    #[allow(unused_variables)]
13234    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13235        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13236        match field {
13237            _ => Err(ParseError::MissingGameEventValue {
13238                ty: "MvmMannhattanPit",
13239                field: field.into(),
13240            }),
13241        }
13242    }
13243    #[allow(unused_variables)]
13244    fn write(
13245        &self,
13246        stream: &mut BitWriteStream<LittleEndian>,
13247        definition: &GameEventDefinition,
13248    ) -> Result<()> {
13249        for entry in &definition.entries {
13250            let value = self
13251                .get_field(&entry.name)
13252                .unwrap_or_else(|_| entry.kind.default_value());
13253            stream.write(&value)?;
13254        }
13255        Ok(())
13256    }
13257}
13258#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13259#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13260pub struct FlagCarriedInDetectionZoneEvent {}
13261impl FlagCarriedInDetectionZoneEvent {
13262    #[allow(unused_variables)]
13263    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13264        Ok(FlagCarriedInDetectionZoneEvent {})
13265    }
13266    #[allow(unused_variables)]
13267    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13268        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13269        match field {
13270            _ => Err(ParseError::MissingGameEventValue {
13271                ty: "FlagCarriedInDetectionZone",
13272                field: field.into(),
13273            }),
13274        }
13275    }
13276    #[allow(unused_variables)]
13277    fn write(
13278        &self,
13279        stream: &mut BitWriteStream<LittleEndian>,
13280        definition: &GameEventDefinition,
13281    ) -> Result<()> {
13282        for entry in &definition.entries {
13283            let value = self
13284                .get_field(&entry.name)
13285                .unwrap_or_else(|_| entry.kind.default_value());
13286            stream.write(&value)?;
13287        }
13288        Ok(())
13289    }
13290}
13291#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13292#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13293pub struct MvmAdvWaveKilledStunRadioEvent {}
13294impl MvmAdvWaveKilledStunRadioEvent {
13295    #[allow(unused_variables)]
13296    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13297        Ok(MvmAdvWaveKilledStunRadioEvent {})
13298    }
13299    #[allow(unused_variables)]
13300    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13301        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13302        match field {
13303            _ => Err(ParseError::MissingGameEventValue {
13304                ty: "MvmAdvWaveKilledStunRadio",
13305                field: field.into(),
13306            }),
13307        }
13308    }
13309    #[allow(unused_variables)]
13310    fn write(
13311        &self,
13312        stream: &mut BitWriteStream<LittleEndian>,
13313        definition: &GameEventDefinition,
13314    ) -> Result<()> {
13315        for entry in &definition.entries {
13316            let value = self
13317                .get_field(&entry.name)
13318                .unwrap_or_else(|_| entry.kind.default_value());
13319            stream.write(&value)?;
13320        }
13321        Ok(())
13322    }
13323}
13324#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13325#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13326pub struct PlayerDirectHitStunEvent {
13327    pub attacker: u16,
13328    pub victim: u16,
13329}
13330impl PlayerDirectHitStunEvent {
13331    #[allow(unused_variables)]
13332    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13333        Ok(PlayerDirectHitStunEvent {
13334            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
13335            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
13336        })
13337    }
13338    #[allow(unused_variables)]
13339    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13340        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13341        match field {
13342            "attacker" => Ok(self.attacker.clone().into()),
13343            "victim" => Ok(self.victim.clone().into()),
13344            _ => Err(ParseError::MissingGameEventValue {
13345                ty: "PlayerDirectHitStun",
13346                field: field.into(),
13347            }),
13348        }
13349    }
13350    #[allow(unused_variables)]
13351    fn write(
13352        &self,
13353        stream: &mut BitWriteStream<LittleEndian>,
13354        definition: &GameEventDefinition,
13355    ) -> Result<()> {
13356        for entry in &definition.entries {
13357            let value = self
13358                .get_field(&entry.name)
13359                .unwrap_or_else(|_| entry.kind.default_value());
13360            stream.write(&value)?;
13361        }
13362        Ok(())
13363    }
13364}
13365#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13366#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13367pub struct MvmSentryBusterKilledEvent {
13368    pub sentry_buster: u16,
13369}
13370impl MvmSentryBusterKilledEvent {
13371    #[allow(unused_variables)]
13372    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13373        Ok(MvmSentryBusterKilledEvent {
13374            sentry_buster: read_value::<u16>(
13375                stream,
13376                definition.get_entry("sentry_buster"),
13377                "sentry_buster",
13378            )?,
13379        })
13380    }
13381    #[allow(unused_variables)]
13382    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13383        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13384        match field {
13385            "sentry_buster" => Ok(self.sentry_buster.clone().into()),
13386            _ => Err(ParseError::MissingGameEventValue {
13387                ty: "MvmSentryBusterKilled",
13388                field: field.into(),
13389            }),
13390        }
13391    }
13392    #[allow(unused_variables)]
13393    fn write(
13394        &self,
13395        stream: &mut BitWriteStream<LittleEndian>,
13396        definition: &GameEventDefinition,
13397    ) -> Result<()> {
13398        for entry in &definition.entries {
13399            let value = self
13400                .get_field(&entry.name)
13401                .unwrap_or_else(|_| entry.kind.default_value());
13402            stream.write(&value)?;
13403        }
13404        Ok(())
13405    }
13406}
13407#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13408#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13409pub struct UpgradesFileChangedEvent {
13410    pub path: MaybeUtf8String,
13411}
13412impl UpgradesFileChangedEvent {
13413    #[allow(unused_variables)]
13414    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13415        Ok(UpgradesFileChangedEvent {
13416            path: read_value::<MaybeUtf8String>(stream, definition.get_entry("path"), "path")?,
13417        })
13418    }
13419    #[allow(unused_variables)]
13420    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13421        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13422        match field {
13423            "path" => Ok(self.path.clone().into()),
13424            _ => Err(ParseError::MissingGameEventValue {
13425                ty: "UpgradesFileChanged",
13426                field: field.into(),
13427            }),
13428        }
13429    }
13430    #[allow(unused_variables)]
13431    fn write(
13432        &self,
13433        stream: &mut BitWriteStream<LittleEndian>,
13434        definition: &GameEventDefinition,
13435    ) -> Result<()> {
13436        for entry in &definition.entries {
13437            let value = self
13438                .get_field(&entry.name)
13439                .unwrap_or_else(|_| entry.kind.default_value());
13440            stream.write(&value)?;
13441        }
13442        Ok(())
13443    }
13444}
13445#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13446#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13447pub struct RdTeamPointsChangedEvent {
13448    pub points: u16,
13449    pub team: u8,
13450    pub method: u8,
13451}
13452impl RdTeamPointsChangedEvent {
13453    #[allow(unused_variables)]
13454    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13455        Ok(RdTeamPointsChangedEvent {
13456            points: read_value::<u16>(stream, definition.get_entry("points"), "points")?,
13457            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
13458            method: read_value::<u8>(stream, definition.get_entry("method"), "method")?,
13459        })
13460    }
13461    #[allow(unused_variables)]
13462    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13463        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13464        match field {
13465            "points" => Ok(self.points.clone().into()),
13466            "team" => Ok(self.team.clone().into()),
13467            "method" => Ok(self.method.clone().into()),
13468            _ => Err(ParseError::MissingGameEventValue {
13469                ty: "RdTeamPointsChanged",
13470                field: field.into(),
13471            }),
13472        }
13473    }
13474    #[allow(unused_variables)]
13475    fn write(
13476        &self,
13477        stream: &mut BitWriteStream<LittleEndian>,
13478        definition: &GameEventDefinition,
13479    ) -> Result<()> {
13480        for entry in &definition.entries {
13481            let value = self
13482                .get_field(&entry.name)
13483                .unwrap_or_else(|_| entry.kind.default_value());
13484            stream.write(&value)?;
13485        }
13486        Ok(())
13487    }
13488}
13489#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13490#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13491pub struct RdRulesStateChangedEvent {}
13492impl RdRulesStateChangedEvent {
13493    #[allow(unused_variables)]
13494    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13495        Ok(RdRulesStateChangedEvent {})
13496    }
13497    #[allow(unused_variables)]
13498    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13499        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13500        match field {
13501            _ => Err(ParseError::MissingGameEventValue {
13502                ty: "RdRulesStateChanged",
13503                field: field.into(),
13504            }),
13505        }
13506    }
13507    #[allow(unused_variables)]
13508    fn write(
13509        &self,
13510        stream: &mut BitWriteStream<LittleEndian>,
13511        definition: &GameEventDefinition,
13512    ) -> Result<()> {
13513        for entry in &definition.entries {
13514            let value = self
13515                .get_field(&entry.name)
13516                .unwrap_or_else(|_| entry.kind.default_value());
13517            stream.write(&value)?;
13518        }
13519        Ok(())
13520    }
13521}
13522#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13523#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13524pub struct RdRobotKilledEvent {
13525    pub user_id: u16,
13526    pub victim_ent_index: u32,
13527    pub inflictor_ent_index: u32,
13528    pub attacker: u16,
13529    pub weapon: MaybeUtf8String,
13530    pub weapon_id: u16,
13531    pub damage_bits: u32,
13532    pub custom_kill: u16,
13533    pub weapon_log_class_name: MaybeUtf8String,
13534}
13535impl RdRobotKilledEvent {
13536    #[allow(unused_variables)]
13537    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13538        Ok(RdRobotKilledEvent {
13539            user_id: read_value::<u16>(stream, definition.get_entry("userid"), "user_id")?,
13540            victim_ent_index: read_value::<u32>(
13541                stream,
13542                definition.get_entry("victim_entindex"),
13543                "victim_ent_index",
13544            )?,
13545            inflictor_ent_index: read_value::<u32>(
13546                stream,
13547                definition.get_entry("inflictor_entindex"),
13548                "inflictor_ent_index",
13549            )?,
13550            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
13551            weapon: read_value::<MaybeUtf8String>(
13552                stream,
13553                definition.get_entry("weapon"),
13554                "weapon",
13555            )?,
13556            weapon_id: read_value::<u16>(stream, definition.get_entry("weaponid"), "weapon_id")?,
13557            damage_bits: read_value::<u32>(
13558                stream,
13559                definition.get_entry("damagebits"),
13560                "damage_bits",
13561            )?,
13562            custom_kill: read_value::<u16>(
13563                stream,
13564                definition.get_entry("customkill"),
13565                "custom_kill",
13566            )?,
13567            weapon_log_class_name: read_value::<MaybeUtf8String>(
13568                stream,
13569                definition.get_entry("weapon_logclassname"),
13570                "weapon_log_class_name",
13571            )?,
13572        })
13573    }
13574    #[allow(unused_variables)]
13575    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13576        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13577        match field {
13578            "userid" => Ok(self.user_id.clone().into()),
13579            "victim_entindex" => Ok(self.victim_ent_index.clone().into()),
13580            "inflictor_entindex" => Ok(self.inflictor_ent_index.clone().into()),
13581            "attacker" => Ok(self.attacker.clone().into()),
13582            "weapon" => Ok(self.weapon.clone().into()),
13583            "weaponid" => Ok(self.weapon_id.clone().into()),
13584            "damagebits" => Ok(self.damage_bits.clone().into()),
13585            "customkill" => Ok(self.custom_kill.clone().into()),
13586            "weapon_logclassname" => Ok(self.weapon_log_class_name.clone().into()),
13587            _ => Err(ParseError::MissingGameEventValue {
13588                ty: "RdRobotKilled",
13589                field: field.into(),
13590            }),
13591        }
13592    }
13593    #[allow(unused_variables)]
13594    fn write(
13595        &self,
13596        stream: &mut BitWriteStream<LittleEndian>,
13597        definition: &GameEventDefinition,
13598    ) -> Result<()> {
13599        for entry in &definition.entries {
13600            let value = self
13601                .get_field(&entry.name)
13602                .unwrap_or_else(|_| entry.kind.default_value());
13603            stream.write(&value)?;
13604        }
13605        Ok(())
13606    }
13607}
13608#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13609#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13610pub struct RdRobotImpactEvent {
13611    pub ent_index: u16,
13612    pub impulse_x: f32,
13613    pub impulse_y: f32,
13614    pub impulse_z: f32,
13615}
13616impl RdRobotImpactEvent {
13617    #[allow(unused_variables)]
13618    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13619        Ok(RdRobotImpactEvent {
13620            ent_index: read_value::<u16>(stream, definition.get_entry("entindex"), "ent_index")?,
13621            impulse_x: read_value::<f32>(stream, definition.get_entry("impulse_x"), "impulse_x")?,
13622            impulse_y: read_value::<f32>(stream, definition.get_entry("impulse_y"), "impulse_y")?,
13623            impulse_z: read_value::<f32>(stream, definition.get_entry("impulse_z"), "impulse_z")?,
13624        })
13625    }
13626    #[allow(unused_variables)]
13627    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13628        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13629        match field {
13630            "entindex" => Ok(self.ent_index.clone().into()),
13631            "impulse_x" => Ok(self.impulse_x.clone().into()),
13632            "impulse_y" => Ok(self.impulse_y.clone().into()),
13633            "impulse_z" => Ok(self.impulse_z.clone().into()),
13634            _ => Err(ParseError::MissingGameEventValue {
13635                ty: "RdRobotImpact",
13636                field: field.into(),
13637            }),
13638        }
13639    }
13640    #[allow(unused_variables)]
13641    fn write(
13642        &self,
13643        stream: &mut BitWriteStream<LittleEndian>,
13644        definition: &GameEventDefinition,
13645    ) -> Result<()> {
13646        for entry in &definition.entries {
13647            let value = self
13648                .get_field(&entry.name)
13649                .unwrap_or_else(|_| entry.kind.default_value());
13650            stream.write(&value)?;
13651        }
13652        Ok(())
13653    }
13654}
13655#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13656#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13657pub struct TeamPlayPreRoundTimeLeftEvent {
13658    pub time: u16,
13659}
13660impl TeamPlayPreRoundTimeLeftEvent {
13661    #[allow(unused_variables)]
13662    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13663        Ok(TeamPlayPreRoundTimeLeftEvent {
13664            time: read_value::<u16>(stream, definition.get_entry("time"), "time")?,
13665        })
13666    }
13667    #[allow(unused_variables)]
13668    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13669        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13670        match field {
13671            "time" => Ok(self.time.clone().into()),
13672            _ => Err(ParseError::MissingGameEventValue {
13673                ty: "TeamPlayPreRoundTimeLeft",
13674                field: field.into(),
13675            }),
13676        }
13677    }
13678    #[allow(unused_variables)]
13679    fn write(
13680        &self,
13681        stream: &mut BitWriteStream<LittleEndian>,
13682        definition: &GameEventDefinition,
13683    ) -> Result<()> {
13684        for entry in &definition.entries {
13685            let value = self
13686                .get_field(&entry.name)
13687                .unwrap_or_else(|_| entry.kind.default_value());
13688            stream.write(&value)?;
13689        }
13690        Ok(())
13691    }
13692}
13693#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13694#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13695pub struct ParachuteDeployEvent {
13696    pub index: u16,
13697}
13698impl ParachuteDeployEvent {
13699    #[allow(unused_variables)]
13700    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13701        Ok(ParachuteDeployEvent {
13702            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13703        })
13704    }
13705    #[allow(unused_variables)]
13706    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13707        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13708        match field {
13709            "index" => Ok(self.index.clone().into()),
13710            _ => Err(ParseError::MissingGameEventValue {
13711                ty: "ParachuteDeploy",
13712                field: field.into(),
13713            }),
13714        }
13715    }
13716    #[allow(unused_variables)]
13717    fn write(
13718        &self,
13719        stream: &mut BitWriteStream<LittleEndian>,
13720        definition: &GameEventDefinition,
13721    ) -> Result<()> {
13722        for entry in &definition.entries {
13723            let value = self
13724                .get_field(&entry.name)
13725                .unwrap_or_else(|_| entry.kind.default_value());
13726            stream.write(&value)?;
13727        }
13728        Ok(())
13729    }
13730}
13731#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13732#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13733pub struct ParachuteHolsterEvent {
13734    pub index: u16,
13735}
13736impl ParachuteHolsterEvent {
13737    #[allow(unused_variables)]
13738    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13739        Ok(ParachuteHolsterEvent {
13740            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13741        })
13742    }
13743    #[allow(unused_variables)]
13744    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13745        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13746        match field {
13747            "index" => Ok(self.index.clone().into()),
13748            _ => Err(ParseError::MissingGameEventValue {
13749                ty: "ParachuteHolster",
13750                field: field.into(),
13751            }),
13752        }
13753    }
13754    #[allow(unused_variables)]
13755    fn write(
13756        &self,
13757        stream: &mut BitWriteStream<LittleEndian>,
13758        definition: &GameEventDefinition,
13759    ) -> Result<()> {
13760        for entry in &definition.entries {
13761            let value = self
13762                .get_field(&entry.name)
13763                .unwrap_or_else(|_| entry.kind.default_value());
13764            stream.write(&value)?;
13765        }
13766        Ok(())
13767    }
13768}
13769#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13770#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13771pub struct KillRefillsMeterEvent {
13772    pub index: u16,
13773}
13774impl KillRefillsMeterEvent {
13775    #[allow(unused_variables)]
13776    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13777        Ok(KillRefillsMeterEvent {
13778            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13779        })
13780    }
13781    #[allow(unused_variables)]
13782    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13783        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13784        match field {
13785            "index" => Ok(self.index.clone().into()),
13786            _ => Err(ParseError::MissingGameEventValue {
13787                ty: "KillRefillsMeter",
13788                field: field.into(),
13789            }),
13790        }
13791    }
13792    #[allow(unused_variables)]
13793    fn write(
13794        &self,
13795        stream: &mut BitWriteStream<LittleEndian>,
13796        definition: &GameEventDefinition,
13797    ) -> Result<()> {
13798        for entry in &definition.entries {
13799            let value = self
13800                .get_field(&entry.name)
13801                .unwrap_or_else(|_| entry.kind.default_value());
13802            stream.write(&value)?;
13803        }
13804        Ok(())
13805    }
13806}
13807#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13808#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13809pub struct RpsTauntEventEvent {
13810    pub winner: u16,
13811    pub winner_rps: u8,
13812    pub loser: u16,
13813    pub loser_rps: u8,
13814}
13815impl RpsTauntEventEvent {
13816    #[allow(unused_variables)]
13817    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13818        Ok(RpsTauntEventEvent {
13819            winner: read_value::<u16>(stream, definition.get_entry("winner"), "winner")?,
13820            winner_rps: read_value::<u8>(stream, definition.get_entry("winner_rps"), "winner_rps")?,
13821            loser: read_value::<u16>(stream, definition.get_entry("loser"), "loser")?,
13822            loser_rps: read_value::<u8>(stream, definition.get_entry("loser_rps"), "loser_rps")?,
13823        })
13824    }
13825    #[allow(unused_variables)]
13826    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13827        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13828        match field {
13829            "winner" => Ok(self.winner.clone().into()),
13830            "winner_rps" => Ok(self.winner_rps.clone().into()),
13831            "loser" => Ok(self.loser.clone().into()),
13832            "loser_rps" => Ok(self.loser_rps.clone().into()),
13833            _ => Err(ParseError::MissingGameEventValue {
13834                ty: "RpsTauntEvent",
13835                field: field.into(),
13836            }),
13837        }
13838    }
13839    #[allow(unused_variables)]
13840    fn write(
13841        &self,
13842        stream: &mut BitWriteStream<LittleEndian>,
13843        definition: &GameEventDefinition,
13844    ) -> Result<()> {
13845        for entry in &definition.entries {
13846            let value = self
13847                .get_field(&entry.name)
13848                .unwrap_or_else(|_| entry.kind.default_value());
13849            stream.write(&value)?;
13850        }
13851        Ok(())
13852    }
13853}
13854#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13855#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13856pub struct CongaKillEvent {
13857    pub index: u16,
13858}
13859impl CongaKillEvent {
13860    #[allow(unused_variables)]
13861    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13862        Ok(CongaKillEvent {
13863            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13864        })
13865    }
13866    #[allow(unused_variables)]
13867    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13868        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13869        match field {
13870            "index" => Ok(self.index.clone().into()),
13871            _ => Err(ParseError::MissingGameEventValue {
13872                ty: "CongaKill",
13873                field: field.into(),
13874            }),
13875        }
13876    }
13877    #[allow(unused_variables)]
13878    fn write(
13879        &self,
13880        stream: &mut BitWriteStream<LittleEndian>,
13881        definition: &GameEventDefinition,
13882    ) -> Result<()> {
13883        for entry in &definition.entries {
13884            let value = self
13885                .get_field(&entry.name)
13886                .unwrap_or_else(|_| entry.kind.default_value());
13887            stream.write(&value)?;
13888        }
13889        Ok(())
13890    }
13891}
13892#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13893#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13894pub struct PlayerInitialSpawnEvent {
13895    pub index: u16,
13896}
13897impl PlayerInitialSpawnEvent {
13898    #[allow(unused_variables)]
13899    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13900        Ok(PlayerInitialSpawnEvent {
13901            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13902        })
13903    }
13904    #[allow(unused_variables)]
13905    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13906        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13907        match field {
13908            "index" => Ok(self.index.clone().into()),
13909            _ => Err(ParseError::MissingGameEventValue {
13910                ty: "PlayerInitialSpawn",
13911                field: field.into(),
13912            }),
13913        }
13914    }
13915    #[allow(unused_variables)]
13916    fn write(
13917        &self,
13918        stream: &mut BitWriteStream<LittleEndian>,
13919        definition: &GameEventDefinition,
13920    ) -> Result<()> {
13921        for entry in &definition.entries {
13922            let value = self
13923                .get_field(&entry.name)
13924                .unwrap_or_else(|_| entry.kind.default_value());
13925            stream.write(&value)?;
13926        }
13927        Ok(())
13928    }
13929}
13930#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13931#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13932pub struct CompetitiveVictoryEvent {}
13933impl CompetitiveVictoryEvent {
13934    #[allow(unused_variables)]
13935    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13936        Ok(CompetitiveVictoryEvent {})
13937    }
13938    #[allow(unused_variables)]
13939    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13940        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
13941        match field {
13942            _ => Err(ParseError::MissingGameEventValue {
13943                ty: "CompetitiveVictory",
13944                field: field.into(),
13945            }),
13946        }
13947    }
13948    #[allow(unused_variables)]
13949    fn write(
13950        &self,
13951        stream: &mut BitWriteStream<LittleEndian>,
13952        definition: &GameEventDefinition,
13953    ) -> Result<()> {
13954        for entry in &definition.entries {
13955            let value = self
13956                .get_field(&entry.name)
13957                .unwrap_or_else(|_| entry.kind.default_value());
13958            stream.write(&value)?;
13959        }
13960        Ok(())
13961    }
13962}
13963#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13964#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13965pub struct CompetitiveStatsUpdateEvent {
13966    pub index: u16,
13967    pub kills_rank: u8,
13968    pub score_rank: u8,
13969    pub damage_rank: u8,
13970    pub healing_rank: u8,
13971    pub support_rank: u8,
13972}
13973impl CompetitiveStatsUpdateEvent {
13974    #[allow(unused_variables)]
13975    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
13976        Ok(CompetitiveStatsUpdateEvent {
13977            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
13978            kills_rank: read_value::<u8>(stream, definition.get_entry("kills_rank"), "kills_rank")?,
13979            score_rank: read_value::<u8>(stream, definition.get_entry("score_rank"), "score_rank")?,
13980            damage_rank: read_value::<u8>(
13981                stream,
13982                definition.get_entry("damage_rank"),
13983                "damage_rank",
13984            )?,
13985            healing_rank: read_value::<u8>(
13986                stream,
13987                definition.get_entry("healing_rank"),
13988                "healing_rank",
13989            )?,
13990            support_rank: read_value::<u8>(
13991                stream,
13992                definition.get_entry("support_rank"),
13993                "support_rank",
13994            )?,
13995        })
13996    }
13997    #[allow(unused_variables)]
13998    fn get_field(&self, field: &str) -> Result<GameEventValue> {
13999        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14000        match field {
14001            "index" => Ok(self.index.clone().into()),
14002            "kills_rank" => Ok(self.kills_rank.clone().into()),
14003            "score_rank" => Ok(self.score_rank.clone().into()),
14004            "damage_rank" => Ok(self.damage_rank.clone().into()),
14005            "healing_rank" => Ok(self.healing_rank.clone().into()),
14006            "support_rank" => Ok(self.support_rank.clone().into()),
14007            _ => Err(ParseError::MissingGameEventValue {
14008                ty: "CompetitiveStatsUpdate",
14009                field: field.into(),
14010            }),
14011        }
14012    }
14013    #[allow(unused_variables)]
14014    fn write(
14015        &self,
14016        stream: &mut BitWriteStream<LittleEndian>,
14017        definition: &GameEventDefinition,
14018    ) -> Result<()> {
14019        for entry in &definition.entries {
14020            let value = self
14021                .get_field(&entry.name)
14022                .unwrap_or_else(|_| entry.kind.default_value());
14023            stream.write(&value)?;
14024        }
14025        Ok(())
14026    }
14027}
14028#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14029#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14030pub struct MiniGameWinEvent {
14031    pub team: u8,
14032    pub kind: u8,
14033}
14034impl MiniGameWinEvent {
14035    #[allow(unused_variables)]
14036    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14037        Ok(MiniGameWinEvent {
14038            team: read_value::<u8>(stream, definition.get_entry("team"), "team")?,
14039            kind: read_value::<u8>(stream, definition.get_entry("type"), "kind")?,
14040        })
14041    }
14042    #[allow(unused_variables)]
14043    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14044        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14045        match field {
14046            "team" => Ok(self.team.clone().into()),
14047            "type" => Ok(self.kind.clone().into()),
14048            _ => Err(ParseError::MissingGameEventValue {
14049                ty: "MiniGameWin",
14050                field: field.into(),
14051            }),
14052        }
14053    }
14054    #[allow(unused_variables)]
14055    fn write(
14056        &self,
14057        stream: &mut BitWriteStream<LittleEndian>,
14058        definition: &GameEventDefinition,
14059    ) -> Result<()> {
14060        for entry in &definition.entries {
14061            let value = self
14062                .get_field(&entry.name)
14063                .unwrap_or_else(|_| entry.kind.default_value());
14064            stream.write(&value)?;
14065        }
14066        Ok(())
14067    }
14068}
14069#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14070#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14071pub struct SentryOnGoActiveEvent {
14072    pub index: u16,
14073}
14074impl SentryOnGoActiveEvent {
14075    #[allow(unused_variables)]
14076    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14077        Ok(SentryOnGoActiveEvent {
14078            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
14079        })
14080    }
14081    #[allow(unused_variables)]
14082    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14083        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14084        match field {
14085            "index" => Ok(self.index.clone().into()),
14086            _ => Err(ParseError::MissingGameEventValue {
14087                ty: "SentryOnGoActive",
14088                field: field.into(),
14089            }),
14090        }
14091    }
14092    #[allow(unused_variables)]
14093    fn write(
14094        &self,
14095        stream: &mut BitWriteStream<LittleEndian>,
14096        definition: &GameEventDefinition,
14097    ) -> Result<()> {
14098        for entry in &definition.entries {
14099            let value = self
14100                .get_field(&entry.name)
14101                .unwrap_or_else(|_| entry.kind.default_value());
14102            stream.write(&value)?;
14103        }
14104        Ok(())
14105    }
14106}
14107#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14108#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14109pub struct DuckXpLevelUpEvent {
14110    pub level: u16,
14111}
14112impl DuckXpLevelUpEvent {
14113    #[allow(unused_variables)]
14114    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14115        Ok(DuckXpLevelUpEvent {
14116            level: read_value::<u16>(stream, definition.get_entry("level"), "level")?,
14117        })
14118    }
14119    #[allow(unused_variables)]
14120    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14121        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14122        match field {
14123            "level" => Ok(self.level.clone().into()),
14124            _ => Err(ParseError::MissingGameEventValue {
14125                ty: "DuckXpLevelUp",
14126                field: field.into(),
14127            }),
14128        }
14129    }
14130    #[allow(unused_variables)]
14131    fn write(
14132        &self,
14133        stream: &mut BitWriteStream<LittleEndian>,
14134        definition: &GameEventDefinition,
14135    ) -> Result<()> {
14136        for entry in &definition.entries {
14137            let value = self
14138                .get_field(&entry.name)
14139                .unwrap_or_else(|_| entry.kind.default_value());
14140            stream.write(&value)?;
14141        }
14142        Ok(())
14143    }
14144}
14145#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14146#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14147pub struct QuestLogOpenedEvent {}
14148impl QuestLogOpenedEvent {
14149    #[allow(unused_variables)]
14150    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14151        Ok(QuestLogOpenedEvent {})
14152    }
14153    #[allow(unused_variables)]
14154    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14155        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14156        match field {
14157            _ => Err(ParseError::MissingGameEventValue {
14158                ty: "QuestLogOpened",
14159                field: field.into(),
14160            }),
14161        }
14162    }
14163    #[allow(unused_variables)]
14164    fn write(
14165        &self,
14166        stream: &mut BitWriteStream<LittleEndian>,
14167        definition: &GameEventDefinition,
14168    ) -> Result<()> {
14169        for entry in &definition.entries {
14170            let value = self
14171                .get_field(&entry.name)
14172                .unwrap_or_else(|_| entry.kind.default_value());
14173            stream.write(&value)?;
14174        }
14175        Ok(())
14176    }
14177}
14178#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14179#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14180pub struct SchemaUpdatedEvent {}
14181impl SchemaUpdatedEvent {
14182    #[allow(unused_variables)]
14183    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14184        Ok(SchemaUpdatedEvent {})
14185    }
14186    #[allow(unused_variables)]
14187    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14188        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14189        match field {
14190            _ => Err(ParseError::MissingGameEventValue {
14191                ty: "SchemaUpdated",
14192                field: field.into(),
14193            }),
14194        }
14195    }
14196    #[allow(unused_variables)]
14197    fn write(
14198        &self,
14199        stream: &mut BitWriteStream<LittleEndian>,
14200        definition: &GameEventDefinition,
14201    ) -> Result<()> {
14202        for entry in &definition.entries {
14203            let value = self
14204                .get_field(&entry.name)
14205                .unwrap_or_else(|_| entry.kind.default_value());
14206            stream.write(&value)?;
14207        }
14208        Ok(())
14209    }
14210}
14211#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14212#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14213pub struct LocalPlayerPickupWeaponEvent {}
14214impl LocalPlayerPickupWeaponEvent {
14215    #[allow(unused_variables)]
14216    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14217        Ok(LocalPlayerPickupWeaponEvent {})
14218    }
14219    #[allow(unused_variables)]
14220    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14221        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14222        match field {
14223            _ => Err(ParseError::MissingGameEventValue {
14224                ty: "LocalPlayerPickupWeapon",
14225                field: field.into(),
14226            }),
14227        }
14228    }
14229    #[allow(unused_variables)]
14230    fn write(
14231        &self,
14232        stream: &mut BitWriteStream<LittleEndian>,
14233        definition: &GameEventDefinition,
14234    ) -> Result<()> {
14235        for entry in &definition.entries {
14236            let value = self
14237                .get_field(&entry.name)
14238                .unwrap_or_else(|_| entry.kind.default_value());
14239            stream.write(&value)?;
14240        }
14241        Ok(())
14242    }
14243}
14244#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14245#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14246pub struct RdPlayerScorePointsEvent {
14247    pub player: u16,
14248    pub method: u16,
14249    pub amount: u16,
14250}
14251impl RdPlayerScorePointsEvent {
14252    #[allow(unused_variables)]
14253    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14254        Ok(RdPlayerScorePointsEvent {
14255            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
14256            method: read_value::<u16>(stream, definition.get_entry("method"), "method")?,
14257            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
14258        })
14259    }
14260    #[allow(unused_variables)]
14261    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14262        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14263        match field {
14264            "player" => Ok(self.player.clone().into()),
14265            "method" => Ok(self.method.clone().into()),
14266            "amount" => Ok(self.amount.clone().into()),
14267            _ => Err(ParseError::MissingGameEventValue {
14268                ty: "RdPlayerScorePoints",
14269                field: field.into(),
14270            }),
14271        }
14272    }
14273    #[allow(unused_variables)]
14274    fn write(
14275        &self,
14276        stream: &mut BitWriteStream<LittleEndian>,
14277        definition: &GameEventDefinition,
14278    ) -> Result<()> {
14279        for entry in &definition.entries {
14280            let value = self
14281                .get_field(&entry.name)
14282                .unwrap_or_else(|_| entry.kind.default_value());
14283            stream.write(&value)?;
14284        }
14285        Ok(())
14286    }
14287}
14288#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14289#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14290pub struct DemomanDetStickiesEvent {
14291    pub player: u16,
14292}
14293impl DemomanDetStickiesEvent {
14294    #[allow(unused_variables)]
14295    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14296        Ok(DemomanDetStickiesEvent {
14297            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
14298        })
14299    }
14300    #[allow(unused_variables)]
14301    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14302        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14303        match field {
14304            "player" => Ok(self.player.clone().into()),
14305            _ => Err(ParseError::MissingGameEventValue {
14306                ty: "DemomanDetStickies",
14307                field: field.into(),
14308            }),
14309        }
14310    }
14311    #[allow(unused_variables)]
14312    fn write(
14313        &self,
14314        stream: &mut BitWriteStream<LittleEndian>,
14315        definition: &GameEventDefinition,
14316    ) -> Result<()> {
14317        for entry in &definition.entries {
14318            let value = self
14319                .get_field(&entry.name)
14320                .unwrap_or_else(|_| entry.kind.default_value());
14321            stream.write(&value)?;
14322        }
14323        Ok(())
14324    }
14325}
14326#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14327#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14328pub struct QuestObjectiveCompletedEvent {
14329    pub quest_item_id_low: u32,
14330    pub quest_item_id_hi: u32,
14331    pub quest_objective_id: u32,
14332    pub scorer_user_id: u16,
14333}
14334impl QuestObjectiveCompletedEvent {
14335    #[allow(unused_variables)]
14336    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14337        Ok(QuestObjectiveCompletedEvent {
14338            quest_item_id_low: read_value::<u32>(
14339                stream,
14340                definition.get_entry("quest_item_id_low"),
14341                "quest_item_id_low",
14342            )?,
14343            quest_item_id_hi: read_value::<u32>(
14344                stream,
14345                definition.get_entry("quest_item_id_hi"),
14346                "quest_item_id_hi",
14347            )?,
14348            quest_objective_id: read_value::<u32>(
14349                stream,
14350                definition.get_entry("quest_objective_id"),
14351                "quest_objective_id",
14352            )?,
14353            scorer_user_id: read_value::<u16>(
14354                stream,
14355                definition.get_entry("scorer_user_id"),
14356                "scorer_user_id",
14357            )?,
14358        })
14359    }
14360    #[allow(unused_variables)]
14361    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14362        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14363        match field {
14364            "quest_item_id_low" => Ok(self.quest_item_id_low.clone().into()),
14365            "quest_item_id_hi" => Ok(self.quest_item_id_hi.clone().into()),
14366            "quest_objective_id" => Ok(self.quest_objective_id.clone().into()),
14367            "scorer_user_id" => Ok(self.scorer_user_id.clone().into()),
14368            _ => Err(ParseError::MissingGameEventValue {
14369                ty: "QuestObjectiveCompleted",
14370                field: field.into(),
14371            }),
14372        }
14373    }
14374    #[allow(unused_variables)]
14375    fn write(
14376        &self,
14377        stream: &mut BitWriteStream<LittleEndian>,
14378        definition: &GameEventDefinition,
14379    ) -> Result<()> {
14380        for entry in &definition.entries {
14381            let value = self
14382                .get_field(&entry.name)
14383                .unwrap_or_else(|_| entry.kind.default_value());
14384            stream.write(&value)?;
14385        }
14386        Ok(())
14387    }
14388}
14389#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14390#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14391pub struct PlayerScoreChangedEvent {
14392    pub player: u8,
14393    pub delta: u16,
14394}
14395impl PlayerScoreChangedEvent {
14396    #[allow(unused_variables)]
14397    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14398        Ok(PlayerScoreChangedEvent {
14399            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
14400            delta: read_value::<u16>(stream, definition.get_entry("delta"), "delta")?,
14401        })
14402    }
14403    #[allow(unused_variables)]
14404    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14405        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14406        match field {
14407            "player" => Ok(self.player.clone().into()),
14408            "delta" => Ok(self.delta.clone().into()),
14409            _ => Err(ParseError::MissingGameEventValue {
14410                ty: "PlayerScoreChanged",
14411                field: field.into(),
14412            }),
14413        }
14414    }
14415    #[allow(unused_variables)]
14416    fn write(
14417        &self,
14418        stream: &mut BitWriteStream<LittleEndian>,
14419        definition: &GameEventDefinition,
14420    ) -> Result<()> {
14421        for entry in &definition.entries {
14422            let value = self
14423                .get_field(&entry.name)
14424                .unwrap_or_else(|_| entry.kind.default_value());
14425            stream.write(&value)?;
14426        }
14427        Ok(())
14428    }
14429}
14430#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14431#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14432pub struct KilledCappingPlayerEvent {
14433    pub cp: u8,
14434    pub killer: u8,
14435    pub victim: u8,
14436    pub assister: u8,
14437}
14438impl KilledCappingPlayerEvent {
14439    #[allow(unused_variables)]
14440    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14441        Ok(KilledCappingPlayerEvent {
14442            cp: read_value::<u8>(stream, definition.get_entry("cp"), "cp")?,
14443            killer: read_value::<u8>(stream, definition.get_entry("killer"), "killer")?,
14444            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
14445            assister: read_value::<u8>(stream, definition.get_entry("assister"), "assister")?,
14446        })
14447    }
14448    #[allow(unused_variables)]
14449    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14450        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14451        match field {
14452            "cp" => Ok(self.cp.clone().into()),
14453            "killer" => Ok(self.killer.clone().into()),
14454            "victim" => Ok(self.victim.clone().into()),
14455            "assister" => Ok(self.assister.clone().into()),
14456            _ => Err(ParseError::MissingGameEventValue {
14457                ty: "KilledCappingPlayer",
14458                field: field.into(),
14459            }),
14460        }
14461    }
14462    #[allow(unused_variables)]
14463    fn write(
14464        &self,
14465        stream: &mut BitWriteStream<LittleEndian>,
14466        definition: &GameEventDefinition,
14467    ) -> Result<()> {
14468        for entry in &definition.entries {
14469            let value = self
14470                .get_field(&entry.name)
14471                .unwrap_or_else(|_| entry.kind.default_value());
14472            stream.write(&value)?;
14473        }
14474        Ok(())
14475    }
14476}
14477#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14478#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14479pub struct EnvironmentalDeathEvent {
14480    pub killer: u8,
14481    pub victim: u8,
14482}
14483impl EnvironmentalDeathEvent {
14484    #[allow(unused_variables)]
14485    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14486        Ok(EnvironmentalDeathEvent {
14487            killer: read_value::<u8>(stream, definition.get_entry("killer"), "killer")?,
14488            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
14489        })
14490    }
14491    #[allow(unused_variables)]
14492    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14493        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14494        match field {
14495            "killer" => Ok(self.killer.clone().into()),
14496            "victim" => Ok(self.victim.clone().into()),
14497            _ => Err(ParseError::MissingGameEventValue {
14498                ty: "EnvironmentalDeath",
14499                field: field.into(),
14500            }),
14501        }
14502    }
14503    #[allow(unused_variables)]
14504    fn write(
14505        &self,
14506        stream: &mut BitWriteStream<LittleEndian>,
14507        definition: &GameEventDefinition,
14508    ) -> Result<()> {
14509        for entry in &definition.entries {
14510            let value = self
14511                .get_field(&entry.name)
14512                .unwrap_or_else(|_| entry.kind.default_value());
14513            stream.write(&value)?;
14514        }
14515        Ok(())
14516    }
14517}
14518#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14519#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14520pub struct ProjectileDirectHitEvent {
14521    pub attacker: u8,
14522    pub victim: u8,
14523    pub weapon_def_index: u32,
14524}
14525impl ProjectileDirectHitEvent {
14526    #[allow(unused_variables)]
14527    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14528        Ok(ProjectileDirectHitEvent {
14529            attacker: read_value::<u8>(stream, definition.get_entry("attacker"), "attacker")?,
14530            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
14531            weapon_def_index: read_value::<u32>(
14532                stream,
14533                definition.get_entry("weapon_def_index"),
14534                "weapon_def_index",
14535            )?,
14536        })
14537    }
14538    #[allow(unused_variables)]
14539    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14540        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14541        match field {
14542            "attacker" => Ok(self.attacker.clone().into()),
14543            "victim" => Ok(self.victim.clone().into()),
14544            "weapon_def_index" => Ok(self.weapon_def_index.clone().into()),
14545            _ => Err(ParseError::MissingGameEventValue {
14546                ty: "ProjectileDirectHit",
14547                field: field.into(),
14548            }),
14549        }
14550    }
14551    #[allow(unused_variables)]
14552    fn write(
14553        &self,
14554        stream: &mut BitWriteStream<LittleEndian>,
14555        definition: &GameEventDefinition,
14556    ) -> Result<()> {
14557        for entry in &definition.entries {
14558            let value = self
14559                .get_field(&entry.name)
14560                .unwrap_or_else(|_| entry.kind.default_value());
14561            stream.write(&value)?;
14562        }
14563        Ok(())
14564    }
14565}
14566#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14567#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14568pub struct PassGetEvent {
14569    pub owner: u16,
14570}
14571impl PassGetEvent {
14572    #[allow(unused_variables)]
14573    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14574        Ok(PassGetEvent {
14575            owner: read_value::<u16>(stream, definition.get_entry("owner"), "owner")?,
14576        })
14577    }
14578    #[allow(unused_variables)]
14579    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14580        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14581        match field {
14582            "owner" => Ok(self.owner.clone().into()),
14583            _ => Err(ParseError::MissingGameEventValue {
14584                ty: "PassGet",
14585                field: field.into(),
14586            }),
14587        }
14588    }
14589    #[allow(unused_variables)]
14590    fn write(
14591        &self,
14592        stream: &mut BitWriteStream<LittleEndian>,
14593        definition: &GameEventDefinition,
14594    ) -> Result<()> {
14595        for entry in &definition.entries {
14596            let value = self
14597                .get_field(&entry.name)
14598                .unwrap_or_else(|_| entry.kind.default_value());
14599            stream.write(&value)?;
14600        }
14601        Ok(())
14602    }
14603}
14604#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14605#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14606pub struct PassScoreEvent {
14607    pub scorer: u16,
14608    pub assister: u16,
14609    pub points: u8,
14610}
14611impl PassScoreEvent {
14612    #[allow(unused_variables)]
14613    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14614        Ok(PassScoreEvent {
14615            scorer: read_value::<u16>(stream, definition.get_entry("scorer"), "scorer")?,
14616            assister: read_value::<u16>(stream, definition.get_entry("assister"), "assister")?,
14617            points: read_value::<u8>(stream, definition.get_entry("points"), "points")?,
14618        })
14619    }
14620    #[allow(unused_variables)]
14621    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14622        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14623        match field {
14624            "scorer" => Ok(self.scorer.clone().into()),
14625            "assister" => Ok(self.assister.clone().into()),
14626            "points" => Ok(self.points.clone().into()),
14627            _ => Err(ParseError::MissingGameEventValue {
14628                ty: "PassScore",
14629                field: field.into(),
14630            }),
14631        }
14632    }
14633    #[allow(unused_variables)]
14634    fn write(
14635        &self,
14636        stream: &mut BitWriteStream<LittleEndian>,
14637        definition: &GameEventDefinition,
14638    ) -> Result<()> {
14639        for entry in &definition.entries {
14640            let value = self
14641                .get_field(&entry.name)
14642                .unwrap_or_else(|_| entry.kind.default_value());
14643            stream.write(&value)?;
14644        }
14645        Ok(())
14646    }
14647}
14648#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14649#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14650pub struct PassFreeEvent {
14651    pub owner: u16,
14652    pub attacker: u16,
14653}
14654impl PassFreeEvent {
14655    #[allow(unused_variables)]
14656    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14657        Ok(PassFreeEvent {
14658            owner: read_value::<u16>(stream, definition.get_entry("owner"), "owner")?,
14659            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
14660        })
14661    }
14662    #[allow(unused_variables)]
14663    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14664        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14665        match field {
14666            "owner" => Ok(self.owner.clone().into()),
14667            "attacker" => Ok(self.attacker.clone().into()),
14668            _ => Err(ParseError::MissingGameEventValue {
14669                ty: "PassFree",
14670                field: field.into(),
14671            }),
14672        }
14673    }
14674    #[allow(unused_variables)]
14675    fn write(
14676        &self,
14677        stream: &mut BitWriteStream<LittleEndian>,
14678        definition: &GameEventDefinition,
14679    ) -> Result<()> {
14680        for entry in &definition.entries {
14681            let value = self
14682                .get_field(&entry.name)
14683                .unwrap_or_else(|_| entry.kind.default_value());
14684            stream.write(&value)?;
14685        }
14686        Ok(())
14687    }
14688}
14689#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14690#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14691pub struct PassPassCaughtEvent {
14692    pub passer: u16,
14693    pub catcher: u16,
14694    pub dist: f32,
14695    pub duration: f32,
14696}
14697impl PassPassCaughtEvent {
14698    #[allow(unused_variables)]
14699    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14700        Ok(PassPassCaughtEvent {
14701            passer: read_value::<u16>(stream, definition.get_entry("passer"), "passer")?,
14702            catcher: read_value::<u16>(stream, definition.get_entry("catcher"), "catcher")?,
14703            dist: read_value::<f32>(stream, definition.get_entry("dist"), "dist")?,
14704            duration: read_value::<f32>(stream, definition.get_entry("duration"), "duration")?,
14705        })
14706    }
14707    #[allow(unused_variables)]
14708    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14709        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14710        match field {
14711            "passer" => Ok(self.passer.clone().into()),
14712            "catcher" => Ok(self.catcher.clone().into()),
14713            "dist" => Ok(self.dist.clone().into()),
14714            "duration" => Ok(self.duration.clone().into()),
14715            _ => Err(ParseError::MissingGameEventValue {
14716                ty: "PassPassCaught",
14717                field: field.into(),
14718            }),
14719        }
14720    }
14721    #[allow(unused_variables)]
14722    fn write(
14723        &self,
14724        stream: &mut BitWriteStream<LittleEndian>,
14725        definition: &GameEventDefinition,
14726    ) -> Result<()> {
14727        for entry in &definition.entries {
14728            let value = self
14729                .get_field(&entry.name)
14730                .unwrap_or_else(|_| entry.kind.default_value());
14731            stream.write(&value)?;
14732        }
14733        Ok(())
14734    }
14735}
14736#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14737#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14738pub struct PassBallStolenEvent {
14739    pub victim: u16,
14740    pub attacker: u16,
14741}
14742impl PassBallStolenEvent {
14743    #[allow(unused_variables)]
14744    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14745        Ok(PassBallStolenEvent {
14746            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
14747            attacker: read_value::<u16>(stream, definition.get_entry("attacker"), "attacker")?,
14748        })
14749    }
14750    #[allow(unused_variables)]
14751    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14752        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14753        match field {
14754            "victim" => Ok(self.victim.clone().into()),
14755            "attacker" => Ok(self.attacker.clone().into()),
14756            _ => Err(ParseError::MissingGameEventValue {
14757                ty: "PassBallStolen",
14758                field: field.into(),
14759            }),
14760        }
14761    }
14762    #[allow(unused_variables)]
14763    fn write(
14764        &self,
14765        stream: &mut BitWriteStream<LittleEndian>,
14766        definition: &GameEventDefinition,
14767    ) -> Result<()> {
14768        for entry in &definition.entries {
14769            let value = self
14770                .get_field(&entry.name)
14771                .unwrap_or_else(|_| entry.kind.default_value());
14772            stream.write(&value)?;
14773        }
14774        Ok(())
14775    }
14776}
14777#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14778#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14779pub struct PassBallBlockedEvent {
14780    pub owner: u16,
14781    pub blocker: u16,
14782}
14783impl PassBallBlockedEvent {
14784    #[allow(unused_variables)]
14785    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14786        Ok(PassBallBlockedEvent {
14787            owner: read_value::<u16>(stream, definition.get_entry("owner"), "owner")?,
14788            blocker: read_value::<u16>(stream, definition.get_entry("blocker"), "blocker")?,
14789        })
14790    }
14791    #[allow(unused_variables)]
14792    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14793        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14794        match field {
14795            "owner" => Ok(self.owner.clone().into()),
14796            "blocker" => Ok(self.blocker.clone().into()),
14797            _ => Err(ParseError::MissingGameEventValue {
14798                ty: "PassBallBlocked",
14799                field: field.into(),
14800            }),
14801        }
14802    }
14803    #[allow(unused_variables)]
14804    fn write(
14805        &self,
14806        stream: &mut BitWriteStream<LittleEndian>,
14807        definition: &GameEventDefinition,
14808    ) -> Result<()> {
14809        for entry in &definition.entries {
14810            let value = self
14811                .get_field(&entry.name)
14812                .unwrap_or_else(|_| entry.kind.default_value());
14813            stream.write(&value)?;
14814        }
14815        Ok(())
14816    }
14817}
14818#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14819#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14820pub struct DamagePreventedEvent {
14821    pub preventor: u16,
14822    pub victim: u16,
14823    pub amount: u16,
14824    pub condition: u16,
14825}
14826impl DamagePreventedEvent {
14827    #[allow(unused_variables)]
14828    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14829        Ok(DamagePreventedEvent {
14830            preventor: read_value::<u16>(stream, definition.get_entry("preventor"), "preventor")?,
14831            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
14832            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
14833            condition: read_value::<u16>(stream, definition.get_entry("condition"), "condition")?,
14834        })
14835    }
14836    #[allow(unused_variables)]
14837    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14838        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14839        match field {
14840            "preventor" => Ok(self.preventor.clone().into()),
14841            "victim" => Ok(self.victim.clone().into()),
14842            "amount" => Ok(self.amount.clone().into()),
14843            "condition" => Ok(self.condition.clone().into()),
14844            _ => Err(ParseError::MissingGameEventValue {
14845                ty: "DamagePrevented",
14846                field: field.into(),
14847            }),
14848        }
14849    }
14850    #[allow(unused_variables)]
14851    fn write(
14852        &self,
14853        stream: &mut BitWriteStream<LittleEndian>,
14854        definition: &GameEventDefinition,
14855    ) -> Result<()> {
14856        for entry in &definition.entries {
14857            let value = self
14858                .get_field(&entry.name)
14859                .unwrap_or_else(|_| entry.kind.default_value());
14860            stream.write(&value)?;
14861        }
14862        Ok(())
14863    }
14864}
14865#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14866#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14867pub struct HalloweenBossKilledEvent {
14868    pub boss: u16,
14869    pub killer: u16,
14870}
14871impl HalloweenBossKilledEvent {
14872    #[allow(unused_variables)]
14873    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14874        Ok(HalloweenBossKilledEvent {
14875            boss: read_value::<u16>(stream, definition.get_entry("boss"), "boss")?,
14876            killer: read_value::<u16>(stream, definition.get_entry("killer"), "killer")?,
14877        })
14878    }
14879    #[allow(unused_variables)]
14880    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14881        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14882        match field {
14883            "boss" => Ok(self.boss.clone().into()),
14884            "killer" => Ok(self.killer.clone().into()),
14885            _ => Err(ParseError::MissingGameEventValue {
14886                ty: "HalloweenBossKilled",
14887                field: field.into(),
14888            }),
14889        }
14890    }
14891    #[allow(unused_variables)]
14892    fn write(
14893        &self,
14894        stream: &mut BitWriteStream<LittleEndian>,
14895        definition: &GameEventDefinition,
14896    ) -> Result<()> {
14897        for entry in &definition.entries {
14898            let value = self
14899                .get_field(&entry.name)
14900                .unwrap_or_else(|_| entry.kind.default_value());
14901            stream.write(&value)?;
14902        }
14903        Ok(())
14904    }
14905}
14906#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14907#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14908pub struct EscapedLootIslandEvent {
14909    pub player: u16,
14910}
14911impl EscapedLootIslandEvent {
14912    #[allow(unused_variables)]
14913    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14914        Ok(EscapedLootIslandEvent {
14915            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
14916        })
14917    }
14918    #[allow(unused_variables)]
14919    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14920        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14921        match field {
14922            "player" => Ok(self.player.clone().into()),
14923            _ => Err(ParseError::MissingGameEventValue {
14924                ty: "EscapedLootIsland",
14925                field: field.into(),
14926            }),
14927        }
14928    }
14929    #[allow(unused_variables)]
14930    fn write(
14931        &self,
14932        stream: &mut BitWriteStream<LittleEndian>,
14933        definition: &GameEventDefinition,
14934    ) -> Result<()> {
14935        for entry in &definition.entries {
14936            let value = self
14937                .get_field(&entry.name)
14938                .unwrap_or_else(|_| entry.kind.default_value());
14939            stream.write(&value)?;
14940        }
14941        Ok(())
14942    }
14943}
14944#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14945#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14946pub struct TaggedPlayerAsItEvent {
14947    pub player: u16,
14948}
14949impl TaggedPlayerAsItEvent {
14950    #[allow(unused_variables)]
14951    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14952        Ok(TaggedPlayerAsItEvent {
14953            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
14954        })
14955    }
14956    #[allow(unused_variables)]
14957    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14958        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14959        match field {
14960            "player" => Ok(self.player.clone().into()),
14961            _ => Err(ParseError::MissingGameEventValue {
14962                ty: "TaggedPlayerAsIt",
14963                field: field.into(),
14964            }),
14965        }
14966    }
14967    #[allow(unused_variables)]
14968    fn write(
14969        &self,
14970        stream: &mut BitWriteStream<LittleEndian>,
14971        definition: &GameEventDefinition,
14972    ) -> Result<()> {
14973        for entry in &definition.entries {
14974            let value = self
14975                .get_field(&entry.name)
14976                .unwrap_or_else(|_| entry.kind.default_value());
14977            stream.write(&value)?;
14978        }
14979        Ok(())
14980    }
14981}
14982#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14983#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14984pub struct MerasmusStunnedEvent {
14985    pub player: u16,
14986}
14987impl MerasmusStunnedEvent {
14988    #[allow(unused_variables)]
14989    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
14990        Ok(MerasmusStunnedEvent {
14991            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
14992        })
14993    }
14994    #[allow(unused_variables)]
14995    fn get_field(&self, field: &str) -> Result<GameEventValue> {
14996        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
14997        match field {
14998            "player" => Ok(self.player.clone().into()),
14999            _ => Err(ParseError::MissingGameEventValue {
15000                ty: "MerasmusStunned",
15001                field: field.into(),
15002            }),
15003        }
15004    }
15005    #[allow(unused_variables)]
15006    fn write(
15007        &self,
15008        stream: &mut BitWriteStream<LittleEndian>,
15009        definition: &GameEventDefinition,
15010    ) -> Result<()> {
15011        for entry in &definition.entries {
15012            let value = self
15013                .get_field(&entry.name)
15014                .unwrap_or_else(|_| entry.kind.default_value());
15015            stream.write(&value)?;
15016        }
15017        Ok(())
15018    }
15019}
15020#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15021#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15022pub struct MerasmusPropFoundEvent {
15023    pub player: u16,
15024}
15025impl MerasmusPropFoundEvent {
15026    #[allow(unused_variables)]
15027    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15028        Ok(MerasmusPropFoundEvent {
15029            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15030        })
15031    }
15032    #[allow(unused_variables)]
15033    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15034        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15035        match field {
15036            "player" => Ok(self.player.clone().into()),
15037            _ => Err(ParseError::MissingGameEventValue {
15038                ty: "MerasmusPropFound",
15039                field: field.into(),
15040            }),
15041        }
15042    }
15043    #[allow(unused_variables)]
15044    fn write(
15045        &self,
15046        stream: &mut BitWriteStream<LittleEndian>,
15047        definition: &GameEventDefinition,
15048    ) -> Result<()> {
15049        for entry in &definition.entries {
15050            let value = self
15051                .get_field(&entry.name)
15052                .unwrap_or_else(|_| entry.kind.default_value());
15053            stream.write(&value)?;
15054        }
15055        Ok(())
15056    }
15057}
15058#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15059#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15060pub struct HalloweenSkeletonKilledEvent {
15061    pub player: u16,
15062}
15063impl HalloweenSkeletonKilledEvent {
15064    #[allow(unused_variables)]
15065    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15066        Ok(HalloweenSkeletonKilledEvent {
15067            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15068        })
15069    }
15070    #[allow(unused_variables)]
15071    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15072        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15073        match field {
15074            "player" => Ok(self.player.clone().into()),
15075            _ => Err(ParseError::MissingGameEventValue {
15076                ty: "HalloweenSkeletonKilled",
15077                field: field.into(),
15078            }),
15079        }
15080    }
15081    #[allow(unused_variables)]
15082    fn write(
15083        &self,
15084        stream: &mut BitWriteStream<LittleEndian>,
15085        definition: &GameEventDefinition,
15086    ) -> Result<()> {
15087        for entry in &definition.entries {
15088            let value = self
15089                .get_field(&entry.name)
15090                .unwrap_or_else(|_| entry.kind.default_value());
15091            stream.write(&value)?;
15092        }
15093        Ok(())
15094    }
15095}
15096#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15097#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15098pub struct SkeletonKilledQuestEvent {
15099    pub player: u16,
15100}
15101impl SkeletonKilledQuestEvent {
15102    #[allow(unused_variables)]
15103    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15104        Ok(SkeletonKilledQuestEvent {
15105            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15106        })
15107    }
15108    #[allow(unused_variables)]
15109    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15110        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15111        match field {
15112            "player" => Ok(self.player.clone().into()),
15113            _ => Err(ParseError::MissingGameEventValue {
15114                ty: "SkeletonKilledQuest",
15115                field: field.into(),
15116            }),
15117        }
15118    }
15119    #[allow(unused_variables)]
15120    fn write(
15121        &self,
15122        stream: &mut BitWriteStream<LittleEndian>,
15123        definition: &GameEventDefinition,
15124    ) -> Result<()> {
15125        for entry in &definition.entries {
15126            let value = self
15127                .get_field(&entry.name)
15128                .unwrap_or_else(|_| entry.kind.default_value());
15129            stream.write(&value)?;
15130        }
15131        Ok(())
15132    }
15133}
15134#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15135#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15136pub struct SkeletonKingKilledQuestEvent {
15137    pub player: u16,
15138}
15139impl SkeletonKingKilledQuestEvent {
15140    #[allow(unused_variables)]
15141    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15142        Ok(SkeletonKingKilledQuestEvent {
15143            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15144        })
15145    }
15146    #[allow(unused_variables)]
15147    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15148        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15149        match field {
15150            "player" => Ok(self.player.clone().into()),
15151            _ => Err(ParseError::MissingGameEventValue {
15152                ty: "SkeletonKingKilledQuest",
15153                field: field.into(),
15154            }),
15155        }
15156    }
15157    #[allow(unused_variables)]
15158    fn write(
15159        &self,
15160        stream: &mut BitWriteStream<LittleEndian>,
15161        definition: &GameEventDefinition,
15162    ) -> Result<()> {
15163        for entry in &definition.entries {
15164            let value = self
15165                .get_field(&entry.name)
15166                .unwrap_or_else(|_| entry.kind.default_value());
15167            stream.write(&value)?;
15168        }
15169        Ok(())
15170    }
15171}
15172#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15173#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15174pub struct EscapeHellEvent {
15175    pub player: u16,
15176}
15177impl EscapeHellEvent {
15178    #[allow(unused_variables)]
15179    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15180        Ok(EscapeHellEvent {
15181            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15182        })
15183    }
15184    #[allow(unused_variables)]
15185    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15186        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15187        match field {
15188            "player" => Ok(self.player.clone().into()),
15189            _ => Err(ParseError::MissingGameEventValue {
15190                ty: "EscapeHell",
15191                field: field.into(),
15192            }),
15193        }
15194    }
15195    #[allow(unused_variables)]
15196    fn write(
15197        &self,
15198        stream: &mut BitWriteStream<LittleEndian>,
15199        definition: &GameEventDefinition,
15200    ) -> Result<()> {
15201        for entry in &definition.entries {
15202            let value = self
15203                .get_field(&entry.name)
15204                .unwrap_or_else(|_| entry.kind.default_value());
15205            stream.write(&value)?;
15206        }
15207        Ok(())
15208    }
15209}
15210#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15211#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15212pub struct CrossSpectralBridgeEvent {
15213    pub player: u16,
15214}
15215impl CrossSpectralBridgeEvent {
15216    #[allow(unused_variables)]
15217    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15218        Ok(CrossSpectralBridgeEvent {
15219            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15220        })
15221    }
15222    #[allow(unused_variables)]
15223    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15224        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15225        match field {
15226            "player" => Ok(self.player.clone().into()),
15227            _ => Err(ParseError::MissingGameEventValue {
15228                ty: "CrossSpectralBridge",
15229                field: field.into(),
15230            }),
15231        }
15232    }
15233    #[allow(unused_variables)]
15234    fn write(
15235        &self,
15236        stream: &mut BitWriteStream<LittleEndian>,
15237        definition: &GameEventDefinition,
15238    ) -> Result<()> {
15239        for entry in &definition.entries {
15240            let value = self
15241                .get_field(&entry.name)
15242                .unwrap_or_else(|_| entry.kind.default_value());
15243            stream.write(&value)?;
15244        }
15245        Ok(())
15246    }
15247}
15248#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15249#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15250pub struct MiniGameWonEvent {
15251    pub player: u16,
15252    pub game: u16,
15253}
15254impl MiniGameWonEvent {
15255    #[allow(unused_variables)]
15256    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15257        Ok(MiniGameWonEvent {
15258            player: read_value::<u16>(stream, definition.get_entry("player"), "player")?,
15259            game: read_value::<u16>(stream, definition.get_entry("game"), "game")?,
15260        })
15261    }
15262    #[allow(unused_variables)]
15263    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15264        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15265        match field {
15266            "player" => Ok(self.player.clone().into()),
15267            "game" => Ok(self.game.clone().into()),
15268            _ => Err(ParseError::MissingGameEventValue {
15269                ty: "MiniGameWon",
15270                field: field.into(),
15271            }),
15272        }
15273    }
15274    #[allow(unused_variables)]
15275    fn write(
15276        &self,
15277        stream: &mut BitWriteStream<LittleEndian>,
15278        definition: &GameEventDefinition,
15279    ) -> Result<()> {
15280        for entry in &definition.entries {
15281            let value = self
15282                .get_field(&entry.name)
15283                .unwrap_or_else(|_| entry.kind.default_value());
15284            stream.write(&value)?;
15285        }
15286        Ok(())
15287    }
15288}
15289#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15290#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15291pub struct RespawnGhostEvent {
15292    pub reviver: u16,
15293    pub ghost: u16,
15294}
15295impl RespawnGhostEvent {
15296    #[allow(unused_variables)]
15297    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15298        Ok(RespawnGhostEvent {
15299            reviver: read_value::<u16>(stream, definition.get_entry("reviver"), "reviver")?,
15300            ghost: read_value::<u16>(stream, definition.get_entry("ghost"), "ghost")?,
15301        })
15302    }
15303    #[allow(unused_variables)]
15304    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15305        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15306        match field {
15307            "reviver" => Ok(self.reviver.clone().into()),
15308            "ghost" => Ok(self.ghost.clone().into()),
15309            _ => Err(ParseError::MissingGameEventValue {
15310                ty: "RespawnGhost",
15311                field: field.into(),
15312            }),
15313        }
15314    }
15315    #[allow(unused_variables)]
15316    fn write(
15317        &self,
15318        stream: &mut BitWriteStream<LittleEndian>,
15319        definition: &GameEventDefinition,
15320    ) -> Result<()> {
15321        for entry in &definition.entries {
15322            let value = self
15323                .get_field(&entry.name)
15324                .unwrap_or_else(|_| entry.kind.default_value());
15325            stream.write(&value)?;
15326        }
15327        Ok(())
15328    }
15329}
15330#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15331#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15332pub struct KillInHellEvent {
15333    pub killer: u16,
15334    pub victim: u16,
15335}
15336impl KillInHellEvent {
15337    #[allow(unused_variables)]
15338    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15339        Ok(KillInHellEvent {
15340            killer: read_value::<u16>(stream, definition.get_entry("killer"), "killer")?,
15341            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
15342        })
15343    }
15344    #[allow(unused_variables)]
15345    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15346        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15347        match field {
15348            "killer" => Ok(self.killer.clone().into()),
15349            "victim" => Ok(self.victim.clone().into()),
15350            _ => Err(ParseError::MissingGameEventValue {
15351                ty: "KillInHell",
15352                field: field.into(),
15353            }),
15354        }
15355    }
15356    #[allow(unused_variables)]
15357    fn write(
15358        &self,
15359        stream: &mut BitWriteStream<LittleEndian>,
15360        definition: &GameEventDefinition,
15361    ) -> Result<()> {
15362        for entry in &definition.entries {
15363            let value = self
15364                .get_field(&entry.name)
15365                .unwrap_or_else(|_| entry.kind.default_value());
15366            stream.write(&value)?;
15367        }
15368        Ok(())
15369    }
15370}
15371#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15372#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15373pub struct HalloweenDuckCollectedEvent {
15374    pub collector: u16,
15375}
15376impl HalloweenDuckCollectedEvent {
15377    #[allow(unused_variables)]
15378    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15379        Ok(HalloweenDuckCollectedEvent {
15380            collector: read_value::<u16>(stream, definition.get_entry("collector"), "collector")?,
15381        })
15382    }
15383    #[allow(unused_variables)]
15384    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15385        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15386        match field {
15387            "collector" => Ok(self.collector.clone().into()),
15388            _ => Err(ParseError::MissingGameEventValue {
15389                ty: "HalloweenDuckCollected",
15390                field: field.into(),
15391            }),
15392        }
15393    }
15394    #[allow(unused_variables)]
15395    fn write(
15396        &self,
15397        stream: &mut BitWriteStream<LittleEndian>,
15398        definition: &GameEventDefinition,
15399    ) -> Result<()> {
15400        for entry in &definition.entries {
15401            let value = self
15402                .get_field(&entry.name)
15403                .unwrap_or_else(|_| entry.kind.default_value());
15404            stream.write(&value)?;
15405        }
15406        Ok(())
15407    }
15408}
15409#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15410#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15411pub struct SpecialScoreEvent {
15412    pub player: u8,
15413}
15414impl SpecialScoreEvent {
15415    #[allow(unused_variables)]
15416    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15417        Ok(SpecialScoreEvent {
15418            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
15419        })
15420    }
15421    #[allow(unused_variables)]
15422    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15423        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15424        match field {
15425            "player" => Ok(self.player.clone().into()),
15426            _ => Err(ParseError::MissingGameEventValue {
15427                ty: "SpecialScore",
15428                field: field.into(),
15429            }),
15430        }
15431    }
15432    #[allow(unused_variables)]
15433    fn write(
15434        &self,
15435        stream: &mut BitWriteStream<LittleEndian>,
15436        definition: &GameEventDefinition,
15437    ) -> Result<()> {
15438        for entry in &definition.entries {
15439            let value = self
15440                .get_field(&entry.name)
15441                .unwrap_or_else(|_| entry.kind.default_value());
15442            stream.write(&value)?;
15443        }
15444        Ok(())
15445    }
15446}
15447#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15448#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15449pub struct TeamLeaderKilledEvent {
15450    pub killer: u8,
15451    pub victim: u8,
15452}
15453impl TeamLeaderKilledEvent {
15454    #[allow(unused_variables)]
15455    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15456        Ok(TeamLeaderKilledEvent {
15457            killer: read_value::<u8>(stream, definition.get_entry("killer"), "killer")?,
15458            victim: read_value::<u8>(stream, definition.get_entry("victim"), "victim")?,
15459        })
15460    }
15461    #[allow(unused_variables)]
15462    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15463        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15464        match field {
15465            "killer" => Ok(self.killer.clone().into()),
15466            "victim" => Ok(self.victim.clone().into()),
15467            _ => Err(ParseError::MissingGameEventValue {
15468                ty: "TeamLeaderKilled",
15469                field: field.into(),
15470            }),
15471        }
15472    }
15473    #[allow(unused_variables)]
15474    fn write(
15475        &self,
15476        stream: &mut BitWriteStream<LittleEndian>,
15477        definition: &GameEventDefinition,
15478    ) -> Result<()> {
15479        for entry in &definition.entries {
15480            let value = self
15481                .get_field(&entry.name)
15482                .unwrap_or_else(|_| entry.kind.default_value());
15483            stream.write(&value)?;
15484        }
15485        Ok(())
15486    }
15487}
15488#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15489#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15490pub struct HalloweenSoulCollectedEvent {
15491    pub intended_target: u8,
15492    pub collecting_player: u8,
15493    pub soul_count: u8,
15494}
15495impl HalloweenSoulCollectedEvent {
15496    #[allow(unused_variables)]
15497    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15498        Ok(HalloweenSoulCollectedEvent {
15499            intended_target: read_value::<u8>(
15500                stream,
15501                definition.get_entry("intended_target"),
15502                "intended_target",
15503            )?,
15504            collecting_player: read_value::<u8>(
15505                stream,
15506                definition.get_entry("collecting_player"),
15507                "collecting_player",
15508            )?,
15509            soul_count: read_value::<u8>(stream, definition.get_entry("soul_count"), "soul_count")?,
15510        })
15511    }
15512    #[allow(unused_variables)]
15513    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15514        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15515        match field {
15516            "intended_target" => Ok(self.intended_target.clone().into()),
15517            "collecting_player" => Ok(self.collecting_player.clone().into()),
15518            "soul_count" => Ok(self.soul_count.clone().into()),
15519            _ => Err(ParseError::MissingGameEventValue {
15520                ty: "HalloweenSoulCollected",
15521                field: field.into(),
15522            }),
15523        }
15524    }
15525    #[allow(unused_variables)]
15526    fn write(
15527        &self,
15528        stream: &mut BitWriteStream<LittleEndian>,
15529        definition: &GameEventDefinition,
15530    ) -> Result<()> {
15531        for entry in &definition.entries {
15532            let value = self
15533                .get_field(&entry.name)
15534                .unwrap_or_else(|_| entry.kind.default_value());
15535            stream.write(&value)?;
15536        }
15537        Ok(())
15538    }
15539}
15540#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15541#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15542pub struct RecalculateTruceEvent {}
15543impl RecalculateTruceEvent {
15544    #[allow(unused_variables)]
15545    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15546        Ok(RecalculateTruceEvent {})
15547    }
15548    #[allow(unused_variables)]
15549    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15550        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15551        match field {
15552            _ => Err(ParseError::MissingGameEventValue {
15553                ty: "RecalculateTruce",
15554                field: field.into(),
15555            }),
15556        }
15557    }
15558    #[allow(unused_variables)]
15559    fn write(
15560        &self,
15561        stream: &mut BitWriteStream<LittleEndian>,
15562        definition: &GameEventDefinition,
15563    ) -> Result<()> {
15564        for entry in &definition.entries {
15565            let value = self
15566                .get_field(&entry.name)
15567                .unwrap_or_else(|_| entry.kind.default_value());
15568            stream.write(&value)?;
15569        }
15570        Ok(())
15571    }
15572}
15573#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15574#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15575pub struct DeadRingerCheatDeathEvent {
15576    pub spy: u8,
15577    pub attacker: u8,
15578}
15579impl DeadRingerCheatDeathEvent {
15580    #[allow(unused_variables)]
15581    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15582        Ok(DeadRingerCheatDeathEvent {
15583            spy: read_value::<u8>(stream, definition.get_entry("spy"), "spy")?,
15584            attacker: read_value::<u8>(stream, definition.get_entry("attacker"), "attacker")?,
15585        })
15586    }
15587    #[allow(unused_variables)]
15588    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15589        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15590        match field {
15591            "spy" => Ok(self.spy.clone().into()),
15592            "attacker" => Ok(self.attacker.clone().into()),
15593            _ => Err(ParseError::MissingGameEventValue {
15594                ty: "DeadRingerCheatDeath",
15595                field: field.into(),
15596            }),
15597        }
15598    }
15599    #[allow(unused_variables)]
15600    fn write(
15601        &self,
15602        stream: &mut BitWriteStream<LittleEndian>,
15603        definition: &GameEventDefinition,
15604    ) -> Result<()> {
15605        for entry in &definition.entries {
15606            let value = self
15607                .get_field(&entry.name)
15608                .unwrap_or_else(|_| entry.kind.default_value());
15609            stream.write(&value)?;
15610        }
15611        Ok(())
15612    }
15613}
15614#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15615#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15616pub struct CrossbowHealEvent {
15617    pub healer: u8,
15618    pub target: u8,
15619    pub amount: u16,
15620}
15621impl CrossbowHealEvent {
15622    #[allow(unused_variables)]
15623    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15624        Ok(CrossbowHealEvent {
15625            healer: read_value::<u8>(stream, definition.get_entry("healer"), "healer")?,
15626            target: read_value::<u8>(stream, definition.get_entry("target"), "target")?,
15627            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
15628        })
15629    }
15630    #[allow(unused_variables)]
15631    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15632        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15633        match field {
15634            "healer" => Ok(self.healer.clone().into()),
15635            "target" => Ok(self.target.clone().into()),
15636            "amount" => Ok(self.amount.clone().into()),
15637            _ => Err(ParseError::MissingGameEventValue {
15638                ty: "CrossbowHeal",
15639                field: field.into(),
15640            }),
15641        }
15642    }
15643    #[allow(unused_variables)]
15644    fn write(
15645        &self,
15646        stream: &mut BitWriteStream<LittleEndian>,
15647        definition: &GameEventDefinition,
15648    ) -> Result<()> {
15649        for entry in &definition.entries {
15650            let value = self
15651                .get_field(&entry.name)
15652                .unwrap_or_else(|_| entry.kind.default_value());
15653            stream.write(&value)?;
15654        }
15655        Ok(())
15656    }
15657}
15658#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15659#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15660pub struct DamageMitigatedEvent {
15661    pub mitigator: u8,
15662    pub damaged: u8,
15663    pub amount: u16,
15664    pub item_definition_index: u16,
15665}
15666impl DamageMitigatedEvent {
15667    #[allow(unused_variables)]
15668    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15669        Ok(DamageMitigatedEvent {
15670            mitigator: read_value::<u8>(stream, definition.get_entry("mitigator"), "mitigator")?,
15671            damaged: read_value::<u8>(stream, definition.get_entry("damaged"), "damaged")?,
15672            amount: read_value::<u16>(stream, definition.get_entry("amount"), "amount")?,
15673            item_definition_index: read_value::<u16>(
15674                stream,
15675                definition.get_entry("itemdefindex"),
15676                "item_definition_index",
15677            )?,
15678        })
15679    }
15680    #[allow(unused_variables)]
15681    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15682        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15683        match field {
15684            "mitigator" => Ok(self.mitigator.clone().into()),
15685            "damaged" => Ok(self.damaged.clone().into()),
15686            "amount" => Ok(self.amount.clone().into()),
15687            "itemdefindex" => Ok(self.item_definition_index.clone().into()),
15688            _ => Err(ParseError::MissingGameEventValue {
15689                ty: "DamageMitigated",
15690                field: field.into(),
15691            }),
15692        }
15693    }
15694    #[allow(unused_variables)]
15695    fn write(
15696        &self,
15697        stream: &mut BitWriteStream<LittleEndian>,
15698        definition: &GameEventDefinition,
15699    ) -> Result<()> {
15700        for entry in &definition.entries {
15701            let value = self
15702                .get_field(&entry.name)
15703                .unwrap_or_else(|_| entry.kind.default_value());
15704            stream.write(&value)?;
15705        }
15706        Ok(())
15707    }
15708}
15709#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15710#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15711pub struct PayloadPushedEvent {
15712    pub pusher: u8,
15713    pub distance: u16,
15714}
15715impl PayloadPushedEvent {
15716    #[allow(unused_variables)]
15717    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15718        Ok(PayloadPushedEvent {
15719            pusher: read_value::<u8>(stream, definition.get_entry("pusher"), "pusher")?,
15720            distance: read_value::<u16>(stream, definition.get_entry("distance"), "distance")?,
15721        })
15722    }
15723    #[allow(unused_variables)]
15724    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15725        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15726        match field {
15727            "pusher" => Ok(self.pusher.clone().into()),
15728            "distance" => Ok(self.distance.clone().into()),
15729            _ => Err(ParseError::MissingGameEventValue {
15730                ty: "PayloadPushed",
15731                field: field.into(),
15732            }),
15733        }
15734    }
15735    #[allow(unused_variables)]
15736    fn write(
15737        &self,
15738        stream: &mut BitWriteStream<LittleEndian>,
15739        definition: &GameEventDefinition,
15740    ) -> Result<()> {
15741        for entry in &definition.entries {
15742            let value = self
15743                .get_field(&entry.name)
15744                .unwrap_or_else(|_| entry.kind.default_value());
15745            stream.write(&value)?;
15746        }
15747        Ok(())
15748    }
15749}
15750#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15751#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15752pub struct PlayerAbandonedMatchEvent {
15753    pub game_over: bool,
15754}
15755impl PlayerAbandonedMatchEvent {
15756    #[allow(unused_variables)]
15757    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15758        Ok(PlayerAbandonedMatchEvent {
15759            game_over: read_value::<bool>(stream, definition.get_entry("game_over"), "game_over")?,
15760        })
15761    }
15762    #[allow(unused_variables)]
15763    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15764        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15765        match field {
15766            "game_over" => Ok(self.game_over.clone().into()),
15767            _ => Err(ParseError::MissingGameEventValue {
15768                ty: "PlayerAbandonedMatch",
15769                field: field.into(),
15770            }),
15771        }
15772    }
15773    #[allow(unused_variables)]
15774    fn write(
15775        &self,
15776        stream: &mut BitWriteStream<LittleEndian>,
15777        definition: &GameEventDefinition,
15778    ) -> Result<()> {
15779        for entry in &definition.entries {
15780            let value = self
15781                .get_field(&entry.name)
15782                .unwrap_or_else(|_| entry.kind.default_value());
15783            stream.write(&value)?;
15784        }
15785        Ok(())
15786    }
15787}
15788#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15789#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15790pub struct ClDrawlineEvent {
15791    pub player: u8,
15792    pub panel: u8,
15793    pub line: u8,
15794    pub x: f32,
15795    pub y: f32,
15796}
15797impl ClDrawlineEvent {
15798    #[allow(unused_variables)]
15799    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15800        Ok(ClDrawlineEvent {
15801            player: read_value::<u8>(stream, definition.get_entry("player"), "player")?,
15802            panel: read_value::<u8>(stream, definition.get_entry("panel"), "panel")?,
15803            line: read_value::<u8>(stream, definition.get_entry("line"), "line")?,
15804            x: read_value::<f32>(stream, definition.get_entry("x"), "x")?,
15805            y: read_value::<f32>(stream, definition.get_entry("y"), "y")?,
15806        })
15807    }
15808    #[allow(unused_variables)]
15809    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15810        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15811        match field {
15812            "player" => Ok(self.player.clone().into()),
15813            "panel" => Ok(self.panel.clone().into()),
15814            "line" => Ok(self.line.clone().into()),
15815            "x" => Ok(self.x.clone().into()),
15816            "y" => Ok(self.y.clone().into()),
15817            _ => Err(ParseError::MissingGameEventValue {
15818                ty: "ClDrawline",
15819                field: field.into(),
15820            }),
15821        }
15822    }
15823    #[allow(unused_variables)]
15824    fn write(
15825        &self,
15826        stream: &mut BitWriteStream<LittleEndian>,
15827        definition: &GameEventDefinition,
15828    ) -> Result<()> {
15829        for entry in &definition.entries {
15830            let value = self
15831                .get_field(&entry.name)
15832                .unwrap_or_else(|_| entry.kind.default_value());
15833            stream.write(&value)?;
15834        }
15835        Ok(())
15836    }
15837}
15838#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15839#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15840pub struct RestartTimerTimeEvent {
15841    pub time: u8,
15842}
15843impl RestartTimerTimeEvent {
15844    #[allow(unused_variables)]
15845    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15846        Ok(RestartTimerTimeEvent {
15847            time: read_value::<u8>(stream, definition.get_entry("time"), "time")?,
15848        })
15849    }
15850    #[allow(unused_variables)]
15851    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15852        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15853        match field {
15854            "time" => Ok(self.time.clone().into()),
15855            _ => Err(ParseError::MissingGameEventValue {
15856                ty: "RestartTimerTime",
15857                field: field.into(),
15858            }),
15859        }
15860    }
15861    #[allow(unused_variables)]
15862    fn write(
15863        &self,
15864        stream: &mut BitWriteStream<LittleEndian>,
15865        definition: &GameEventDefinition,
15866    ) -> Result<()> {
15867        for entry in &definition.entries {
15868            let value = self
15869                .get_field(&entry.name)
15870                .unwrap_or_else(|_| entry.kind.default_value());
15871            stream.write(&value)?;
15872        }
15873        Ok(())
15874    }
15875}
15876#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15877#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15878pub struct WinLimitChangedEvent {}
15879impl WinLimitChangedEvent {
15880    #[allow(unused_variables)]
15881    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15882        Ok(WinLimitChangedEvent {})
15883    }
15884    #[allow(unused_variables)]
15885    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15886        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15887        match field {
15888            _ => Err(ParseError::MissingGameEventValue {
15889                ty: "WinLimitChanged",
15890                field: field.into(),
15891            }),
15892        }
15893    }
15894    #[allow(unused_variables)]
15895    fn write(
15896        &self,
15897        stream: &mut BitWriteStream<LittleEndian>,
15898        definition: &GameEventDefinition,
15899    ) -> Result<()> {
15900        for entry in &definition.entries {
15901            let value = self
15902                .get_field(&entry.name)
15903                .unwrap_or_else(|_| entry.kind.default_value());
15904            stream.write(&value)?;
15905        }
15906        Ok(())
15907    }
15908}
15909#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15910#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15911pub struct WinPanelShowScoresEvent {}
15912impl WinPanelShowScoresEvent {
15913    #[allow(unused_variables)]
15914    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15915        Ok(WinPanelShowScoresEvent {})
15916    }
15917    #[allow(unused_variables)]
15918    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15919        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15920        match field {
15921            _ => Err(ParseError::MissingGameEventValue {
15922                ty: "WinPanelShowScores",
15923                field: field.into(),
15924            }),
15925        }
15926    }
15927    #[allow(unused_variables)]
15928    fn write(
15929        &self,
15930        stream: &mut BitWriteStream<LittleEndian>,
15931        definition: &GameEventDefinition,
15932    ) -> Result<()> {
15933        for entry in &definition.entries {
15934            let value = self
15935                .get_field(&entry.name)
15936                .unwrap_or_else(|_| entry.kind.default_value());
15937            stream.write(&value)?;
15938        }
15939        Ok(())
15940    }
15941}
15942#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15943#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15944pub struct TopStreamsRequestFinishedEvent {}
15945impl TopStreamsRequestFinishedEvent {
15946    #[allow(unused_variables)]
15947    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15948        Ok(TopStreamsRequestFinishedEvent {})
15949    }
15950    #[allow(unused_variables)]
15951    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15952        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15953        match field {
15954            _ => Err(ParseError::MissingGameEventValue {
15955                ty: "TopStreamsRequestFinished",
15956                field: field.into(),
15957            }),
15958        }
15959    }
15960    #[allow(unused_variables)]
15961    fn write(
15962        &self,
15963        stream: &mut BitWriteStream<LittleEndian>,
15964        definition: &GameEventDefinition,
15965    ) -> Result<()> {
15966        for entry in &definition.entries {
15967            let value = self
15968                .get_field(&entry.name)
15969                .unwrap_or_else(|_| entry.kind.default_value());
15970            stream.write(&value)?;
15971        }
15972        Ok(())
15973    }
15974}
15975#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15976#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
15977pub struct CompetitiveStateChangedEvent {}
15978impl CompetitiveStateChangedEvent {
15979    #[allow(unused_variables)]
15980    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
15981        Ok(CompetitiveStateChangedEvent {})
15982    }
15983    #[allow(unused_variables)]
15984    fn get_field(&self, field: &str) -> Result<GameEventValue> {
15985        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
15986        match field {
15987            _ => Err(ParseError::MissingGameEventValue {
15988                ty: "CompetitiveStateChanged",
15989                field: field.into(),
15990            }),
15991        }
15992    }
15993    #[allow(unused_variables)]
15994    fn write(
15995        &self,
15996        stream: &mut BitWriteStream<LittleEndian>,
15997        definition: &GameEventDefinition,
15998    ) -> Result<()> {
15999        for entry in &definition.entries {
16000            let value = self
16001                .get_field(&entry.name)
16002                .unwrap_or_else(|_| entry.kind.default_value());
16003            stream.write(&value)?;
16004        }
16005        Ok(())
16006    }
16007}
16008#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16009#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16010pub struct GlobalWarDataUpdatedEvent {}
16011impl GlobalWarDataUpdatedEvent {
16012    #[allow(unused_variables)]
16013    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16014        Ok(GlobalWarDataUpdatedEvent {})
16015    }
16016    #[allow(unused_variables)]
16017    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16018        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16019        match field {
16020            _ => Err(ParseError::MissingGameEventValue {
16021                ty: "GlobalWarDataUpdated",
16022                field: field.into(),
16023            }),
16024        }
16025    }
16026    #[allow(unused_variables)]
16027    fn write(
16028        &self,
16029        stream: &mut BitWriteStream<LittleEndian>,
16030        definition: &GameEventDefinition,
16031    ) -> Result<()> {
16032        for entry in &definition.entries {
16033            let value = self
16034                .get_field(&entry.name)
16035                .unwrap_or_else(|_| entry.kind.default_value());
16036            stream.write(&value)?;
16037        }
16038        Ok(())
16039    }
16040}
16041#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16042#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16043pub struct StopWatchChangedEvent {}
16044impl StopWatchChangedEvent {
16045    #[allow(unused_variables)]
16046    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16047        Ok(StopWatchChangedEvent {})
16048    }
16049    #[allow(unused_variables)]
16050    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16051        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16052        match field {
16053            _ => Err(ParseError::MissingGameEventValue {
16054                ty: "StopWatchChanged",
16055                field: field.into(),
16056            }),
16057        }
16058    }
16059    #[allow(unused_variables)]
16060    fn write(
16061        &self,
16062        stream: &mut BitWriteStream<LittleEndian>,
16063        definition: &GameEventDefinition,
16064    ) -> Result<()> {
16065        for entry in &definition.entries {
16066            let value = self
16067                .get_field(&entry.name)
16068                .unwrap_or_else(|_| entry.kind.default_value());
16069            stream.write(&value)?;
16070        }
16071        Ok(())
16072    }
16073}
16074#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16075#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16076pub struct DsStopEvent {}
16077impl DsStopEvent {
16078    #[allow(unused_variables)]
16079    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16080        Ok(DsStopEvent {})
16081    }
16082    #[allow(unused_variables)]
16083    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16084        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16085        match field {
16086            _ => Err(ParseError::MissingGameEventValue {
16087                ty: "DsStop",
16088                field: field.into(),
16089            }),
16090        }
16091    }
16092    #[allow(unused_variables)]
16093    fn write(
16094        &self,
16095        stream: &mut BitWriteStream<LittleEndian>,
16096        definition: &GameEventDefinition,
16097    ) -> Result<()> {
16098        for entry in &definition.entries {
16099            let value = self
16100                .get_field(&entry.name)
16101                .unwrap_or_else(|_| entry.kind.default_value());
16102            stream.write(&value)?;
16103        }
16104        Ok(())
16105    }
16106}
16107#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16108#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16109pub struct DsScreenshotEvent {
16110    pub delay: f32,
16111}
16112impl DsScreenshotEvent {
16113    #[allow(unused_variables)]
16114    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16115        Ok(DsScreenshotEvent {
16116            delay: read_value::<f32>(stream, definition.get_entry("delay"), "delay")?,
16117        })
16118    }
16119    #[allow(unused_variables)]
16120    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16121        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16122        match field {
16123            "delay" => Ok(self.delay.clone().into()),
16124            _ => Err(ParseError::MissingGameEventValue {
16125                ty: "DsScreenshot",
16126                field: field.into(),
16127            }),
16128        }
16129    }
16130    #[allow(unused_variables)]
16131    fn write(
16132        &self,
16133        stream: &mut BitWriteStream<LittleEndian>,
16134        definition: &GameEventDefinition,
16135    ) -> Result<()> {
16136        for entry in &definition.entries {
16137            let value = self
16138                .get_field(&entry.name)
16139                .unwrap_or_else(|_| entry.kind.default_value());
16140            stream.write(&value)?;
16141        }
16142        Ok(())
16143    }
16144}
16145#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16146#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16147pub struct ShowMatchSummaryEvent {}
16148impl ShowMatchSummaryEvent {
16149    #[allow(unused_variables)]
16150    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16151        Ok(ShowMatchSummaryEvent {})
16152    }
16153    #[allow(unused_variables)]
16154    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16155        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16156        match field {
16157            _ => Err(ParseError::MissingGameEventValue {
16158                ty: "ShowMatchSummary",
16159                field: field.into(),
16160            }),
16161        }
16162    }
16163    #[allow(unused_variables)]
16164    fn write(
16165        &self,
16166        stream: &mut BitWriteStream<LittleEndian>,
16167        definition: &GameEventDefinition,
16168    ) -> Result<()> {
16169        for entry in &definition.entries {
16170            let value = self
16171                .get_field(&entry.name)
16172                .unwrap_or_else(|_| entry.kind.default_value());
16173            stream.write(&value)?;
16174        }
16175        Ok(())
16176    }
16177}
16178#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16179#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16180pub struct ExperienceChangedEvent {}
16181impl ExperienceChangedEvent {
16182    #[allow(unused_variables)]
16183    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16184        Ok(ExperienceChangedEvent {})
16185    }
16186    #[allow(unused_variables)]
16187    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16188        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16189        match field {
16190            _ => Err(ParseError::MissingGameEventValue {
16191                ty: "ExperienceChanged",
16192                field: field.into(),
16193            }),
16194        }
16195    }
16196    #[allow(unused_variables)]
16197    fn write(
16198        &self,
16199        stream: &mut BitWriteStream<LittleEndian>,
16200        definition: &GameEventDefinition,
16201    ) -> Result<()> {
16202        for entry in &definition.entries {
16203            let value = self
16204                .get_field(&entry.name)
16205                .unwrap_or_else(|_| entry.kind.default_value());
16206            stream.write(&value)?;
16207        }
16208        Ok(())
16209    }
16210}
16211#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16212#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16213pub struct BeginXpLerpEvent {}
16214impl BeginXpLerpEvent {
16215    #[allow(unused_variables)]
16216    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16217        Ok(BeginXpLerpEvent {})
16218    }
16219    #[allow(unused_variables)]
16220    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16221        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16222        match field {
16223            _ => Err(ParseError::MissingGameEventValue {
16224                ty: "BeginXpLerp",
16225                field: field.into(),
16226            }),
16227        }
16228    }
16229    #[allow(unused_variables)]
16230    fn write(
16231        &self,
16232        stream: &mut BitWriteStream<LittleEndian>,
16233        definition: &GameEventDefinition,
16234    ) -> Result<()> {
16235        for entry in &definition.entries {
16236            let value = self
16237                .get_field(&entry.name)
16238                .unwrap_or_else(|_| entry.kind.default_value());
16239            stream.write(&value)?;
16240        }
16241        Ok(())
16242    }
16243}
16244#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16245#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16246pub struct MatchmakerStatsUpdatedEvent {}
16247impl MatchmakerStatsUpdatedEvent {
16248    #[allow(unused_variables)]
16249    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16250        Ok(MatchmakerStatsUpdatedEvent {})
16251    }
16252    #[allow(unused_variables)]
16253    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16254        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16255        match field {
16256            _ => Err(ParseError::MissingGameEventValue {
16257                ty: "MatchmakerStatsUpdated",
16258                field: field.into(),
16259            }),
16260        }
16261    }
16262    #[allow(unused_variables)]
16263    fn write(
16264        &self,
16265        stream: &mut BitWriteStream<LittleEndian>,
16266        definition: &GameEventDefinition,
16267    ) -> Result<()> {
16268        for entry in &definition.entries {
16269            let value = self
16270                .get_field(&entry.name)
16271                .unwrap_or_else(|_| entry.kind.default_value());
16272            stream.write(&value)?;
16273        }
16274        Ok(())
16275    }
16276}
16277#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16278#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16279pub struct RematchVotePeriodOverEvent {
16280    pub success: bool,
16281}
16282impl RematchVotePeriodOverEvent {
16283    #[allow(unused_variables)]
16284    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16285        Ok(RematchVotePeriodOverEvent {
16286            success: read_value::<bool>(stream, definition.get_entry("success"), "success")?,
16287        })
16288    }
16289    #[allow(unused_variables)]
16290    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16291        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16292        match field {
16293            "success" => Ok(self.success.clone().into()),
16294            _ => Err(ParseError::MissingGameEventValue {
16295                ty: "RematchVotePeriodOver",
16296                field: field.into(),
16297            }),
16298        }
16299    }
16300    #[allow(unused_variables)]
16301    fn write(
16302        &self,
16303        stream: &mut BitWriteStream<LittleEndian>,
16304        definition: &GameEventDefinition,
16305    ) -> Result<()> {
16306        for entry in &definition.entries {
16307            let value = self
16308                .get_field(&entry.name)
16309                .unwrap_or_else(|_| entry.kind.default_value());
16310            stream.write(&value)?;
16311        }
16312        Ok(())
16313    }
16314}
16315#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16316#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16317pub struct RematchFailedToCreateEvent {}
16318impl RematchFailedToCreateEvent {
16319    #[allow(unused_variables)]
16320    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16321        Ok(RematchFailedToCreateEvent {})
16322    }
16323    #[allow(unused_variables)]
16324    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16325        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16326        match field {
16327            _ => Err(ParseError::MissingGameEventValue {
16328                ty: "RematchFailedToCreate",
16329                field: field.into(),
16330            }),
16331        }
16332    }
16333    #[allow(unused_variables)]
16334    fn write(
16335        &self,
16336        stream: &mut BitWriteStream<LittleEndian>,
16337        definition: &GameEventDefinition,
16338    ) -> Result<()> {
16339        for entry in &definition.entries {
16340            let value = self
16341                .get_field(&entry.name)
16342                .unwrap_or_else(|_| entry.kind.default_value());
16343            stream.write(&value)?;
16344        }
16345        Ok(())
16346    }
16347}
16348#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16349#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16350pub struct PlayerRematchChangeEvent {}
16351impl PlayerRematchChangeEvent {
16352    #[allow(unused_variables)]
16353    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16354        Ok(PlayerRematchChangeEvent {})
16355    }
16356    #[allow(unused_variables)]
16357    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16358        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16359        match field {
16360            _ => Err(ParseError::MissingGameEventValue {
16361                ty: "PlayerRematchChange",
16362                field: field.into(),
16363            }),
16364        }
16365    }
16366    #[allow(unused_variables)]
16367    fn write(
16368        &self,
16369        stream: &mut BitWriteStream<LittleEndian>,
16370        definition: &GameEventDefinition,
16371    ) -> Result<()> {
16372        for entry in &definition.entries {
16373            let value = self
16374                .get_field(&entry.name)
16375                .unwrap_or_else(|_| entry.kind.default_value());
16376            stream.write(&value)?;
16377        }
16378        Ok(())
16379    }
16380}
16381#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16382#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16383pub struct PingUpdatedEvent {}
16384impl PingUpdatedEvent {
16385    #[allow(unused_variables)]
16386    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16387        Ok(PingUpdatedEvent {})
16388    }
16389    #[allow(unused_variables)]
16390    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16391        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16392        match field {
16393            _ => Err(ParseError::MissingGameEventValue {
16394                ty: "PingUpdated",
16395                field: field.into(),
16396            }),
16397        }
16398    }
16399    #[allow(unused_variables)]
16400    fn write(
16401        &self,
16402        stream: &mut BitWriteStream<LittleEndian>,
16403        definition: &GameEventDefinition,
16404    ) -> Result<()> {
16405        for entry in &definition.entries {
16406            let value = self
16407                .get_field(&entry.name)
16408                .unwrap_or_else(|_| entry.kind.default_value());
16409            stream.write(&value)?;
16410        }
16411        Ok(())
16412    }
16413}
16414#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16415#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16416pub struct MMStatsUpdatedEvent {}
16417impl MMStatsUpdatedEvent {
16418    #[allow(unused_variables)]
16419    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16420        Ok(MMStatsUpdatedEvent {})
16421    }
16422    #[allow(unused_variables)]
16423    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16424        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16425        match field {
16426            _ => Err(ParseError::MissingGameEventValue {
16427                ty: "MMStatsUpdated",
16428                field: field.into(),
16429            }),
16430        }
16431    }
16432    #[allow(unused_variables)]
16433    fn write(
16434        &self,
16435        stream: &mut BitWriteStream<LittleEndian>,
16436        definition: &GameEventDefinition,
16437    ) -> Result<()> {
16438        for entry in &definition.entries {
16439            let value = self
16440                .get_field(&entry.name)
16441                .unwrap_or_else(|_| entry.kind.default_value());
16442            stream.write(&value)?;
16443        }
16444        Ok(())
16445    }
16446}
16447#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16448#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16449pub struct PlayerNextMapVoteChangeEvent {
16450    pub map_index: u8,
16451    pub vote: u8,
16452}
16453impl PlayerNextMapVoteChangeEvent {
16454    #[allow(unused_variables)]
16455    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16456        Ok(PlayerNextMapVoteChangeEvent {
16457            map_index: read_value::<u8>(stream, definition.get_entry("map_index"), "map_index")?,
16458            vote: read_value::<u8>(stream, definition.get_entry("vote"), "vote")?,
16459        })
16460    }
16461    #[allow(unused_variables)]
16462    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16463        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16464        match field {
16465            "map_index" => Ok(self.map_index.clone().into()),
16466            "vote" => Ok(self.vote.clone().into()),
16467            _ => Err(ParseError::MissingGameEventValue {
16468                ty: "PlayerNextMapVoteChange",
16469                field: field.into(),
16470            }),
16471        }
16472    }
16473    #[allow(unused_variables)]
16474    fn write(
16475        &self,
16476        stream: &mut BitWriteStream<LittleEndian>,
16477        definition: &GameEventDefinition,
16478    ) -> Result<()> {
16479        for entry in &definition.entries {
16480            let value = self
16481                .get_field(&entry.name)
16482                .unwrap_or_else(|_| entry.kind.default_value());
16483            stream.write(&value)?;
16484        }
16485        Ok(())
16486    }
16487}
16488#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16489#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16490pub struct VoteMapsChangedEvent {}
16491impl VoteMapsChangedEvent {
16492    #[allow(unused_variables)]
16493    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16494        Ok(VoteMapsChangedEvent {})
16495    }
16496    #[allow(unused_variables)]
16497    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16498        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16499        match field {
16500            _ => Err(ParseError::MissingGameEventValue {
16501                ty: "VoteMapsChanged",
16502                field: field.into(),
16503            }),
16504        }
16505    }
16506    #[allow(unused_variables)]
16507    fn write(
16508        &self,
16509        stream: &mut BitWriteStream<LittleEndian>,
16510        definition: &GameEventDefinition,
16511    ) -> Result<()> {
16512        for entry in &definition.entries {
16513            let value = self
16514                .get_field(&entry.name)
16515                .unwrap_or_else(|_| entry.kind.default_value());
16516            stream.write(&value)?;
16517        }
16518        Ok(())
16519    }
16520}
16521#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16522#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16523pub struct ProtoDefChangedEvent {
16524    pub kind: u8,
16525    pub definition_index: u32,
16526    pub created: bool,
16527    pub deleted: bool,
16528    pub erase_history: bool,
16529}
16530impl ProtoDefChangedEvent {
16531    #[allow(unused_variables)]
16532    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16533        Ok(ProtoDefChangedEvent {
16534            kind: read_value::<u8>(stream, definition.get_entry("type"), "kind")?,
16535            definition_index: read_value::<u32>(
16536                stream,
16537                definition.get_entry("defindex"),
16538                "definition_index",
16539            )?,
16540            created: read_value::<bool>(stream, definition.get_entry("created"), "created")?,
16541            deleted: read_value::<bool>(stream, definition.get_entry("deleted"), "deleted")?,
16542            erase_history: read_value::<bool>(
16543                stream,
16544                definition.get_entry("erase_history"),
16545                "erase_history",
16546            )?,
16547        })
16548    }
16549    #[allow(unused_variables)]
16550    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16551        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16552        match field {
16553            "type" => Ok(self.kind.clone().into()),
16554            "defindex" => Ok(self.definition_index.clone().into()),
16555            "created" => Ok(self.created.clone().into()),
16556            "deleted" => Ok(self.deleted.clone().into()),
16557            "erase_history" => Ok(self.erase_history.clone().into()),
16558            _ => Err(ParseError::MissingGameEventValue {
16559                ty: "ProtoDefChanged",
16560                field: field.into(),
16561            }),
16562        }
16563    }
16564    #[allow(unused_variables)]
16565    fn write(
16566        &self,
16567        stream: &mut BitWriteStream<LittleEndian>,
16568        definition: &GameEventDefinition,
16569    ) -> Result<()> {
16570        for entry in &definition.entries {
16571            let value = self
16572                .get_field(&entry.name)
16573                .unwrap_or_else(|_| entry.kind.default_value());
16574            stream.write(&value)?;
16575        }
16576        Ok(())
16577    }
16578}
16579#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16580#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16581pub struct PlayerDominationEvent {
16582    pub dominator: u16,
16583    pub dominated: u16,
16584    pub dominations: u16,
16585}
16586impl PlayerDominationEvent {
16587    #[allow(unused_variables)]
16588    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16589        Ok(PlayerDominationEvent {
16590            dominator: read_value::<u16>(stream, definition.get_entry("dominator"), "dominator")?,
16591            dominated: read_value::<u16>(stream, definition.get_entry("dominated"), "dominated")?,
16592            dominations: read_value::<u16>(
16593                stream,
16594                definition.get_entry("dominations"),
16595                "dominations",
16596            )?,
16597        })
16598    }
16599    #[allow(unused_variables)]
16600    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16601        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16602        match field {
16603            "dominator" => Ok(self.dominator.clone().into()),
16604            "dominated" => Ok(self.dominated.clone().into()),
16605            "dominations" => Ok(self.dominations.clone().into()),
16606            _ => Err(ParseError::MissingGameEventValue {
16607                ty: "PlayerDomination",
16608                field: field.into(),
16609            }),
16610        }
16611    }
16612    #[allow(unused_variables)]
16613    fn write(
16614        &self,
16615        stream: &mut BitWriteStream<LittleEndian>,
16616        definition: &GameEventDefinition,
16617    ) -> Result<()> {
16618        for entry in &definition.entries {
16619            let value = self
16620                .get_field(&entry.name)
16621                .unwrap_or_else(|_| entry.kind.default_value());
16622            stream.write(&value)?;
16623        }
16624        Ok(())
16625    }
16626}
16627#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16628#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16629pub struct PlayerRocketPackPushedEvent {
16630    pub pusher: u16,
16631    pub pushed: u16,
16632}
16633impl PlayerRocketPackPushedEvent {
16634    #[allow(unused_variables)]
16635    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16636        Ok(PlayerRocketPackPushedEvent {
16637            pusher: read_value::<u16>(stream, definition.get_entry("pusher"), "pusher")?,
16638            pushed: read_value::<u16>(stream, definition.get_entry("pushed"), "pushed")?,
16639        })
16640    }
16641    #[allow(unused_variables)]
16642    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16643        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16644        match field {
16645            "pusher" => Ok(self.pusher.clone().into()),
16646            "pushed" => Ok(self.pushed.clone().into()),
16647            _ => Err(ParseError::MissingGameEventValue {
16648                ty: "PlayerRocketPackPushed",
16649                field: field.into(),
16650            }),
16651        }
16652    }
16653    #[allow(unused_variables)]
16654    fn write(
16655        &self,
16656        stream: &mut BitWriteStream<LittleEndian>,
16657        definition: &GameEventDefinition,
16658    ) -> Result<()> {
16659        for entry in &definition.entries {
16660            let value = self
16661                .get_field(&entry.name)
16662                .unwrap_or_else(|_| entry.kind.default_value());
16663            stream.write(&value)?;
16664        }
16665        Ok(())
16666    }
16667}
16668#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16669#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16670pub struct QuestRequestEvent {
16671    pub request: u32,
16672    pub msg: MaybeUtf8String,
16673}
16674impl QuestRequestEvent {
16675    #[allow(unused_variables)]
16676    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16677        Ok(QuestRequestEvent {
16678            request: read_value::<u32>(stream, definition.get_entry("request"), "request")?,
16679            msg: read_value::<MaybeUtf8String>(stream, definition.get_entry("msg"), "msg")?,
16680        })
16681    }
16682    #[allow(unused_variables)]
16683    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16684        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16685        match field {
16686            "request" => Ok(self.request.clone().into()),
16687            "msg" => Ok(self.msg.clone().into()),
16688            _ => Err(ParseError::MissingGameEventValue {
16689                ty: "QuestRequest",
16690                field: field.into(),
16691            }),
16692        }
16693    }
16694    #[allow(unused_variables)]
16695    fn write(
16696        &self,
16697        stream: &mut BitWriteStream<LittleEndian>,
16698        definition: &GameEventDefinition,
16699    ) -> Result<()> {
16700        for entry in &definition.entries {
16701            let value = self
16702                .get_field(&entry.name)
16703                .unwrap_or_else(|_| entry.kind.default_value());
16704            stream.write(&value)?;
16705        }
16706        Ok(())
16707    }
16708}
16709#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16710#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16711pub struct QuestResponseEvent {
16712    pub request: u32,
16713    pub success: bool,
16714    pub msg: MaybeUtf8String,
16715}
16716impl QuestResponseEvent {
16717    #[allow(unused_variables)]
16718    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16719        Ok(QuestResponseEvent {
16720            request: read_value::<u32>(stream, definition.get_entry("request"), "request")?,
16721            success: read_value::<bool>(stream, definition.get_entry("success"), "success")?,
16722            msg: read_value::<MaybeUtf8String>(stream, definition.get_entry("msg"), "msg")?,
16723        })
16724    }
16725    #[allow(unused_variables)]
16726    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16727        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16728        match field {
16729            "request" => Ok(self.request.clone().into()),
16730            "success" => Ok(self.success.clone().into()),
16731            "msg" => Ok(self.msg.clone().into()),
16732            _ => Err(ParseError::MissingGameEventValue {
16733                ty: "QuestResponse",
16734                field: field.into(),
16735            }),
16736        }
16737    }
16738    #[allow(unused_variables)]
16739    fn write(
16740        &self,
16741        stream: &mut BitWriteStream<LittleEndian>,
16742        definition: &GameEventDefinition,
16743    ) -> Result<()> {
16744        for entry in &definition.entries {
16745            let value = self
16746                .get_field(&entry.name)
16747                .unwrap_or_else(|_| entry.kind.default_value());
16748            stream.write(&value)?;
16749        }
16750        Ok(())
16751    }
16752}
16753#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16754#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16755pub struct QuestProgressEvent {
16756    pub owner: u16,
16757    pub scorer: u16,
16758    pub kind: u8,
16759    pub completed: bool,
16760    pub quest_definition_index: u32,
16761}
16762impl QuestProgressEvent {
16763    #[allow(unused_variables)]
16764    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16765        Ok(QuestProgressEvent {
16766            owner: read_value::<u16>(stream, definition.get_entry("owner"), "owner")?,
16767            scorer: read_value::<u16>(stream, definition.get_entry("scorer"), "scorer")?,
16768            kind: read_value::<u8>(stream, definition.get_entry("type"), "kind")?,
16769            completed: read_value::<bool>(stream, definition.get_entry("completed"), "completed")?,
16770            quest_definition_index: read_value::<u32>(
16771                stream,
16772                definition.get_entry("quest_defindex"),
16773                "quest_definition_index",
16774            )?,
16775        })
16776    }
16777    #[allow(unused_variables)]
16778    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16779        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16780        match field {
16781            "owner" => Ok(self.owner.clone().into()),
16782            "scorer" => Ok(self.scorer.clone().into()),
16783            "type" => Ok(self.kind.clone().into()),
16784            "completed" => Ok(self.completed.clone().into()),
16785            "quest_defindex" => Ok(self.quest_definition_index.clone().into()),
16786            _ => Err(ParseError::MissingGameEventValue {
16787                ty: "QuestProgress",
16788                field: field.into(),
16789            }),
16790        }
16791    }
16792    #[allow(unused_variables)]
16793    fn write(
16794        &self,
16795        stream: &mut BitWriteStream<LittleEndian>,
16796        definition: &GameEventDefinition,
16797    ) -> Result<()> {
16798        for entry in &definition.entries {
16799            let value = self
16800                .get_field(&entry.name)
16801                .unwrap_or_else(|_| entry.kind.default_value());
16802            stream.write(&value)?;
16803        }
16804        Ok(())
16805    }
16806}
16807#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16808#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16809pub struct ProjectileRemovedEvent {
16810    pub attacker: u8,
16811    pub weapon_def_index: u32,
16812    pub num_hit: u8,
16813    pub num_direct_hit: u8,
16814}
16815impl ProjectileRemovedEvent {
16816    #[allow(unused_variables)]
16817    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16818        Ok(ProjectileRemovedEvent {
16819            attacker: read_value::<u8>(stream, definition.get_entry("attacker"), "attacker")?,
16820            weapon_def_index: read_value::<u32>(
16821                stream,
16822                definition.get_entry("weapon_def_index"),
16823                "weapon_def_index",
16824            )?,
16825            num_hit: read_value::<u8>(stream, definition.get_entry("num_hit"), "num_hit")?,
16826            num_direct_hit: read_value::<u8>(
16827                stream,
16828                definition.get_entry("num_direct_hit"),
16829                "num_direct_hit",
16830            )?,
16831        })
16832    }
16833    #[allow(unused_variables)]
16834    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16835        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16836        match field {
16837            "attacker" => Ok(self.attacker.clone().into()),
16838            "weapon_def_index" => Ok(self.weapon_def_index.clone().into()),
16839            "num_hit" => Ok(self.num_hit.clone().into()),
16840            "num_direct_hit" => Ok(self.num_direct_hit.clone().into()),
16841            _ => Err(ParseError::MissingGameEventValue {
16842                ty: "ProjectileRemoved",
16843                field: field.into(),
16844            }),
16845        }
16846    }
16847    #[allow(unused_variables)]
16848    fn write(
16849        &self,
16850        stream: &mut BitWriteStream<LittleEndian>,
16851        definition: &GameEventDefinition,
16852    ) -> Result<()> {
16853        for entry in &definition.entries {
16854            let value = self
16855                .get_field(&entry.name)
16856                .unwrap_or_else(|_| entry.kind.default_value());
16857            stream.write(&value)?;
16858        }
16859        Ok(())
16860    }
16861}
16862#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16863#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16864pub struct QuestMapDataChangedEvent {}
16865impl QuestMapDataChangedEvent {
16866    #[allow(unused_variables)]
16867    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16868        Ok(QuestMapDataChangedEvent {})
16869    }
16870    #[allow(unused_variables)]
16871    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16872        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16873        match field {
16874            _ => Err(ParseError::MissingGameEventValue {
16875                ty: "QuestMapDataChanged",
16876                field: field.into(),
16877            }),
16878        }
16879    }
16880    #[allow(unused_variables)]
16881    fn write(
16882        &self,
16883        stream: &mut BitWriteStream<LittleEndian>,
16884        definition: &GameEventDefinition,
16885    ) -> Result<()> {
16886        for entry in &definition.entries {
16887            let value = self
16888                .get_field(&entry.name)
16889                .unwrap_or_else(|_| entry.kind.default_value());
16890            stream.write(&value)?;
16891        }
16892        Ok(())
16893    }
16894}
16895#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16896#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16897pub struct GasDousedPlayerIgnitedEvent {
16898    pub igniter: u16,
16899    pub douser: u16,
16900    pub victim: u16,
16901}
16902impl GasDousedPlayerIgnitedEvent {
16903    #[allow(unused_variables)]
16904    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16905        Ok(GasDousedPlayerIgnitedEvent {
16906            igniter: read_value::<u16>(stream, definition.get_entry("igniter"), "igniter")?,
16907            douser: read_value::<u16>(stream, definition.get_entry("douser"), "douser")?,
16908            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
16909        })
16910    }
16911    #[allow(unused_variables)]
16912    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16913        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16914        match field {
16915            "igniter" => Ok(self.igniter.clone().into()),
16916            "douser" => Ok(self.douser.clone().into()),
16917            "victim" => Ok(self.victim.clone().into()),
16918            _ => Err(ParseError::MissingGameEventValue {
16919                ty: "GasDousedPlayerIgnited",
16920                field: field.into(),
16921            }),
16922        }
16923    }
16924    #[allow(unused_variables)]
16925    fn write(
16926        &self,
16927        stream: &mut BitWriteStream<LittleEndian>,
16928        definition: &GameEventDefinition,
16929    ) -> Result<()> {
16930        for entry in &definition.entries {
16931            let value = self
16932                .get_field(&entry.name)
16933                .unwrap_or_else(|_| entry.kind.default_value());
16934            stream.write(&value)?;
16935        }
16936        Ok(())
16937    }
16938}
16939#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16940#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16941pub struct QuestTurnInStateEvent {
16942    pub state: u16,
16943}
16944impl QuestTurnInStateEvent {
16945    #[allow(unused_variables)]
16946    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16947        Ok(QuestTurnInStateEvent {
16948            state: read_value::<u16>(stream, definition.get_entry("state"), "state")?,
16949        })
16950    }
16951    #[allow(unused_variables)]
16952    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16953        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16954        match field {
16955            "state" => Ok(self.state.clone().into()),
16956            _ => Err(ParseError::MissingGameEventValue {
16957                ty: "QuestTurnInState",
16958                field: field.into(),
16959            }),
16960        }
16961    }
16962    #[allow(unused_variables)]
16963    fn write(
16964        &self,
16965        stream: &mut BitWriteStream<LittleEndian>,
16966        definition: &GameEventDefinition,
16967    ) -> Result<()> {
16968        for entry in &definition.entries {
16969            let value = self
16970                .get_field(&entry.name)
16971                .unwrap_or_else(|_| entry.kind.default_value());
16972            stream.write(&value)?;
16973        }
16974        Ok(())
16975    }
16976}
16977#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16978#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
16979pub struct ItemsAcknowledgedEvent {}
16980impl ItemsAcknowledgedEvent {
16981    #[allow(unused_variables)]
16982    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
16983        Ok(ItemsAcknowledgedEvent {})
16984    }
16985    #[allow(unused_variables)]
16986    fn get_field(&self, field: &str) -> Result<GameEventValue> {
16987        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
16988        match field {
16989            _ => Err(ParseError::MissingGameEventValue {
16990                ty: "ItemsAcknowledged",
16991                field: field.into(),
16992            }),
16993        }
16994    }
16995    #[allow(unused_variables)]
16996    fn write(
16997        &self,
16998        stream: &mut BitWriteStream<LittleEndian>,
16999        definition: &GameEventDefinition,
17000    ) -> Result<()> {
17001        for entry in &definition.entries {
17002            let value = self
17003                .get_field(&entry.name)
17004                .unwrap_or_else(|_| entry.kind.default_value());
17005            stream.write(&value)?;
17006        }
17007        Ok(())
17008    }
17009}
17010#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17011#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17012pub struct CapperKilledEvent {
17013    pub blocker: u16,
17014    pub victim: u16,
17015}
17016impl CapperKilledEvent {
17017    #[allow(unused_variables)]
17018    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17019        Ok(CapperKilledEvent {
17020            blocker: read_value::<u16>(stream, definition.get_entry("blocker"), "blocker")?,
17021            victim: read_value::<u16>(stream, definition.get_entry("victim"), "victim")?,
17022        })
17023    }
17024    #[allow(unused_variables)]
17025    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17026        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17027        match field {
17028            "blocker" => Ok(self.blocker.clone().into()),
17029            "victim" => Ok(self.victim.clone().into()),
17030            _ => Err(ParseError::MissingGameEventValue {
17031                ty: "CapperKilled",
17032                field: field.into(),
17033            }),
17034        }
17035    }
17036    #[allow(unused_variables)]
17037    fn write(
17038        &self,
17039        stream: &mut BitWriteStream<LittleEndian>,
17040        definition: &GameEventDefinition,
17041    ) -> Result<()> {
17042        for entry in &definition.entries {
17043            let value = self
17044                .get_field(&entry.name)
17045                .unwrap_or_else(|_| entry.kind.default_value());
17046            stream.write(&value)?;
17047        }
17048        Ok(())
17049    }
17050}
17051#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17052#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17053pub struct MainMenuStabilizedEvent {}
17054impl MainMenuStabilizedEvent {
17055    #[allow(unused_variables)]
17056    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17057        Ok(MainMenuStabilizedEvent {})
17058    }
17059    #[allow(unused_variables)]
17060    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17061        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17062        match field {
17063            _ => Err(ParseError::MissingGameEventValue {
17064                ty: "MainMenuStabilized",
17065                field: field.into(),
17066            }),
17067        }
17068    }
17069    #[allow(unused_variables)]
17070    fn write(
17071        &self,
17072        stream: &mut BitWriteStream<LittleEndian>,
17073        definition: &GameEventDefinition,
17074    ) -> Result<()> {
17075        for entry in &definition.entries {
17076            let value = self
17077                .get_field(&entry.name)
17078                .unwrap_or_else(|_| entry.kind.default_value());
17079            stream.write(&value)?;
17080        }
17081        Ok(())
17082    }
17083}
17084#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17085#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17086pub struct WorldStatusChangedEvent {}
17087impl WorldStatusChangedEvent {
17088    #[allow(unused_variables)]
17089    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17090        Ok(WorldStatusChangedEvent {})
17091    }
17092    #[allow(unused_variables)]
17093    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17094        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17095        match field {
17096            _ => Err(ParseError::MissingGameEventValue {
17097                ty: "WorldStatusChanged",
17098                field: field.into(),
17099            }),
17100        }
17101    }
17102    #[allow(unused_variables)]
17103    fn write(
17104        &self,
17105        stream: &mut BitWriteStream<LittleEndian>,
17106        definition: &GameEventDefinition,
17107    ) -> Result<()> {
17108        for entry in &definition.entries {
17109            let value = self
17110                .get_field(&entry.name)
17111                .unwrap_or_else(|_| entry.kind.default_value());
17112            stream.write(&value)?;
17113        }
17114        Ok(())
17115    }
17116}
17117#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17118#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17119pub struct HLTVStatusEvent {
17120    pub clients: u32,
17121    pub slots: u32,
17122    pub proxies: u16,
17123    pub master: MaybeUtf8String,
17124}
17125impl HLTVStatusEvent {
17126    #[allow(unused_variables)]
17127    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17128        Ok(HLTVStatusEvent {
17129            clients: read_value::<u32>(stream, definition.get_entry("clients"), "clients")?,
17130            slots: read_value::<u32>(stream, definition.get_entry("slots"), "slots")?,
17131            proxies: read_value::<u16>(stream, definition.get_entry("proxies"), "proxies")?,
17132            master: read_value::<MaybeUtf8String>(
17133                stream,
17134                definition.get_entry("master"),
17135                "master",
17136            )?,
17137        })
17138    }
17139    #[allow(unused_variables)]
17140    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17141        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17142        match field {
17143            "clients" => Ok(self.clients.clone().into()),
17144            "slots" => Ok(self.slots.clone().into()),
17145            "proxies" => Ok(self.proxies.clone().into()),
17146            "master" => Ok(self.master.clone().into()),
17147            _ => Err(ParseError::MissingGameEventValue {
17148                ty: "HLTVStatus",
17149                field: field.into(),
17150            }),
17151        }
17152    }
17153    #[allow(unused_variables)]
17154    fn write(
17155        &self,
17156        stream: &mut BitWriteStream<LittleEndian>,
17157        definition: &GameEventDefinition,
17158    ) -> Result<()> {
17159        for entry in &definition.entries {
17160            let value = self
17161                .get_field(&entry.name)
17162                .unwrap_or_else(|_| entry.kind.default_value());
17163            stream.write(&value)?;
17164        }
17165        Ok(())
17166    }
17167}
17168#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17169#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17170pub struct HLTVCameramanEvent {
17171    pub index: u16,
17172}
17173impl HLTVCameramanEvent {
17174    #[allow(unused_variables)]
17175    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17176        Ok(HLTVCameramanEvent {
17177            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
17178        })
17179    }
17180    #[allow(unused_variables)]
17181    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17182        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17183        match field {
17184            "index" => Ok(self.index.clone().into()),
17185            _ => Err(ParseError::MissingGameEventValue {
17186                ty: "HLTVCameraman",
17187                field: field.into(),
17188            }),
17189        }
17190    }
17191    #[allow(unused_variables)]
17192    fn write(
17193        &self,
17194        stream: &mut BitWriteStream<LittleEndian>,
17195        definition: &GameEventDefinition,
17196    ) -> Result<()> {
17197        for entry in &definition.entries {
17198            let value = self
17199                .get_field(&entry.name)
17200                .unwrap_or_else(|_| entry.kind.default_value());
17201            stream.write(&value)?;
17202        }
17203        Ok(())
17204    }
17205}
17206#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17207#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17208pub struct HLTVRankCameraEvent {
17209    pub index: u8,
17210    pub rank: f32,
17211    pub target: u16,
17212}
17213impl HLTVRankCameraEvent {
17214    #[allow(unused_variables)]
17215    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17216        Ok(HLTVRankCameraEvent {
17217            index: read_value::<u8>(stream, definition.get_entry("index"), "index")?,
17218            rank: read_value::<f32>(stream, definition.get_entry("rank"), "rank")?,
17219            target: read_value::<u16>(stream, definition.get_entry("target"), "target")?,
17220        })
17221    }
17222    #[allow(unused_variables)]
17223    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17224        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17225        match field {
17226            "index" => Ok(self.index.clone().into()),
17227            "rank" => Ok(self.rank.clone().into()),
17228            "target" => Ok(self.target.clone().into()),
17229            _ => Err(ParseError::MissingGameEventValue {
17230                ty: "HLTVRankCamera",
17231                field: field.into(),
17232            }),
17233        }
17234    }
17235    #[allow(unused_variables)]
17236    fn write(
17237        &self,
17238        stream: &mut BitWriteStream<LittleEndian>,
17239        definition: &GameEventDefinition,
17240    ) -> Result<()> {
17241        for entry in &definition.entries {
17242            let value = self
17243                .get_field(&entry.name)
17244                .unwrap_or_else(|_| entry.kind.default_value());
17245            stream.write(&value)?;
17246        }
17247        Ok(())
17248    }
17249}
17250#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17251#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17252pub struct HLTVRankEntityEvent {
17253    pub index: u16,
17254    pub rank: f32,
17255    pub target: u16,
17256}
17257impl HLTVRankEntityEvent {
17258    #[allow(unused_variables)]
17259    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17260        Ok(HLTVRankEntityEvent {
17261            index: read_value::<u16>(stream, definition.get_entry("index"), "index")?,
17262            rank: read_value::<f32>(stream, definition.get_entry("rank"), "rank")?,
17263            target: read_value::<u16>(stream, definition.get_entry("target"), "target")?,
17264        })
17265    }
17266    #[allow(unused_variables)]
17267    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17268        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17269        match field {
17270            "index" => Ok(self.index.clone().into()),
17271            "rank" => Ok(self.rank.clone().into()),
17272            "target" => Ok(self.target.clone().into()),
17273            _ => Err(ParseError::MissingGameEventValue {
17274                ty: "HLTVRankEntity",
17275                field: field.into(),
17276            }),
17277        }
17278    }
17279    #[allow(unused_variables)]
17280    fn write(
17281        &self,
17282        stream: &mut BitWriteStream<LittleEndian>,
17283        definition: &GameEventDefinition,
17284    ) -> Result<()> {
17285        for entry in &definition.entries {
17286            let value = self
17287                .get_field(&entry.name)
17288                .unwrap_or_else(|_| entry.kind.default_value());
17289            stream.write(&value)?;
17290        }
17291        Ok(())
17292    }
17293}
17294#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17295#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17296pub struct HLTVFixedEvent {
17297    pub pos_x: u32,
17298    pub pos_y: u32,
17299    pub pos_z: u32,
17300    pub theta: u16,
17301    pub phi: u16,
17302    pub offset: u16,
17303    pub fov: f32,
17304    pub target: u16,
17305}
17306impl HLTVFixedEvent {
17307    #[allow(unused_variables)]
17308    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17309        Ok(HLTVFixedEvent {
17310            pos_x: read_value::<u32>(stream, definition.get_entry("posx"), "pos_x")?,
17311            pos_y: read_value::<u32>(stream, definition.get_entry("posy"), "pos_y")?,
17312            pos_z: read_value::<u32>(stream, definition.get_entry("posz"), "pos_z")?,
17313            theta: read_value::<u16>(stream, definition.get_entry("theta"), "theta")?,
17314            phi: read_value::<u16>(stream, definition.get_entry("phi"), "phi")?,
17315            offset: read_value::<u16>(stream, definition.get_entry("offset"), "offset")?,
17316            fov: read_value::<f32>(stream, definition.get_entry("fov"), "fov")?,
17317            target: read_value::<u16>(stream, definition.get_entry("target"), "target")?,
17318        })
17319    }
17320    #[allow(unused_variables)]
17321    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17322        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17323        match field {
17324            "posx" => Ok(self.pos_x.clone().into()),
17325            "posy" => Ok(self.pos_y.clone().into()),
17326            "posz" => Ok(self.pos_z.clone().into()),
17327            "theta" => Ok(self.theta.clone().into()),
17328            "phi" => Ok(self.phi.clone().into()),
17329            "offset" => Ok(self.offset.clone().into()),
17330            "fov" => Ok(self.fov.clone().into()),
17331            "target" => Ok(self.target.clone().into()),
17332            _ => Err(ParseError::MissingGameEventValue {
17333                ty: "HLTVFixed",
17334                field: field.into(),
17335            }),
17336        }
17337    }
17338    #[allow(unused_variables)]
17339    fn write(
17340        &self,
17341        stream: &mut BitWriteStream<LittleEndian>,
17342        definition: &GameEventDefinition,
17343    ) -> Result<()> {
17344        for entry in &definition.entries {
17345            let value = self
17346                .get_field(&entry.name)
17347                .unwrap_or_else(|_| entry.kind.default_value());
17348            stream.write(&value)?;
17349        }
17350        Ok(())
17351    }
17352}
17353#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17354#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17355pub struct HLTVChaseEvent {
17356    pub target_1: u16,
17357    pub target_2: u16,
17358    pub distance: u16,
17359    pub theta: u16,
17360    pub phi: u16,
17361    pub inertia: u8,
17362    pub in_eye: u8,
17363}
17364impl HLTVChaseEvent {
17365    #[allow(unused_variables)]
17366    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17367        Ok(HLTVChaseEvent {
17368            target_1: read_value::<u16>(stream, definition.get_entry("target1"), "target_1")?,
17369            target_2: read_value::<u16>(stream, definition.get_entry("target2"), "target_2")?,
17370            distance: read_value::<u16>(stream, definition.get_entry("distance"), "distance")?,
17371            theta: read_value::<u16>(stream, definition.get_entry("theta"), "theta")?,
17372            phi: read_value::<u16>(stream, definition.get_entry("phi"), "phi")?,
17373            inertia: read_value::<u8>(stream, definition.get_entry("inertia"), "inertia")?,
17374            in_eye: read_value::<u8>(stream, definition.get_entry("ineye"), "in_eye")?,
17375        })
17376    }
17377    #[allow(unused_variables)]
17378    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17379        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17380        match field {
17381            "target1" => Ok(self.target_1.clone().into()),
17382            "target2" => Ok(self.target_2.clone().into()),
17383            "distance" => Ok(self.distance.clone().into()),
17384            "theta" => Ok(self.theta.clone().into()),
17385            "phi" => Ok(self.phi.clone().into()),
17386            "inertia" => Ok(self.inertia.clone().into()),
17387            "ineye" => Ok(self.in_eye.clone().into()),
17388            _ => Err(ParseError::MissingGameEventValue {
17389                ty: "HLTVChase",
17390                field: field.into(),
17391            }),
17392        }
17393    }
17394    #[allow(unused_variables)]
17395    fn write(
17396        &self,
17397        stream: &mut BitWriteStream<LittleEndian>,
17398        definition: &GameEventDefinition,
17399    ) -> Result<()> {
17400        for entry in &definition.entries {
17401            let value = self
17402                .get_field(&entry.name)
17403                .unwrap_or_else(|_| entry.kind.default_value());
17404            stream.write(&value)?;
17405        }
17406        Ok(())
17407    }
17408}
17409#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17410#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17411pub struct HLTVMessageEvent {
17412    pub text: MaybeUtf8String,
17413}
17414impl HLTVMessageEvent {
17415    #[allow(unused_variables)]
17416    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17417        Ok(HLTVMessageEvent {
17418            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
17419        })
17420    }
17421    #[allow(unused_variables)]
17422    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17423        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17424        match field {
17425            "text" => Ok(self.text.clone().into()),
17426            _ => Err(ParseError::MissingGameEventValue {
17427                ty: "HLTVMessage",
17428                field: field.into(),
17429            }),
17430        }
17431    }
17432    #[allow(unused_variables)]
17433    fn write(
17434        &self,
17435        stream: &mut BitWriteStream<LittleEndian>,
17436        definition: &GameEventDefinition,
17437    ) -> Result<()> {
17438        for entry in &definition.entries {
17439            let value = self
17440                .get_field(&entry.name)
17441                .unwrap_or_else(|_| entry.kind.default_value());
17442            stream.write(&value)?;
17443        }
17444        Ok(())
17445    }
17446}
17447#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17448#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17449pub struct HLTVTitleEvent {
17450    pub text: MaybeUtf8String,
17451}
17452impl HLTVTitleEvent {
17453    #[allow(unused_variables)]
17454    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17455        Ok(HLTVTitleEvent {
17456            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
17457        })
17458    }
17459    #[allow(unused_variables)]
17460    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17461        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17462        match field {
17463            "text" => Ok(self.text.clone().into()),
17464            _ => Err(ParseError::MissingGameEventValue {
17465                ty: "HLTVTitle",
17466                field: field.into(),
17467            }),
17468        }
17469    }
17470    #[allow(unused_variables)]
17471    fn write(
17472        &self,
17473        stream: &mut BitWriteStream<LittleEndian>,
17474        definition: &GameEventDefinition,
17475    ) -> Result<()> {
17476        for entry in &definition.entries {
17477            let value = self
17478                .get_field(&entry.name)
17479                .unwrap_or_else(|_| entry.kind.default_value());
17480            stream.write(&value)?;
17481        }
17482        Ok(())
17483    }
17484}
17485#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17486#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17487pub struct HLTVChatEvent {
17488    pub text: MaybeUtf8String,
17489}
17490impl HLTVChatEvent {
17491    #[allow(unused_variables)]
17492    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17493        Ok(HLTVChatEvent {
17494            text: read_value::<MaybeUtf8String>(stream, definition.get_entry("text"), "text")?,
17495        })
17496    }
17497    #[allow(unused_variables)]
17498    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17499        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17500        match field {
17501            "text" => Ok(self.text.clone().into()),
17502            _ => Err(ParseError::MissingGameEventValue {
17503                ty: "HLTVChat",
17504                field: field.into(),
17505            }),
17506        }
17507    }
17508    #[allow(unused_variables)]
17509    fn write(
17510        &self,
17511        stream: &mut BitWriteStream<LittleEndian>,
17512        definition: &GameEventDefinition,
17513    ) -> Result<()> {
17514        for entry in &definition.entries {
17515            let value = self
17516                .get_field(&entry.name)
17517                .unwrap_or_else(|_| entry.kind.default_value());
17518            stream.write(&value)?;
17519        }
17520        Ok(())
17521    }
17522}
17523#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17524#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17525pub struct ReplayStartRecordEvent {}
17526impl ReplayStartRecordEvent {
17527    #[allow(unused_variables)]
17528    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17529        Ok(ReplayStartRecordEvent {})
17530    }
17531    #[allow(unused_variables)]
17532    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17533        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17534        match field {
17535            _ => Err(ParseError::MissingGameEventValue {
17536                ty: "ReplayStartRecord",
17537                field: field.into(),
17538            }),
17539        }
17540    }
17541    #[allow(unused_variables)]
17542    fn write(
17543        &self,
17544        stream: &mut BitWriteStream<LittleEndian>,
17545        definition: &GameEventDefinition,
17546    ) -> Result<()> {
17547        for entry in &definition.entries {
17548            let value = self
17549                .get_field(&entry.name)
17550                .unwrap_or_else(|_| entry.kind.default_value());
17551            stream.write(&value)?;
17552        }
17553        Ok(())
17554    }
17555}
17556#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17557#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17558pub struct ReplaySessionInfoEvent {
17559    pub sn: MaybeUtf8String,
17560    pub di: u8,
17561    pub cb: u32,
17562    pub st: u32,
17563}
17564impl ReplaySessionInfoEvent {
17565    #[allow(unused_variables)]
17566    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17567        Ok(ReplaySessionInfoEvent {
17568            sn: read_value::<MaybeUtf8String>(stream, definition.get_entry("sn"), "sn")?,
17569            di: read_value::<u8>(stream, definition.get_entry("di"), "di")?,
17570            cb: read_value::<u32>(stream, definition.get_entry("cb"), "cb")?,
17571            st: read_value::<u32>(stream, definition.get_entry("st"), "st")?,
17572        })
17573    }
17574    #[allow(unused_variables)]
17575    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17576        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17577        match field {
17578            "sn" => Ok(self.sn.clone().into()),
17579            "di" => Ok(self.di.clone().into()),
17580            "cb" => Ok(self.cb.clone().into()),
17581            "st" => Ok(self.st.clone().into()),
17582            _ => Err(ParseError::MissingGameEventValue {
17583                ty: "ReplaySessionInfo",
17584                field: field.into(),
17585            }),
17586        }
17587    }
17588    #[allow(unused_variables)]
17589    fn write(
17590        &self,
17591        stream: &mut BitWriteStream<LittleEndian>,
17592        definition: &GameEventDefinition,
17593    ) -> Result<()> {
17594        for entry in &definition.entries {
17595            let value = self
17596                .get_field(&entry.name)
17597                .unwrap_or_else(|_| entry.kind.default_value());
17598            stream.write(&value)?;
17599        }
17600        Ok(())
17601    }
17602}
17603#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17604#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17605pub struct ReplayEndRecordEvent {}
17606impl ReplayEndRecordEvent {
17607    #[allow(unused_variables)]
17608    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17609        Ok(ReplayEndRecordEvent {})
17610    }
17611    #[allow(unused_variables)]
17612    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17613        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17614        match field {
17615            _ => Err(ParseError::MissingGameEventValue {
17616                ty: "ReplayEndRecord",
17617                field: field.into(),
17618            }),
17619        }
17620    }
17621    #[allow(unused_variables)]
17622    fn write(
17623        &self,
17624        stream: &mut BitWriteStream<LittleEndian>,
17625        definition: &GameEventDefinition,
17626    ) -> Result<()> {
17627        for entry in &definition.entries {
17628            let value = self
17629                .get_field(&entry.name)
17630                .unwrap_or_else(|_| entry.kind.default_value());
17631            stream.write(&value)?;
17632        }
17633        Ok(())
17634    }
17635}
17636#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17637#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17638pub struct ReplayReplaysAvailableEvent {}
17639impl ReplayReplaysAvailableEvent {
17640    #[allow(unused_variables)]
17641    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17642        Ok(ReplayReplaysAvailableEvent {})
17643    }
17644    #[allow(unused_variables)]
17645    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17646        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17647        match field {
17648            _ => Err(ParseError::MissingGameEventValue {
17649                ty: "ReplayReplaysAvailable",
17650                field: field.into(),
17651            }),
17652        }
17653    }
17654    #[allow(unused_variables)]
17655    fn write(
17656        &self,
17657        stream: &mut BitWriteStream<LittleEndian>,
17658        definition: &GameEventDefinition,
17659    ) -> Result<()> {
17660        for entry in &definition.entries {
17661            let value = self
17662                .get_field(&entry.name)
17663                .unwrap_or_else(|_| entry.kind.default_value());
17664            stream.write(&value)?;
17665        }
17666        Ok(())
17667    }
17668}
17669#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17670#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17671pub struct ReplayServerErrorEvent {
17672    pub error: MaybeUtf8String,
17673}
17674impl ReplayServerErrorEvent {
17675    #[allow(unused_variables)]
17676    fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
17677        Ok(ReplayServerErrorEvent {
17678            error: read_value::<MaybeUtf8String>(stream, definition.get_entry("error"), "error")?,
17679        })
17680    }
17681    #[allow(unused_variables)]
17682    fn get_field(&self, field: &str) -> Result<GameEventValue> {
17683        #[allow(clippy::clone_on_copy, clippy::match_single_binding)]
17684        match field {
17685            "error" => Ok(self.error.clone().into()),
17686            _ => Err(ParseError::MissingGameEventValue {
17687                ty: "ReplayServerError",
17688                field: field.into(),
17689            }),
17690        }
17691    }
17692    #[allow(unused_variables)]
17693    fn write(
17694        &self,
17695        stream: &mut BitWriteStream<LittleEndian>,
17696        definition: &GameEventDefinition,
17697    ) -> Result<()> {
17698        for entry in &definition.entries {
17699            let value = self
17700                .get_field(&entry.name)
17701                .unwrap_or_else(|_| entry.kind.default_value());
17702            stream.write(&value)?;
17703        }
17704        Ok(())
17705    }
17706}
17707#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
17708#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
17709#[serde(tag = "type")]
17710pub enum GameEvent {
17711    ServerSpawn(Box<ServerSpawnEvent>),
17712    ServerChangeLevelFailed(ServerChangeLevelFailedEvent),
17713    ServerShutdown(ServerShutdownEvent),
17714    ServerCvar(ServerCvarEvent),
17715    ServerMessage(ServerMessageEvent),
17716    ServerAddBan(Box<ServerAddBanEvent>),
17717    ServerRemoveBan(ServerRemoveBanEvent),
17718    PlayerConnect(PlayerConnectEvent),
17719    PlayerConnectClient(PlayerConnectClientEvent),
17720    PlayerInfo(PlayerInfoEvent),
17721    PlayerDisconnect(PlayerDisconnectEvent),
17722    PlayerActivate(PlayerActivateEvent),
17723    PlayerSay(PlayerSayEvent),
17724    ClientDisconnect(ClientDisconnectEvent),
17725    ClientBeginConnect(ClientBeginConnectEvent),
17726    ClientConnected(ClientConnectedEvent),
17727    ClientFullConnect(ClientFullConnectEvent),
17728    HostQuit(HostQuitEvent),
17729    TeamInfo(TeamInfoEvent),
17730    TeamScore(TeamScoreEvent),
17731    TeamPlayBroadcastAudio(TeamPlayBroadcastAudioEvent),
17732    PlayerTeam(PlayerTeamEvent),
17733    PlayerClass(PlayerClassEvent),
17734    PlayerDeath(Box<PlayerDeathEvent>),
17735    PlayerHurt(PlayerHurtEvent),
17736    PlayerChat(PlayerChatEvent),
17737    PlayerScore(PlayerScoreEvent),
17738    PlayerSpawn(PlayerSpawnEvent),
17739    PlayerShoot(PlayerShootEvent),
17740    PlayerUse(PlayerUseEvent),
17741    PlayerChangeName(PlayerChangeNameEvent),
17742    PlayerHintMessage(PlayerHintMessageEvent),
17743    BasePlayerTeleported(BasePlayerTeleportedEvent),
17744    GameInit(GameInitEvent),
17745    GameNewMap(GameNewMapEvent),
17746    GameStart(GameStartEvent),
17747    GameEnd(GameEndEvent),
17748    RoundStart(RoundStartEvent),
17749    RoundEnd(RoundEndEvent),
17750    GameMessage(GameMessageEvent),
17751    BreakBreakable(BreakBreakableEvent),
17752    BreakProp(BreakPropEvent),
17753    EntityKilled(EntityKilledEvent),
17754    BonusUpdated(BonusUpdatedEvent),
17755    AchievementEvent(AchievementEventEvent),
17756    AchievementIncrement(AchievementIncrementEvent),
17757    PhysgunPickup(PhysgunPickupEvent),
17758    FlareIgniteNpc(FlareIgniteNpcEvent),
17759    HelicopterGrenadePuntMiss(HelicopterGrenadePuntMissEvent),
17760    UserDataDownloaded(UserDataDownloadedEvent),
17761    RagdollDissolved(RagdollDissolvedEvent),
17762    HLTVChangedMode(HLTVChangedModeEvent),
17763    HLTVChangedTarget(HLTVChangedTargetEvent),
17764    VoteEnded(VoteEndedEvent),
17765    VoteStarted(VoteStartedEvent),
17766    VoteChanged(VoteChangedEvent),
17767    VotePassed(VotePassedEvent),
17768    VoteFailed(VoteFailedEvent),
17769    VoteCast(VoteCastEvent),
17770    VoteOptions(Box<VoteOptionsEvent>),
17771    ReplaySaved(ReplaySavedEvent),
17772    EnteredPerformanceMode(EnteredPerformanceModeEvent),
17773    BrowseReplays(BrowseReplaysEvent),
17774    ReplayYoutubeStats(ReplayYoutubeStatsEvent),
17775    InventoryUpdated(InventoryUpdatedEvent),
17776    CartUpdated(CartUpdatedEvent),
17777    StorePriceSheetUpdated(StorePriceSheetUpdatedEvent),
17778    EconInventoryConnected(EconInventoryConnectedEvent),
17779    ItemSchemaInitialized(ItemSchemaInitializedEvent),
17780    GcNewSession(GcNewSessionEvent),
17781    GcLostSession(GcLostSessionEvent),
17782    IntroFinish(IntroFinishEvent),
17783    IntroNextCamera(IntroNextCameraEvent),
17784    PlayerChangeClass(PlayerChangeClassEvent),
17785    TfMapTimeRemaining(TfMapTimeRemainingEvent),
17786    TfGameOver(TfGameOverEvent),
17787    CtfFlagCaptured(CtfFlagCapturedEvent),
17788    ControlPointInitialized(ControlPointInitializedEvent),
17789    ControlPointUpdateImages(ControlPointUpdateImagesEvent),
17790    ControlPointUpdateLayout(ControlPointUpdateLayoutEvent),
17791    ControlPointUpdateCapping(ControlPointUpdateCappingEvent),
17792    ControlPointUpdateOwner(ControlPointUpdateOwnerEvent),
17793    ControlPointStartTouch(ControlPointStartTouchEvent),
17794    ControlPointEndTouch(ControlPointEndTouchEvent),
17795    ControlPointPulseElement(ControlPointPulseElementEvent),
17796    ControlPointFakeCapture(ControlPointFakeCaptureEvent),
17797    ControlPointFakeCaptureMultiplier(ControlPointFakeCaptureMultiplierEvent),
17798    TeamPlayRoundSelected(TeamPlayRoundSelectedEvent),
17799    TeamPlayRoundStart(TeamPlayRoundStartEvent),
17800    TeamPlayRoundActive(TeamPlayRoundActiveEvent),
17801    TeamPlayWaitingBegins(TeamPlayWaitingBeginsEvent),
17802    TeamPlayWaitingEnds(TeamPlayWaitingEndsEvent),
17803    TeamPlayWaitingAboutToEnd(TeamPlayWaitingAboutToEndEvent),
17804    TeamPlayRestartRound(TeamPlayRestartRoundEvent),
17805    TeamPlayReadyRestart(TeamPlayReadyRestartEvent),
17806    TeamPlayRoundRestartSeconds(TeamPlayRoundRestartSecondsEvent),
17807    TeamPlayTeamReady(TeamPlayTeamReadyEvent),
17808    TeamPlayRoundWin(TeamPlayRoundWinEvent),
17809    TeamPlayUpdateTimer(TeamPlayUpdateTimerEvent),
17810    TeamPlayRoundStalemate(TeamPlayRoundStalemateEvent),
17811    TeamPlayOvertimeBegin(TeamPlayOvertimeBeginEvent),
17812    TeamPlayOvertimeEnd(TeamPlayOvertimeEndEvent),
17813    TeamPlaySuddenDeathBegin(TeamPlaySuddenDeathBeginEvent),
17814    TeamPlaySuddenDeathEnd(TeamPlaySuddenDeathEndEvent),
17815    TeamPlayGameOver(TeamPlayGameOverEvent),
17816    TeamPlayMapTimeRemaining(TeamPlayMapTimeRemainingEvent),
17817    TeamPlayTimerFlash(TeamPlayTimerFlashEvent),
17818    TeamPlayTimerTimeAdded(TeamPlayTimerTimeAddedEvent),
17819    TeamPlayPointStartCapture(TeamPlayPointStartCaptureEvent),
17820    TeamPlayPointCaptured(TeamPlayPointCapturedEvent),
17821    TeamPlayPointLocked(TeamPlayPointLockedEvent),
17822    TeamPlayPointUnlocked(TeamPlayPointUnlockedEvent),
17823    TeamPlayCaptureBroken(TeamPlayCaptureBrokenEvent),
17824    TeamPlayCaptureBlocked(TeamPlayCaptureBlockedEvent),
17825    TeamPlayFlagEvent(TeamPlayFlagEventEvent),
17826    TeamPlayWinPanel(TeamPlayWinPanelEvent),
17827    TeamPlayTeamBalancedPlayer(TeamPlayTeamBalancedPlayerEvent),
17828    TeamPlaySetupFinished(TeamPlaySetupFinishedEvent),
17829    TeamPlayAlert(TeamPlayAlertEvent),
17830    TrainingComplete(TrainingCompleteEvent),
17831    ShowFreezePanel(ShowFreezePanelEvent),
17832    HideFreezePanel(HideFreezePanelEvent),
17833    FreezeCamStarted(FreezeCamStartedEvent),
17834    LocalPlayerChangeTeam(LocalPlayerChangeTeamEvent),
17835    LocalPlayerScoreChanged(LocalPlayerScoreChangedEvent),
17836    LocalPlayerChangeClass(LocalPlayerChangeClassEvent),
17837    LocalPlayerRespawn(LocalPlayerRespawnEvent),
17838    BuildingInfoChanged(BuildingInfoChangedEvent),
17839    LocalPlayerChangeDisguise(LocalPlayerChangeDisguiseEvent),
17840    PlayerAccountChanged(PlayerAccountChangedEvent),
17841    SpyPdaReset(SpyPdaResetEvent),
17842    FlagStatusUpdate(FlagStatusUpdateEvent),
17843    PlayerStatsUpdated(PlayerStatsUpdatedEvent),
17844    PlayingCommentary(PlayingCommentaryEvent),
17845    PlayerChargeDeployed(PlayerChargeDeployedEvent),
17846    PlayerBuiltObject(PlayerBuiltObjectEvent),
17847    PlayerUpgradedObject(PlayerUpgradedObjectEvent),
17848    PlayerCarryObject(PlayerCarryObjectEvent),
17849    PlayerDropObject(PlayerDropObjectEvent),
17850    ObjectRemoved(ObjectRemovedEvent),
17851    ObjectDestroyed(ObjectDestroyedEvent),
17852    ObjectDetonated(ObjectDetonatedEvent),
17853    AchievementEarned(AchievementEarnedEvent),
17854    SpecTargetUpdated(SpecTargetUpdatedEvent),
17855    TournamentStateUpdate(TournamentStateUpdateEvent),
17856    TournamentEnableCountdown(TournamentEnableCountdownEvent),
17857    PlayerCalledForMedic(PlayerCalledForMedicEvent),
17858    PlayerAskedForBall(PlayerAskedForBallEvent),
17859    LocalPlayerBecameObserver(LocalPlayerBecameObserverEvent),
17860    PlayerIgnitedInv(PlayerIgnitedInvEvent),
17861    PlayerIgnited(PlayerIgnitedEvent),
17862    PlayerExtinguished(PlayerExtinguishedEvent),
17863    PlayerTeleported(PlayerTeleportedEvent),
17864    PlayerHealedMedicCall(PlayerHealedMedicCallEvent),
17865    LocalPlayerChargeReady(LocalPlayerChargeReadyEvent),
17866    LocalPlayerWindDown(LocalPlayerWindDownEvent),
17867    PlayerInvulned(PlayerInvulnedEvent),
17868    EscortSpeed(EscortSpeedEvent),
17869    EscortProgress(EscortProgressEvent),
17870    EscortRecede(EscortRecedeEvent),
17871    GameUIActivated(GameUIActivatedEvent),
17872    GameUIHidden(GameUIHiddenEvent),
17873    PlayerEscortScore(PlayerEscortScoreEvent),
17874    PlayerHealOnHit(PlayerHealOnHitEvent),
17875    PlayerStealSandvich(PlayerStealSandvichEvent),
17876    ShowClassLayout(ShowClassLayoutEvent),
17877    ShowVsPanel(ShowVsPanelEvent),
17878    PlayerDamaged(PlayerDamagedEvent),
17879    ArenaPlayerNotification(ArenaPlayerNotificationEvent),
17880    ArenaMatchMaxStreak(ArenaMatchMaxStreakEvent),
17881    ArenaRoundStart(ArenaRoundStartEvent),
17882    ArenaWinPanel(ArenaWinPanelEvent),
17883    PveWinPanel(PveWinPanelEvent),
17884    AirDash(AirDashEvent),
17885    Landed(LandedEvent),
17886    PlayerDamageDodged(PlayerDamageDodgedEvent),
17887    PlayerStunned(PlayerStunnedEvent),
17888    ScoutGrandSlam(ScoutGrandSlamEvent),
17889    ScoutSlamdollLanded(ScoutSlamdollLandedEvent),
17890    ArrowImpact(ArrowImpactEvent),
17891    PlayerJarated(PlayerJaratedEvent),
17892    PlayerJaratedFade(PlayerJaratedFadeEvent),
17893    PlayerShieldBlocked(PlayerShieldBlockedEvent),
17894    PlayerPinned(PlayerPinnedEvent),
17895    PlayerHealedByMedic(PlayerHealedByMedicEvent),
17896    PlayerSappedObject(PlayerSappedObjectEvent),
17897    ItemFound(ItemFoundEvent),
17898    ShowAnnotation(ShowAnnotationEvent),
17899    HideAnnotation(HideAnnotationEvent),
17900    PostInventoryApplication(PostInventoryApplicationEvent),
17901    ControlPointUnlockUpdated(ControlPointUnlockUpdatedEvent),
17902    DeployBuffBanner(DeployBuffBannerEvent),
17903    PlayerBuff(PlayerBuffEvent),
17904    MedicDeath(MedicDeathEvent),
17905    OvertimeNag(OvertimeNagEvent),
17906    TeamsChanged(TeamsChangedEvent),
17907    HalloweenPumpkinGrab(HalloweenPumpkinGrabEvent),
17908    RocketJump(RocketJumpEvent),
17909    RocketJumpLanded(RocketJumpLandedEvent),
17910    StickyJump(StickyJumpEvent),
17911    StickyJumpLanded(StickyJumpLandedEvent),
17912    RocketPackLaunch(RocketPackLaunchEvent),
17913    RocketPackLanded(RocketPackLandedEvent),
17914    MedicDefended(MedicDefendedEvent),
17915    LocalPlayerHealed(LocalPlayerHealedEvent),
17916    PlayerDestroyedPipeBomb(PlayerDestroyedPipeBombEvent),
17917    ObjectDeflected(ObjectDeflectedEvent),
17918    PlayerMvp(PlayerMvpEvent),
17919    RaidSpawnMob(RaidSpawnMobEvent),
17920    RaidSpawnSquad(RaidSpawnSquadEvent),
17921    NavBlocked(NavBlockedEvent),
17922    PathTrackPassed(PathTrackPassedEvent),
17923    NumCappersChanged(NumCappersChangedEvent),
17924    PlayerRegenerate(PlayerRegenerateEvent),
17925    UpdateStatusItem(UpdateStatusItemEvent),
17926    StatsResetRound(StatsResetRoundEvent),
17927    ScoreStatsAccumulatedUpdate(ScoreStatsAccumulatedUpdateEvent),
17928    ScoreStatsAccumulatedReset(ScoreStatsAccumulatedResetEvent),
17929    AchievementEarnedLocal(AchievementEarnedLocalEvent),
17930    PlayerHealed(PlayerHealedEvent),
17931    BuildingHealed(BuildingHealedEvent),
17932    ItemPickup(ItemPickupEvent),
17933    DuelStatus(DuelStatusEvent),
17934    FishNotice(Box<FishNoticeEvent>),
17935    FishNoticeArm(Box<FishNoticeArmEvent>),
17936    SlapNotice(Box<SlapNoticeEvent>),
17937    ThrowableHit(Box<ThrowableHitEvent>),
17938    PumpkinLordSummoned(PumpkinLordSummonedEvent),
17939    PumpkinLordKilled(PumpkinLordKilledEvent),
17940    MerasmusSummoned(MerasmusSummonedEvent),
17941    MerasmusKilled(MerasmusKilledEvent),
17942    MerasmusEscapeWarning(MerasmusEscapeWarningEvent),
17943    MerasmusEscaped(MerasmusEscapedEvent),
17944    EyeballBossSummoned(EyeballBossSummonedEvent),
17945    EyeballBossStunned(EyeballBossStunnedEvent),
17946    EyeballBossKilled(EyeballBossKilledEvent),
17947    EyeballBossKiller(EyeballBossKillerEvent),
17948    EyeballBossEscapeImminent(EyeballBossEscapeImminentEvent),
17949    EyeballBossEscaped(EyeballBossEscapedEvent),
17950    NpcHurt(NpcHurtEvent),
17951    ControlPointTimerUpdated(ControlPointTimerUpdatedEvent),
17952    PlayerHighFiveStart(PlayerHighFiveStartEvent),
17953    PlayerHighFiveCancel(PlayerHighFiveCancelEvent),
17954    PlayerHighFiveSuccess(PlayerHighFiveSuccessEvent),
17955    PlayerBonusPoints(PlayerBonusPointsEvent),
17956    PlayerUpgraded(PlayerUpgradedEvent),
17957    PlayerBuyback(PlayerBuybackEvent),
17958    PlayerUsedPowerUpBottle(PlayerUsedPowerUpBottleEvent),
17959    ChristmasGiftGrab(ChristmasGiftGrabEvent),
17960    PlayerKilledAchievementZone(PlayerKilledAchievementZoneEvent),
17961    PartyUpdated(PartyUpdatedEvent),
17962    PartyPrefChanged(PartyPrefChangedEvent),
17963    PartyCriteriaChanged(PartyCriteriaChangedEvent),
17964    PartyInvitesChanged(PartyInvitesChangedEvent),
17965    PartyQueueStateChanged(PartyQueueStateChangedEvent),
17966    PartyChat(PartyChatEvent),
17967    PartyMemberJoin(PartyMemberJoinEvent),
17968    PartyMemberLeave(PartyMemberLeaveEvent),
17969    MatchInvitesUpdated(MatchInvitesUpdatedEvent),
17970    LobbyUpdated(LobbyUpdatedEvent),
17971    MvmMissionUpdate(MvmMissionUpdateEvent),
17972    RecalculateHolidays(RecalculateHolidaysEvent),
17973    PlayerCurrencyChanged(PlayerCurrencyChangedEvent),
17974    DoomsdayRocketOpen(DoomsdayRocketOpenEvent),
17975    RemoveNemesisRelationships(RemoveNemesisRelationshipsEvent),
17976    MvmCreditBonusWave(MvmCreditBonusWaveEvent),
17977    MvmCreditBonusAll(MvmCreditBonusAllEvent),
17978    MvmCreditBonusAllAdvanced(MvmCreditBonusAllAdvancedEvent),
17979    MvmQuickSentryUpgrade(MvmQuickSentryUpgradeEvent),
17980    MvmTankDestroyedByPlayers(MvmTankDestroyedByPlayersEvent),
17981    MvmKillRobotDeliveringBomb(MvmKillRobotDeliveringBombEvent),
17982    MvmPickupCurrency(MvmPickupCurrencyEvent),
17983    MvmBombCarrierKilled(MvmBombCarrierKilledEvent),
17984    MvmSentryBusterDetonate(MvmSentryBusterDetonateEvent),
17985    MvmScoutMarkedForDeath(MvmScoutMarkedForDeathEvent),
17986    MvmMedicPowerUpShared(MvmMedicPowerUpSharedEvent),
17987    MvmBeginWave(MvmBeginWaveEvent),
17988    MvmWaveComplete(MvmWaveCompleteEvent),
17989    MvmMissionComplete(MvmMissionCompleteEvent),
17990    MvmBombResetByPlayer(MvmBombResetByPlayerEvent),
17991    MvmBombAlarmTriggered(MvmBombAlarmTriggeredEvent),
17992    MvmBombDeployResetByPlayer(MvmBombDeployResetByPlayerEvent),
17993    MvmWaveFailed(MvmWaveFailedEvent),
17994    MvmResetStats(MvmResetStatsEvent),
17995    DamageResisted(DamageResistedEvent),
17996    RevivePlayerNotify(RevivePlayerNotifyEvent),
17997    RevivePlayerStopped(RevivePlayerStoppedEvent),
17998    RevivePlayerComplete(RevivePlayerCompleteEvent),
17999    PlayerTurnedToGhost(PlayerTurnedToGhostEvent),
18000    MedigunShieldBlockedDamage(MedigunShieldBlockedDamageEvent),
18001    MvmAdvWaveCompleteNoGates(MvmAdvWaveCompleteNoGatesEvent),
18002    MvmSniperHeadshotCurrency(MvmSniperHeadshotCurrencyEvent),
18003    MvmMannhattanPit(MvmMannhattanPitEvent),
18004    FlagCarriedInDetectionZone(FlagCarriedInDetectionZoneEvent),
18005    MvmAdvWaveKilledStunRadio(MvmAdvWaveKilledStunRadioEvent),
18006    PlayerDirectHitStun(PlayerDirectHitStunEvent),
18007    MvmSentryBusterKilled(MvmSentryBusterKilledEvent),
18008    UpgradesFileChanged(UpgradesFileChangedEvent),
18009    RdTeamPointsChanged(RdTeamPointsChangedEvent),
18010    RdRulesStateChanged(RdRulesStateChangedEvent),
18011    RdRobotKilled(RdRobotKilledEvent),
18012    RdRobotImpact(RdRobotImpactEvent),
18013    TeamPlayPreRoundTimeLeft(TeamPlayPreRoundTimeLeftEvent),
18014    ParachuteDeploy(ParachuteDeployEvent),
18015    ParachuteHolster(ParachuteHolsterEvent),
18016    KillRefillsMeter(KillRefillsMeterEvent),
18017    RpsTauntEvent(RpsTauntEventEvent),
18018    CongaKill(CongaKillEvent),
18019    PlayerInitialSpawn(PlayerInitialSpawnEvent),
18020    CompetitiveVictory(CompetitiveVictoryEvent),
18021    CompetitiveStatsUpdate(CompetitiveStatsUpdateEvent),
18022    MiniGameWin(MiniGameWinEvent),
18023    SentryOnGoActive(SentryOnGoActiveEvent),
18024    DuckXpLevelUp(DuckXpLevelUpEvent),
18025    QuestLogOpened(QuestLogOpenedEvent),
18026    SchemaUpdated(SchemaUpdatedEvent),
18027    LocalPlayerPickupWeapon(LocalPlayerPickupWeaponEvent),
18028    RdPlayerScorePoints(RdPlayerScorePointsEvent),
18029    DemomanDetStickies(DemomanDetStickiesEvent),
18030    QuestObjectiveCompleted(QuestObjectiveCompletedEvent),
18031    PlayerScoreChanged(PlayerScoreChangedEvent),
18032    KilledCappingPlayer(KilledCappingPlayerEvent),
18033    EnvironmentalDeath(EnvironmentalDeathEvent),
18034    ProjectileDirectHit(ProjectileDirectHitEvent),
18035    PassGet(PassGetEvent),
18036    PassScore(PassScoreEvent),
18037    PassFree(PassFreeEvent),
18038    PassPassCaught(PassPassCaughtEvent),
18039    PassBallStolen(PassBallStolenEvent),
18040    PassBallBlocked(PassBallBlockedEvent),
18041    DamagePrevented(DamagePreventedEvent),
18042    HalloweenBossKilled(HalloweenBossKilledEvent),
18043    EscapedLootIsland(EscapedLootIslandEvent),
18044    TaggedPlayerAsIt(TaggedPlayerAsItEvent),
18045    MerasmusStunned(MerasmusStunnedEvent),
18046    MerasmusPropFound(MerasmusPropFoundEvent),
18047    HalloweenSkeletonKilled(HalloweenSkeletonKilledEvent),
18048    SkeletonKilledQuest(SkeletonKilledQuestEvent),
18049    SkeletonKingKilledQuest(SkeletonKingKilledQuestEvent),
18050    EscapeHell(EscapeHellEvent),
18051    CrossSpectralBridge(CrossSpectralBridgeEvent),
18052    MiniGameWon(MiniGameWonEvent),
18053    RespawnGhost(RespawnGhostEvent),
18054    KillInHell(KillInHellEvent),
18055    HalloweenDuckCollected(HalloweenDuckCollectedEvent),
18056    SpecialScore(SpecialScoreEvent),
18057    TeamLeaderKilled(TeamLeaderKilledEvent),
18058    HalloweenSoulCollected(HalloweenSoulCollectedEvent),
18059    RecalculateTruce(RecalculateTruceEvent),
18060    DeadRingerCheatDeath(DeadRingerCheatDeathEvent),
18061    CrossbowHeal(CrossbowHealEvent),
18062    DamageMitigated(DamageMitigatedEvent),
18063    PayloadPushed(PayloadPushedEvent),
18064    PlayerAbandonedMatch(PlayerAbandonedMatchEvent),
18065    ClDrawline(ClDrawlineEvent),
18066    RestartTimerTime(RestartTimerTimeEvent),
18067    WinLimitChanged(WinLimitChangedEvent),
18068    WinPanelShowScores(WinPanelShowScoresEvent),
18069    TopStreamsRequestFinished(TopStreamsRequestFinishedEvent),
18070    CompetitiveStateChanged(CompetitiveStateChangedEvent),
18071    GlobalWarDataUpdated(GlobalWarDataUpdatedEvent),
18072    StopWatchChanged(StopWatchChangedEvent),
18073    DsStop(DsStopEvent),
18074    DsScreenshot(DsScreenshotEvent),
18075    ShowMatchSummary(ShowMatchSummaryEvent),
18076    ExperienceChanged(ExperienceChangedEvent),
18077    BeginXpLerp(BeginXpLerpEvent),
18078    MatchmakerStatsUpdated(MatchmakerStatsUpdatedEvent),
18079    RematchVotePeriodOver(RematchVotePeriodOverEvent),
18080    RematchFailedToCreate(RematchFailedToCreateEvent),
18081    PlayerRematchChange(PlayerRematchChangeEvent),
18082    PingUpdated(PingUpdatedEvent),
18083    MMStatsUpdated(MMStatsUpdatedEvent),
18084    PlayerNextMapVoteChange(PlayerNextMapVoteChangeEvent),
18085    VoteMapsChanged(VoteMapsChangedEvent),
18086    ProtoDefChanged(ProtoDefChangedEvent),
18087    PlayerDomination(PlayerDominationEvent),
18088    PlayerRocketPackPushed(PlayerRocketPackPushedEvent),
18089    QuestRequest(QuestRequestEvent),
18090    QuestResponse(QuestResponseEvent),
18091    QuestProgress(QuestProgressEvent),
18092    ProjectileRemoved(ProjectileRemovedEvent),
18093    QuestMapDataChanged(QuestMapDataChangedEvent),
18094    GasDousedPlayerIgnited(GasDousedPlayerIgnitedEvent),
18095    QuestTurnInState(QuestTurnInStateEvent),
18096    ItemsAcknowledged(ItemsAcknowledgedEvent),
18097    CapperKilled(CapperKilledEvent),
18098    MainMenuStabilized(MainMenuStabilizedEvent),
18099    WorldStatusChanged(WorldStatusChangedEvent),
18100    HLTVStatus(HLTVStatusEvent),
18101    HLTVCameraman(HLTVCameramanEvent),
18102    HLTVRankCamera(HLTVRankCameraEvent),
18103    HLTVRankEntity(HLTVRankEntityEvent),
18104    HLTVFixed(HLTVFixedEvent),
18105    HLTVChase(HLTVChaseEvent),
18106    HLTVMessage(HLTVMessageEvent),
18107    HLTVTitle(HLTVTitleEvent),
18108    HLTVChat(HLTVChatEvent),
18109    ReplayStartRecord(ReplayStartRecordEvent),
18110    ReplaySessionInfo(ReplaySessionInfoEvent),
18111    ReplayEndRecord(ReplayEndRecordEvent),
18112    ReplayReplaysAvailable(ReplayReplaysAvailableEvent),
18113    ReplayServerError(ReplayServerErrorEvent),
18114    Unknown(RawGameEvent),
18115}
18116#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
18117#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
18118pub enum GameEventType {
18119    #[serde(rename = "server_spawn")]
18120    ServerSpawn,
18121    #[serde(rename = "server_changelevel_failed")]
18122    ServerChangeLevelFailed,
18123    #[serde(rename = "server_shutdown")]
18124    ServerShutdown,
18125    #[serde(rename = "server_cvar")]
18126    ServerCvar,
18127    #[serde(rename = "server_message")]
18128    ServerMessage,
18129    #[serde(rename = "server_addban")]
18130    ServerAddBan,
18131    #[serde(rename = "server_removeban")]
18132    ServerRemoveBan,
18133    #[serde(rename = "player_connect")]
18134    PlayerConnect,
18135    #[serde(rename = "player_connect_client")]
18136    PlayerConnectClient,
18137    #[serde(rename = "player_info")]
18138    PlayerInfo,
18139    #[serde(rename = "player_disconnect")]
18140    PlayerDisconnect,
18141    #[serde(rename = "player_activate")]
18142    PlayerActivate,
18143    #[serde(rename = "player_say")]
18144    PlayerSay,
18145    #[serde(rename = "client_disconnect")]
18146    ClientDisconnect,
18147    #[serde(rename = "client_beginconnect")]
18148    ClientBeginConnect,
18149    #[serde(rename = "client_connected")]
18150    ClientConnected,
18151    #[serde(rename = "client_fullconnect")]
18152    ClientFullConnect,
18153    #[serde(rename = "host_quit")]
18154    HostQuit,
18155    #[serde(rename = "team_info")]
18156    TeamInfo,
18157    #[serde(rename = "team_score")]
18158    TeamScore,
18159    #[serde(rename = "teamplay_broadcast_audio")]
18160    TeamPlayBroadcastAudio,
18161    #[serde(rename = "player_team")]
18162    PlayerTeam,
18163    #[serde(rename = "player_class")]
18164    PlayerClass,
18165    #[serde(rename = "player_death")]
18166    PlayerDeath,
18167    #[serde(rename = "player_hurt")]
18168    PlayerHurt,
18169    #[serde(rename = "player_chat")]
18170    PlayerChat,
18171    #[serde(rename = "player_score")]
18172    PlayerScore,
18173    #[serde(rename = "player_spawn")]
18174    PlayerSpawn,
18175    #[serde(rename = "player_shoot")]
18176    PlayerShoot,
18177    #[serde(rename = "player_use")]
18178    PlayerUse,
18179    #[serde(rename = "player_changename")]
18180    PlayerChangeName,
18181    #[serde(rename = "player_hintmessage")]
18182    PlayerHintMessage,
18183    #[serde(rename = "base_player_teleported")]
18184    BasePlayerTeleported,
18185    #[serde(rename = "game_init")]
18186    GameInit,
18187    #[serde(rename = "game_newmap")]
18188    GameNewMap,
18189    #[serde(rename = "game_start")]
18190    GameStart,
18191    #[serde(rename = "game_end")]
18192    GameEnd,
18193    #[serde(rename = "round_start")]
18194    RoundStart,
18195    #[serde(rename = "round_end")]
18196    RoundEnd,
18197    #[serde(rename = "game_message")]
18198    GameMessage,
18199    #[serde(rename = "break_breakable")]
18200    BreakBreakable,
18201    #[serde(rename = "break_prop")]
18202    BreakProp,
18203    #[serde(rename = "entity_killed")]
18204    EntityKilled,
18205    #[serde(rename = "bonus_updated")]
18206    BonusUpdated,
18207    #[serde(rename = "achievement_event")]
18208    AchievementEvent,
18209    #[serde(rename = "achievement_increment")]
18210    AchievementIncrement,
18211    #[serde(rename = "physgun_pickup")]
18212    PhysgunPickup,
18213    #[serde(rename = "flare_ignite_npc")]
18214    FlareIgniteNpc,
18215    #[serde(rename = "helicopter_grenade_punt_miss")]
18216    HelicopterGrenadePuntMiss,
18217    #[serde(rename = "user_data_downloaded")]
18218    UserDataDownloaded,
18219    #[serde(rename = "ragdoll_dissolved")]
18220    RagdollDissolved,
18221    #[serde(rename = "hltv_changed_mode")]
18222    HLTVChangedMode,
18223    #[serde(rename = "hltv_changed_target")]
18224    HLTVChangedTarget,
18225    #[serde(rename = "vote_ended")]
18226    VoteEnded,
18227    #[serde(rename = "vote_started")]
18228    VoteStarted,
18229    #[serde(rename = "vote_changed")]
18230    VoteChanged,
18231    #[serde(rename = "vote_passed")]
18232    VotePassed,
18233    #[serde(rename = "vote_failed")]
18234    VoteFailed,
18235    #[serde(rename = "vote_cast")]
18236    VoteCast,
18237    #[serde(rename = "vote_options")]
18238    VoteOptions,
18239    #[serde(rename = "replay_saved")]
18240    ReplaySaved,
18241    #[serde(rename = "entered_performance_mode")]
18242    EnteredPerformanceMode,
18243    #[serde(rename = "browse_replays")]
18244    BrowseReplays,
18245    #[serde(rename = "replay_youtube_stats")]
18246    ReplayYoutubeStats,
18247    #[serde(rename = "inventory_updated")]
18248    InventoryUpdated,
18249    #[serde(rename = "cart_updated")]
18250    CartUpdated,
18251    #[serde(rename = "store_pricesheet_updated")]
18252    StorePriceSheetUpdated,
18253    #[serde(rename = "econ_inventory_connected")]
18254    EconInventoryConnected,
18255    #[serde(rename = "item_schema_initialized")]
18256    ItemSchemaInitialized,
18257    #[serde(rename = "gc_new_session")]
18258    GcNewSession,
18259    #[serde(rename = "gc_lost_session")]
18260    GcLostSession,
18261    #[serde(rename = "intro_finish")]
18262    IntroFinish,
18263    #[serde(rename = "intro_nextcamera")]
18264    IntroNextCamera,
18265    #[serde(rename = "player_changeclass")]
18266    PlayerChangeClass,
18267    #[serde(rename = "tf_map_time_remaining")]
18268    TfMapTimeRemaining,
18269    #[serde(rename = "tf_game_over")]
18270    TfGameOver,
18271    #[serde(rename = "ctf_flag_captured")]
18272    CtfFlagCaptured,
18273    #[serde(rename = "controlpoint_initialized")]
18274    ControlPointInitialized,
18275    #[serde(rename = "controlpoint_updateimages")]
18276    ControlPointUpdateImages,
18277    #[serde(rename = "controlpoint_updatelayout")]
18278    ControlPointUpdateLayout,
18279    #[serde(rename = "controlpoint_updatecapping")]
18280    ControlPointUpdateCapping,
18281    #[serde(rename = "controlpoint_updateowner")]
18282    ControlPointUpdateOwner,
18283    #[serde(rename = "controlpoint_starttouch")]
18284    ControlPointStartTouch,
18285    #[serde(rename = "controlpoint_endtouch")]
18286    ControlPointEndTouch,
18287    #[serde(rename = "controlpoint_pulse_element")]
18288    ControlPointPulseElement,
18289    #[serde(rename = "controlpoint_fake_capture")]
18290    ControlPointFakeCapture,
18291    #[serde(rename = "controlpoint_fake_capture_mult")]
18292    ControlPointFakeCaptureMultiplier,
18293    #[serde(rename = "teamplay_round_selected")]
18294    TeamPlayRoundSelected,
18295    #[serde(rename = "teamplay_round_start")]
18296    TeamPlayRoundStart,
18297    #[serde(rename = "teamplay_round_active")]
18298    TeamPlayRoundActive,
18299    #[serde(rename = "teamplay_waiting_begins")]
18300    TeamPlayWaitingBegins,
18301    #[serde(rename = "teamplay_waiting_ends")]
18302    TeamPlayWaitingEnds,
18303    #[serde(rename = "teamplay_waiting_abouttoend")]
18304    TeamPlayWaitingAboutToEnd,
18305    #[serde(rename = "teamplay_restart_round")]
18306    TeamPlayRestartRound,
18307    #[serde(rename = "teamplay_ready_restart")]
18308    TeamPlayReadyRestart,
18309    #[serde(rename = "teamplay_round_restart_seconds")]
18310    TeamPlayRoundRestartSeconds,
18311    #[serde(rename = "teamplay_team_ready")]
18312    TeamPlayTeamReady,
18313    #[serde(rename = "teamplay_round_win")]
18314    TeamPlayRoundWin,
18315    #[serde(rename = "teamplay_update_timer")]
18316    TeamPlayUpdateTimer,
18317    #[serde(rename = "teamplay_round_stalemate")]
18318    TeamPlayRoundStalemate,
18319    #[serde(rename = "teamplay_overtime_begin")]
18320    TeamPlayOvertimeBegin,
18321    #[serde(rename = "teamplay_overtime_end")]
18322    TeamPlayOvertimeEnd,
18323    #[serde(rename = "teamplay_suddendeath_begin")]
18324    TeamPlaySuddenDeathBegin,
18325    #[serde(rename = "teamplay_suddendeath_end")]
18326    TeamPlaySuddenDeathEnd,
18327    #[serde(rename = "teamplay_game_over")]
18328    TeamPlayGameOver,
18329    #[serde(rename = "teamplay_map_time_remaining")]
18330    TeamPlayMapTimeRemaining,
18331    #[serde(rename = "teamplay_timer_flash")]
18332    TeamPlayTimerFlash,
18333    #[serde(rename = "teamplay_timer_time_added")]
18334    TeamPlayTimerTimeAdded,
18335    #[serde(rename = "teamplay_point_startcapture")]
18336    TeamPlayPointStartCapture,
18337    #[serde(rename = "teamplay_point_captured")]
18338    TeamPlayPointCaptured,
18339    #[serde(rename = "teamplay_point_locked")]
18340    TeamPlayPointLocked,
18341    #[serde(rename = "teamplay_point_unlocked")]
18342    TeamPlayPointUnlocked,
18343    #[serde(rename = "teamplay_capture_broken")]
18344    TeamPlayCaptureBroken,
18345    #[serde(rename = "teamplay_capture_blocked")]
18346    TeamPlayCaptureBlocked,
18347    #[serde(rename = "teamplay_flag_event")]
18348    TeamPlayFlagEvent,
18349    #[serde(rename = "teamplay_win_panel")]
18350    TeamPlayWinPanel,
18351    #[serde(rename = "teamplay_teambalanced_player")]
18352    TeamPlayTeamBalancedPlayer,
18353    #[serde(rename = "teamplay_setup_finished")]
18354    TeamPlaySetupFinished,
18355    #[serde(rename = "teamplay_alert")]
18356    TeamPlayAlert,
18357    #[serde(rename = "training_complete")]
18358    TrainingComplete,
18359    #[serde(rename = "show_freezepanel")]
18360    ShowFreezePanel,
18361    #[serde(rename = "hide_freezepanel")]
18362    HideFreezePanel,
18363    #[serde(rename = "freezecam_started")]
18364    FreezeCamStarted,
18365    #[serde(rename = "localplayer_changeteam")]
18366    LocalPlayerChangeTeam,
18367    #[serde(rename = "localplayer_score_changed")]
18368    LocalPlayerScoreChanged,
18369    #[serde(rename = "localplayer_changeclass")]
18370    LocalPlayerChangeClass,
18371    #[serde(rename = "localplayer_respawn")]
18372    LocalPlayerRespawn,
18373    #[serde(rename = "building_info_changed")]
18374    BuildingInfoChanged,
18375    #[serde(rename = "localplayer_changedisguise")]
18376    LocalPlayerChangeDisguise,
18377    #[serde(rename = "player_account_changed")]
18378    PlayerAccountChanged,
18379    #[serde(rename = "spy_pda_reset")]
18380    SpyPdaReset,
18381    #[serde(rename = "flagstatus_update")]
18382    FlagStatusUpdate,
18383    #[serde(rename = "player_stats_updated")]
18384    PlayerStatsUpdated,
18385    #[serde(rename = "playing_commentary")]
18386    PlayingCommentary,
18387    #[serde(rename = "player_chargedeployed")]
18388    PlayerChargeDeployed,
18389    #[serde(rename = "player_builtobject")]
18390    PlayerBuiltObject,
18391    #[serde(rename = "player_upgradedobject")]
18392    PlayerUpgradedObject,
18393    #[serde(rename = "player_carryobject")]
18394    PlayerCarryObject,
18395    #[serde(rename = "player_dropobject")]
18396    PlayerDropObject,
18397    #[serde(rename = "object_removed")]
18398    ObjectRemoved,
18399    #[serde(rename = "object_destroyed")]
18400    ObjectDestroyed,
18401    #[serde(rename = "object_detonated")]
18402    ObjectDetonated,
18403    #[serde(rename = "achievement_earned")]
18404    AchievementEarned,
18405    #[serde(rename = "spec_target_updated")]
18406    SpecTargetUpdated,
18407    #[serde(rename = "tournament_stateupdate")]
18408    TournamentStateUpdate,
18409    #[serde(rename = "tournament_enablecountdown")]
18410    TournamentEnableCountdown,
18411    #[serde(rename = "player_calledformedic")]
18412    PlayerCalledForMedic,
18413    #[serde(rename = "player_askedforball")]
18414    PlayerAskedForBall,
18415    #[serde(rename = "localplayer_becameobserver")]
18416    LocalPlayerBecameObserver,
18417    #[serde(rename = "player_ignited_inv")]
18418    PlayerIgnitedInv,
18419    #[serde(rename = "player_ignited")]
18420    PlayerIgnited,
18421    #[serde(rename = "player_extinguished")]
18422    PlayerExtinguished,
18423    #[serde(rename = "player_teleported")]
18424    PlayerTeleported,
18425    #[serde(rename = "player_healedmediccall")]
18426    PlayerHealedMedicCall,
18427    #[serde(rename = "localplayer_chargeready")]
18428    LocalPlayerChargeReady,
18429    #[serde(rename = "localplayer_winddown")]
18430    LocalPlayerWindDown,
18431    #[serde(rename = "player_invulned")]
18432    PlayerInvulned,
18433    #[serde(rename = "escort_speed")]
18434    EscortSpeed,
18435    #[serde(rename = "escort_progress")]
18436    EscortProgress,
18437    #[serde(rename = "escort_recede")]
18438    EscortRecede,
18439    #[serde(rename = "gameui_activated")]
18440    GameUIActivated,
18441    #[serde(rename = "gameui_hidden")]
18442    GameUIHidden,
18443    #[serde(rename = "player_escort_score")]
18444    PlayerEscortScore,
18445    #[serde(rename = "player_healonhit")]
18446    PlayerHealOnHit,
18447    #[serde(rename = "player_stealsandvich")]
18448    PlayerStealSandvich,
18449    #[serde(rename = "show_class_layout")]
18450    ShowClassLayout,
18451    #[serde(rename = "show_vs_panel")]
18452    ShowVsPanel,
18453    #[serde(rename = "player_damaged")]
18454    PlayerDamaged,
18455    #[serde(rename = "arena_player_notification")]
18456    ArenaPlayerNotification,
18457    #[serde(rename = "arena_match_maxstreak")]
18458    ArenaMatchMaxStreak,
18459    #[serde(rename = "arena_round_start")]
18460    ArenaRoundStart,
18461    #[serde(rename = "arena_win_panel")]
18462    ArenaWinPanel,
18463    #[serde(rename = "pve_win_panel")]
18464    PveWinPanel,
18465    #[serde(rename = "air_dash")]
18466    AirDash,
18467    #[serde(rename = "landed")]
18468    Landed,
18469    #[serde(rename = "player_damage_dodged")]
18470    PlayerDamageDodged,
18471    #[serde(rename = "player_stunned")]
18472    PlayerStunned,
18473    #[serde(rename = "scout_grand_slam")]
18474    ScoutGrandSlam,
18475    #[serde(rename = "scout_slamdoll_landed")]
18476    ScoutSlamdollLanded,
18477    #[serde(rename = "arrow_impact")]
18478    ArrowImpact,
18479    #[serde(rename = "player_jarated")]
18480    PlayerJarated,
18481    #[serde(rename = "player_jarated_fade")]
18482    PlayerJaratedFade,
18483    #[serde(rename = "player_shield_blocked")]
18484    PlayerShieldBlocked,
18485    #[serde(rename = "player_pinned")]
18486    PlayerPinned,
18487    #[serde(rename = "player_healedbymedic")]
18488    PlayerHealedByMedic,
18489    #[serde(rename = "player_sapped_object")]
18490    PlayerSappedObject,
18491    #[serde(rename = "item_found")]
18492    ItemFound,
18493    #[serde(rename = "show_annotation")]
18494    ShowAnnotation,
18495    #[serde(rename = "hide_annotation")]
18496    HideAnnotation,
18497    #[serde(rename = "post_inventory_application")]
18498    PostInventoryApplication,
18499    #[serde(rename = "controlpoint_unlock_updated")]
18500    ControlPointUnlockUpdated,
18501    #[serde(rename = "deploy_buff_banner")]
18502    DeployBuffBanner,
18503    #[serde(rename = "player_buff")]
18504    PlayerBuff,
18505    #[serde(rename = "medic_death")]
18506    MedicDeath,
18507    #[serde(rename = "overtime_nag")]
18508    OvertimeNag,
18509    #[serde(rename = "teams_changed")]
18510    TeamsChanged,
18511    #[serde(rename = "halloween_pumpkin_grab")]
18512    HalloweenPumpkinGrab,
18513    #[serde(rename = "rocket_jump")]
18514    RocketJump,
18515    #[serde(rename = "rocket_jump_landed")]
18516    RocketJumpLanded,
18517    #[serde(rename = "sticky_jump")]
18518    StickyJump,
18519    #[serde(rename = "sticky_jump_landed")]
18520    StickyJumpLanded,
18521    #[serde(rename = "rocketpack_launch")]
18522    RocketPackLaunch,
18523    #[serde(rename = "rocketpack_landed")]
18524    RocketPackLanded,
18525    #[serde(rename = "medic_defended")]
18526    MedicDefended,
18527    #[serde(rename = "localplayer_healed")]
18528    LocalPlayerHealed,
18529    #[serde(rename = "player_destroyed_pipebomb")]
18530    PlayerDestroyedPipeBomb,
18531    #[serde(rename = "object_deflected")]
18532    ObjectDeflected,
18533    #[serde(rename = "player_mvp")]
18534    PlayerMvp,
18535    #[serde(rename = "raid_spawn_mob")]
18536    RaidSpawnMob,
18537    #[serde(rename = "raid_spawn_squad")]
18538    RaidSpawnSquad,
18539    #[serde(rename = "nav_blocked")]
18540    NavBlocked,
18541    #[serde(rename = "path_track_passed")]
18542    PathTrackPassed,
18543    #[serde(rename = "num_cappers_changed")]
18544    NumCappersChanged,
18545    #[serde(rename = "player_regenerate")]
18546    PlayerRegenerate,
18547    #[serde(rename = "update_status_item")]
18548    UpdateStatusItem,
18549    #[serde(rename = "stats_resetround")]
18550    StatsResetRound,
18551    #[serde(rename = "scorestats_accumulated_update")]
18552    ScoreStatsAccumulatedUpdate,
18553    #[serde(rename = "scorestats_accumulated_reset")]
18554    ScoreStatsAccumulatedReset,
18555    #[serde(rename = "achievement_earned_local")]
18556    AchievementEarnedLocal,
18557    #[serde(rename = "player_healed")]
18558    PlayerHealed,
18559    #[serde(rename = "building_healed")]
18560    BuildingHealed,
18561    #[serde(rename = "item_pickup")]
18562    ItemPickup,
18563    #[serde(rename = "duel_status")]
18564    DuelStatus,
18565    #[serde(rename = "fish_notice")]
18566    FishNotice,
18567    #[serde(rename = "fish_notice__arm")]
18568    FishNoticeArm,
18569    #[serde(rename = "slap_notice")]
18570    SlapNotice,
18571    #[serde(rename = "throwable_hit")]
18572    ThrowableHit,
18573    #[serde(rename = "pumpkin_lord_summoned")]
18574    PumpkinLordSummoned,
18575    #[serde(rename = "pumpkin_lord_killed")]
18576    PumpkinLordKilled,
18577    #[serde(rename = "merasmus_summoned")]
18578    MerasmusSummoned,
18579    #[serde(rename = "merasmus_killed")]
18580    MerasmusKilled,
18581    #[serde(rename = "merasmus_escape_warning")]
18582    MerasmusEscapeWarning,
18583    #[serde(rename = "merasmus_escaped")]
18584    MerasmusEscaped,
18585    #[serde(rename = "eyeball_boss_summoned")]
18586    EyeballBossSummoned,
18587    #[serde(rename = "eyeball_boss_stunned")]
18588    EyeballBossStunned,
18589    #[serde(rename = "eyeball_boss_killed")]
18590    EyeballBossKilled,
18591    #[serde(rename = "eyeball_boss_killer")]
18592    EyeballBossKiller,
18593    #[serde(rename = "eyeball_boss_escape_imminent")]
18594    EyeballBossEscapeImminent,
18595    #[serde(rename = "eyeball_boss_escaped")]
18596    EyeballBossEscaped,
18597    #[serde(rename = "npc_hurt")]
18598    NpcHurt,
18599    #[serde(rename = "controlpoint_timer_updated")]
18600    ControlPointTimerUpdated,
18601    #[serde(rename = "player_highfive_start")]
18602    PlayerHighFiveStart,
18603    #[serde(rename = "player_highfive_cancel")]
18604    PlayerHighFiveCancel,
18605    #[serde(rename = "player_highfive_success")]
18606    PlayerHighFiveSuccess,
18607    #[serde(rename = "player_bonuspoints")]
18608    PlayerBonusPoints,
18609    #[serde(rename = "player_upgraded")]
18610    PlayerUpgraded,
18611    #[serde(rename = "player_buyback")]
18612    PlayerBuyback,
18613    #[serde(rename = "player_used_powerup_bottle")]
18614    PlayerUsedPowerUpBottle,
18615    #[serde(rename = "christmas_gift_grab")]
18616    ChristmasGiftGrab,
18617    #[serde(rename = "player_killed_achievement_zone")]
18618    PlayerKilledAchievementZone,
18619    #[serde(rename = "party_updated")]
18620    PartyUpdated,
18621    #[serde(rename = "party_pref_changed")]
18622    PartyPrefChanged,
18623    #[serde(rename = "party_criteria_changed")]
18624    PartyCriteriaChanged,
18625    #[serde(rename = "party_invites_changed")]
18626    PartyInvitesChanged,
18627    #[serde(rename = "party_queue_state_changed")]
18628    PartyQueueStateChanged,
18629    #[serde(rename = "party_chat")]
18630    PartyChat,
18631    #[serde(rename = "party_member_join")]
18632    PartyMemberJoin,
18633    #[serde(rename = "party_member_leave")]
18634    PartyMemberLeave,
18635    #[serde(rename = "match_invites_updated")]
18636    MatchInvitesUpdated,
18637    #[serde(rename = "lobby_updated")]
18638    LobbyUpdated,
18639    #[serde(rename = "mvm_mission_update")]
18640    MvmMissionUpdate,
18641    #[serde(rename = "recalculate_holidays")]
18642    RecalculateHolidays,
18643    #[serde(rename = "player_currency_changed")]
18644    PlayerCurrencyChanged,
18645    #[serde(rename = "doomsday_rocket_open")]
18646    DoomsdayRocketOpen,
18647    #[serde(rename = "remove_nemesis_relationships")]
18648    RemoveNemesisRelationships,
18649    #[serde(rename = "mvm_creditbonus_wave")]
18650    MvmCreditBonusWave,
18651    #[serde(rename = "mvm_creditbonus_all")]
18652    MvmCreditBonusAll,
18653    #[serde(rename = "mvm_creditbonus_all_advanced")]
18654    MvmCreditBonusAllAdvanced,
18655    #[serde(rename = "mvm_quick_sentry_upgrade")]
18656    MvmQuickSentryUpgrade,
18657    #[serde(rename = "mvm_tank_destroyed_by_players")]
18658    MvmTankDestroyedByPlayers,
18659    #[serde(rename = "mvm_kill_robot_delivering_bomb")]
18660    MvmKillRobotDeliveringBomb,
18661    #[serde(rename = "mvm_pickup_currency")]
18662    MvmPickupCurrency,
18663    #[serde(rename = "mvm_bomb_carrier_killed")]
18664    MvmBombCarrierKilled,
18665    #[serde(rename = "mvm_sentrybuster_detonate")]
18666    MvmSentryBusterDetonate,
18667    #[serde(rename = "mvm_scout_marked_for_death")]
18668    MvmScoutMarkedForDeath,
18669    #[serde(rename = "mvm_medic_powerup_shared")]
18670    MvmMedicPowerUpShared,
18671    #[serde(rename = "mvm_begin_wave")]
18672    MvmBeginWave,
18673    #[serde(rename = "mvm_wave_complete")]
18674    MvmWaveComplete,
18675    #[serde(rename = "mvm_mission_complete")]
18676    MvmMissionComplete,
18677    #[serde(rename = "mvm_bomb_reset_by_player")]
18678    MvmBombResetByPlayer,
18679    #[serde(rename = "mvm_bomb_alarm_triggered")]
18680    MvmBombAlarmTriggered,
18681    #[serde(rename = "mvm_bomb_deploy_reset_by_player")]
18682    MvmBombDeployResetByPlayer,
18683    #[serde(rename = "mvm_wave_failed")]
18684    MvmWaveFailed,
18685    #[serde(rename = "mvm_reset_stats")]
18686    MvmResetStats,
18687    #[serde(rename = "damage_resisted")]
18688    DamageResisted,
18689    #[serde(rename = "revive_player_notify")]
18690    RevivePlayerNotify,
18691    #[serde(rename = "revive_player_stopped")]
18692    RevivePlayerStopped,
18693    #[serde(rename = "revive_player_complete")]
18694    RevivePlayerComplete,
18695    #[serde(rename = "player_turned_to_ghost")]
18696    PlayerTurnedToGhost,
18697    #[serde(rename = "medigun_shield_blocked_damage")]
18698    MedigunShieldBlockedDamage,
18699    #[serde(rename = "mvm_adv_wave_complete_no_gates")]
18700    MvmAdvWaveCompleteNoGates,
18701    #[serde(rename = "mvm_sniper_headshot_currency")]
18702    MvmSniperHeadshotCurrency,
18703    #[serde(rename = "mvm_mannhattan_pit")]
18704    MvmMannhattanPit,
18705    #[serde(rename = "flag_carried_in_detection_zone")]
18706    FlagCarriedInDetectionZone,
18707    #[serde(rename = "mvm_adv_wave_killed_stun_radio")]
18708    MvmAdvWaveKilledStunRadio,
18709    #[serde(rename = "player_directhit_stun")]
18710    PlayerDirectHitStun,
18711    #[serde(rename = "mvm_sentrybuster_killed")]
18712    MvmSentryBusterKilled,
18713    #[serde(rename = "upgrades_file_changed")]
18714    UpgradesFileChanged,
18715    #[serde(rename = "rd_team_points_changed")]
18716    RdTeamPointsChanged,
18717    #[serde(rename = "rd_rules_state_changed")]
18718    RdRulesStateChanged,
18719    #[serde(rename = "rd_robot_killed")]
18720    RdRobotKilled,
18721    #[serde(rename = "rd_robot_impact")]
18722    RdRobotImpact,
18723    #[serde(rename = "teamplay_pre_round_time_left")]
18724    TeamPlayPreRoundTimeLeft,
18725    #[serde(rename = "parachute_deploy")]
18726    ParachuteDeploy,
18727    #[serde(rename = "parachute_holster")]
18728    ParachuteHolster,
18729    #[serde(rename = "kill_refills_meter")]
18730    KillRefillsMeter,
18731    #[serde(rename = "rps_taunt_event")]
18732    RpsTauntEvent,
18733    #[serde(rename = "conga_kill")]
18734    CongaKill,
18735    #[serde(rename = "player_initial_spawn")]
18736    PlayerInitialSpawn,
18737    #[serde(rename = "competitive_victory")]
18738    CompetitiveVictory,
18739    #[serde(rename = "competitive_stats_update")]
18740    CompetitiveStatsUpdate,
18741    #[serde(rename = "minigame_win")]
18742    MiniGameWin,
18743    #[serde(rename = "sentry_on_go_active")]
18744    SentryOnGoActive,
18745    #[serde(rename = "duck_xp_level_up")]
18746    DuckXpLevelUp,
18747    #[serde(rename = "questlog_opened")]
18748    QuestLogOpened,
18749    #[serde(rename = "schema_updated")]
18750    SchemaUpdated,
18751    #[serde(rename = "localplayer_pickup_weapon")]
18752    LocalPlayerPickupWeapon,
18753    #[serde(rename = "rd_player_score_points")]
18754    RdPlayerScorePoints,
18755    #[serde(rename = "demoman_det_stickies")]
18756    DemomanDetStickies,
18757    #[serde(rename = "quest_objective_completed")]
18758    QuestObjectiveCompleted,
18759    #[serde(rename = "player_score_changed")]
18760    PlayerScoreChanged,
18761    #[serde(rename = "killed_capping_player")]
18762    KilledCappingPlayer,
18763    #[serde(rename = "environmental_death")]
18764    EnvironmentalDeath,
18765    #[serde(rename = "projectile_direct_hit")]
18766    ProjectileDirectHit,
18767    #[serde(rename = "pass_get")]
18768    PassGet,
18769    #[serde(rename = "pass_score")]
18770    PassScore,
18771    #[serde(rename = "pass_free")]
18772    PassFree,
18773    #[serde(rename = "pass_pass_caught")]
18774    PassPassCaught,
18775    #[serde(rename = "pass_ball_stolen")]
18776    PassBallStolen,
18777    #[serde(rename = "pass_ball_blocked")]
18778    PassBallBlocked,
18779    #[serde(rename = "damage_prevented")]
18780    DamagePrevented,
18781    #[serde(rename = "halloween_boss_killed")]
18782    HalloweenBossKilled,
18783    #[serde(rename = "escaped_loot_island")]
18784    EscapedLootIsland,
18785    #[serde(rename = "tagged_player_as_it")]
18786    TaggedPlayerAsIt,
18787    #[serde(rename = "merasmus_stunned")]
18788    MerasmusStunned,
18789    #[serde(rename = "merasmus_prop_found")]
18790    MerasmusPropFound,
18791    #[serde(rename = "halloween_skeleton_killed")]
18792    HalloweenSkeletonKilled,
18793    #[serde(rename = "skeleton_killed_quest")]
18794    SkeletonKilledQuest,
18795    #[serde(rename = "skeleton_king_killed_quest")]
18796    SkeletonKingKilledQuest,
18797    #[serde(rename = "escape_hell")]
18798    EscapeHell,
18799    #[serde(rename = "cross_spectral_bridge")]
18800    CrossSpectralBridge,
18801    #[serde(rename = "minigame_won")]
18802    MiniGameWon,
18803    #[serde(rename = "respawn_ghost")]
18804    RespawnGhost,
18805    #[serde(rename = "kill_in_hell")]
18806    KillInHell,
18807    #[serde(rename = "halloween_duck_collected")]
18808    HalloweenDuckCollected,
18809    #[serde(rename = "special_score")]
18810    SpecialScore,
18811    #[serde(rename = "team_leader_killed")]
18812    TeamLeaderKilled,
18813    #[serde(rename = "halloween_soul_collected")]
18814    HalloweenSoulCollected,
18815    #[serde(rename = "recalculate_truce")]
18816    RecalculateTruce,
18817    #[serde(rename = "deadringer_cheat_death")]
18818    DeadRingerCheatDeath,
18819    #[serde(rename = "crossbow_heal")]
18820    CrossbowHeal,
18821    #[serde(rename = "damage_mitigated")]
18822    DamageMitigated,
18823    #[serde(rename = "payload_pushed")]
18824    PayloadPushed,
18825    #[serde(rename = "player_abandoned_match")]
18826    PlayerAbandonedMatch,
18827    #[serde(rename = "cl_drawline")]
18828    ClDrawline,
18829    #[serde(rename = "restart_timer_time")]
18830    RestartTimerTime,
18831    #[serde(rename = "winlimit_changed")]
18832    WinLimitChanged,
18833    #[serde(rename = "winpanel_show_scores")]
18834    WinPanelShowScores,
18835    #[serde(rename = "top_streams_request_finished")]
18836    TopStreamsRequestFinished,
18837    #[serde(rename = "competitive_state_changed")]
18838    CompetitiveStateChanged,
18839    #[serde(rename = "global_war_data_updated")]
18840    GlobalWarDataUpdated,
18841    #[serde(rename = "stop_watch_changed")]
18842    StopWatchChanged,
18843    #[serde(rename = "ds_stop")]
18844    DsStop,
18845    #[serde(rename = "ds_screenshot")]
18846    DsScreenshot,
18847    #[serde(rename = "show_match_summary")]
18848    ShowMatchSummary,
18849    #[serde(rename = "experience_changed")]
18850    ExperienceChanged,
18851    #[serde(rename = "begin_xp_lerp")]
18852    BeginXpLerp,
18853    #[serde(rename = "matchmaker_stats_updated")]
18854    MatchmakerStatsUpdated,
18855    #[serde(rename = "rematch_vote_period_over")]
18856    RematchVotePeriodOver,
18857    #[serde(rename = "rematch_failed_to_create")]
18858    RematchFailedToCreate,
18859    #[serde(rename = "player_rematch_change")]
18860    PlayerRematchChange,
18861    #[serde(rename = "ping_updated")]
18862    PingUpdated,
18863    #[serde(rename = "mmstats_updated")]
18864    MMStatsUpdated,
18865    #[serde(rename = "player_next_map_vote_change")]
18866    PlayerNextMapVoteChange,
18867    #[serde(rename = "vote_maps_changed")]
18868    VoteMapsChanged,
18869    #[serde(rename = "proto_def_changed")]
18870    ProtoDefChanged,
18871    #[serde(rename = "player_domination")]
18872    PlayerDomination,
18873    #[serde(rename = "player_rocketpack_pushed")]
18874    PlayerRocketPackPushed,
18875    #[serde(rename = "quest_request")]
18876    QuestRequest,
18877    #[serde(rename = "quest_response")]
18878    QuestResponse,
18879    #[serde(rename = "quest_progress")]
18880    QuestProgress,
18881    #[serde(rename = "projectile_removed")]
18882    ProjectileRemoved,
18883    #[serde(rename = "quest_map_data_changed")]
18884    QuestMapDataChanged,
18885    #[serde(rename = "gas_doused_player_ignited")]
18886    GasDousedPlayerIgnited,
18887    #[serde(rename = "quest_turn_in_state")]
18888    QuestTurnInState,
18889    #[serde(rename = "items_acknowledged")]
18890    ItemsAcknowledged,
18891    #[serde(rename = "capper_killed")]
18892    CapperKilled,
18893    #[serde(rename = "mainmenu_stabilized")]
18894    MainMenuStabilized,
18895    #[serde(rename = "world_status_changed")]
18896    WorldStatusChanged,
18897    #[serde(rename = "hltv_status")]
18898    HLTVStatus,
18899    #[serde(rename = "hltv_cameraman")]
18900    HLTVCameraman,
18901    #[serde(rename = "hltv_rank_camera")]
18902    HLTVRankCamera,
18903    #[serde(rename = "hltv_rank_entity")]
18904    HLTVRankEntity,
18905    #[serde(rename = "hltv_fixed")]
18906    HLTVFixed,
18907    #[serde(rename = "hltv_chase")]
18908    HLTVChase,
18909    #[serde(rename = "hltv_message")]
18910    HLTVMessage,
18911    #[serde(rename = "hltv_title")]
18912    HLTVTitle,
18913    #[serde(rename = "hltv_chat")]
18914    HLTVChat,
18915    #[serde(rename = "replay_startrecord")]
18916    ReplayStartRecord,
18917    #[serde(rename = "replay_sessioninfo")]
18918    ReplaySessionInfo,
18919    #[serde(rename = "replay_endrecord")]
18920    ReplayEndRecord,
18921    #[serde(rename = "replay_replaysavailable")]
18922    ReplayReplaysAvailable,
18923    #[serde(rename = "replay_servererror")]
18924    ReplayServerError,
18925    Unknown(String),
18926}
18927impl GameEventType {
18928    pub fn from_type_name(name: &str) -> Self {
18929        match name {
18930            "server_spawn" => GameEventType::ServerSpawn,
18931            "server_changelevel_failed" => GameEventType::ServerChangeLevelFailed,
18932            "server_shutdown" => GameEventType::ServerShutdown,
18933            "server_cvar" => GameEventType::ServerCvar,
18934            "server_message" => GameEventType::ServerMessage,
18935            "server_addban" => GameEventType::ServerAddBan,
18936            "server_removeban" => GameEventType::ServerRemoveBan,
18937            "player_connect" => GameEventType::PlayerConnect,
18938            "player_connect_client" => GameEventType::PlayerConnectClient,
18939            "player_info" => GameEventType::PlayerInfo,
18940            "player_disconnect" => GameEventType::PlayerDisconnect,
18941            "player_activate" => GameEventType::PlayerActivate,
18942            "player_say" => GameEventType::PlayerSay,
18943            "client_disconnect" => GameEventType::ClientDisconnect,
18944            "client_beginconnect" => GameEventType::ClientBeginConnect,
18945            "client_connected" => GameEventType::ClientConnected,
18946            "client_fullconnect" => GameEventType::ClientFullConnect,
18947            "host_quit" => GameEventType::HostQuit,
18948            "team_info" => GameEventType::TeamInfo,
18949            "team_score" => GameEventType::TeamScore,
18950            "teamplay_broadcast_audio" => GameEventType::TeamPlayBroadcastAudio,
18951            "player_team" => GameEventType::PlayerTeam,
18952            "player_class" => GameEventType::PlayerClass,
18953            "player_death" => GameEventType::PlayerDeath,
18954            "player_hurt" => GameEventType::PlayerHurt,
18955            "player_chat" => GameEventType::PlayerChat,
18956            "player_score" => GameEventType::PlayerScore,
18957            "player_spawn" => GameEventType::PlayerSpawn,
18958            "player_shoot" => GameEventType::PlayerShoot,
18959            "player_use" => GameEventType::PlayerUse,
18960            "player_changename" => GameEventType::PlayerChangeName,
18961            "player_hintmessage" => GameEventType::PlayerHintMessage,
18962            "base_player_teleported" => GameEventType::BasePlayerTeleported,
18963            "game_init" => GameEventType::GameInit,
18964            "game_newmap" => GameEventType::GameNewMap,
18965            "game_start" => GameEventType::GameStart,
18966            "game_end" => GameEventType::GameEnd,
18967            "round_start" => GameEventType::RoundStart,
18968            "round_end" => GameEventType::RoundEnd,
18969            "game_message" => GameEventType::GameMessage,
18970            "break_breakable" => GameEventType::BreakBreakable,
18971            "break_prop" => GameEventType::BreakProp,
18972            "entity_killed" => GameEventType::EntityKilled,
18973            "bonus_updated" => GameEventType::BonusUpdated,
18974            "achievement_event" => GameEventType::AchievementEvent,
18975            "achievement_increment" => GameEventType::AchievementIncrement,
18976            "physgun_pickup" => GameEventType::PhysgunPickup,
18977            "flare_ignite_npc" => GameEventType::FlareIgniteNpc,
18978            "helicopter_grenade_punt_miss" => GameEventType::HelicopterGrenadePuntMiss,
18979            "user_data_downloaded" => GameEventType::UserDataDownloaded,
18980            "ragdoll_dissolved" => GameEventType::RagdollDissolved,
18981            "hltv_changed_mode" => GameEventType::HLTVChangedMode,
18982            "hltv_changed_target" => GameEventType::HLTVChangedTarget,
18983            "vote_ended" => GameEventType::VoteEnded,
18984            "vote_started" => GameEventType::VoteStarted,
18985            "vote_changed" => GameEventType::VoteChanged,
18986            "vote_passed" => GameEventType::VotePassed,
18987            "vote_failed" => GameEventType::VoteFailed,
18988            "vote_cast" => GameEventType::VoteCast,
18989            "vote_options" => GameEventType::VoteOptions,
18990            "replay_saved" => GameEventType::ReplaySaved,
18991            "entered_performance_mode" => GameEventType::EnteredPerformanceMode,
18992            "browse_replays" => GameEventType::BrowseReplays,
18993            "replay_youtube_stats" => GameEventType::ReplayYoutubeStats,
18994            "inventory_updated" => GameEventType::InventoryUpdated,
18995            "cart_updated" => GameEventType::CartUpdated,
18996            "store_pricesheet_updated" => GameEventType::StorePriceSheetUpdated,
18997            "econ_inventory_connected" => GameEventType::EconInventoryConnected,
18998            "item_schema_initialized" => GameEventType::ItemSchemaInitialized,
18999            "gc_new_session" => GameEventType::GcNewSession,
19000            "gc_lost_session" => GameEventType::GcLostSession,
19001            "intro_finish" => GameEventType::IntroFinish,
19002            "intro_nextcamera" => GameEventType::IntroNextCamera,
19003            "player_changeclass" => GameEventType::PlayerChangeClass,
19004            "tf_map_time_remaining" => GameEventType::TfMapTimeRemaining,
19005            "tf_game_over" => GameEventType::TfGameOver,
19006            "ctf_flag_captured" => GameEventType::CtfFlagCaptured,
19007            "controlpoint_initialized" => GameEventType::ControlPointInitialized,
19008            "controlpoint_updateimages" => GameEventType::ControlPointUpdateImages,
19009            "controlpoint_updatelayout" => GameEventType::ControlPointUpdateLayout,
19010            "controlpoint_updatecapping" => GameEventType::ControlPointUpdateCapping,
19011            "controlpoint_updateowner" => GameEventType::ControlPointUpdateOwner,
19012            "controlpoint_starttouch" => GameEventType::ControlPointStartTouch,
19013            "controlpoint_endtouch" => GameEventType::ControlPointEndTouch,
19014            "controlpoint_pulse_element" => GameEventType::ControlPointPulseElement,
19015            "controlpoint_fake_capture" => GameEventType::ControlPointFakeCapture,
19016            "controlpoint_fake_capture_mult" => GameEventType::ControlPointFakeCaptureMultiplier,
19017            "teamplay_round_selected" => GameEventType::TeamPlayRoundSelected,
19018            "teamplay_round_start" => GameEventType::TeamPlayRoundStart,
19019            "teamplay_round_active" => GameEventType::TeamPlayRoundActive,
19020            "teamplay_waiting_begins" => GameEventType::TeamPlayWaitingBegins,
19021            "teamplay_waiting_ends" => GameEventType::TeamPlayWaitingEnds,
19022            "teamplay_waiting_abouttoend" => GameEventType::TeamPlayWaitingAboutToEnd,
19023            "teamplay_restart_round" => GameEventType::TeamPlayRestartRound,
19024            "teamplay_ready_restart" => GameEventType::TeamPlayReadyRestart,
19025            "teamplay_round_restart_seconds" => GameEventType::TeamPlayRoundRestartSeconds,
19026            "teamplay_team_ready" => GameEventType::TeamPlayTeamReady,
19027            "teamplay_round_win" => GameEventType::TeamPlayRoundWin,
19028            "teamplay_update_timer" => GameEventType::TeamPlayUpdateTimer,
19029            "teamplay_round_stalemate" => GameEventType::TeamPlayRoundStalemate,
19030            "teamplay_overtime_begin" => GameEventType::TeamPlayOvertimeBegin,
19031            "teamplay_overtime_end" => GameEventType::TeamPlayOvertimeEnd,
19032            "teamplay_suddendeath_begin" => GameEventType::TeamPlaySuddenDeathBegin,
19033            "teamplay_suddendeath_end" => GameEventType::TeamPlaySuddenDeathEnd,
19034            "teamplay_game_over" => GameEventType::TeamPlayGameOver,
19035            "teamplay_map_time_remaining" => GameEventType::TeamPlayMapTimeRemaining,
19036            "teamplay_timer_flash" => GameEventType::TeamPlayTimerFlash,
19037            "teamplay_timer_time_added" => GameEventType::TeamPlayTimerTimeAdded,
19038            "teamplay_point_startcapture" => GameEventType::TeamPlayPointStartCapture,
19039            "teamplay_point_captured" => GameEventType::TeamPlayPointCaptured,
19040            "teamplay_point_locked" => GameEventType::TeamPlayPointLocked,
19041            "teamplay_point_unlocked" => GameEventType::TeamPlayPointUnlocked,
19042            "teamplay_capture_broken" => GameEventType::TeamPlayCaptureBroken,
19043            "teamplay_capture_blocked" => GameEventType::TeamPlayCaptureBlocked,
19044            "teamplay_flag_event" => GameEventType::TeamPlayFlagEvent,
19045            "teamplay_win_panel" => GameEventType::TeamPlayWinPanel,
19046            "teamplay_teambalanced_player" => GameEventType::TeamPlayTeamBalancedPlayer,
19047            "teamplay_setup_finished" => GameEventType::TeamPlaySetupFinished,
19048            "teamplay_alert" => GameEventType::TeamPlayAlert,
19049            "training_complete" => GameEventType::TrainingComplete,
19050            "show_freezepanel" => GameEventType::ShowFreezePanel,
19051            "hide_freezepanel" => GameEventType::HideFreezePanel,
19052            "freezecam_started" => GameEventType::FreezeCamStarted,
19053            "localplayer_changeteam" => GameEventType::LocalPlayerChangeTeam,
19054            "localplayer_score_changed" => GameEventType::LocalPlayerScoreChanged,
19055            "localplayer_changeclass" => GameEventType::LocalPlayerChangeClass,
19056            "localplayer_respawn" => GameEventType::LocalPlayerRespawn,
19057            "building_info_changed" => GameEventType::BuildingInfoChanged,
19058            "localplayer_changedisguise" => GameEventType::LocalPlayerChangeDisguise,
19059            "player_account_changed" => GameEventType::PlayerAccountChanged,
19060            "spy_pda_reset" => GameEventType::SpyPdaReset,
19061            "flagstatus_update" => GameEventType::FlagStatusUpdate,
19062            "player_stats_updated" => GameEventType::PlayerStatsUpdated,
19063            "playing_commentary" => GameEventType::PlayingCommentary,
19064            "player_chargedeployed" => GameEventType::PlayerChargeDeployed,
19065            "player_builtobject" => GameEventType::PlayerBuiltObject,
19066            "player_upgradedobject" => GameEventType::PlayerUpgradedObject,
19067            "player_carryobject" => GameEventType::PlayerCarryObject,
19068            "player_dropobject" => GameEventType::PlayerDropObject,
19069            "object_removed" => GameEventType::ObjectRemoved,
19070            "object_destroyed" => GameEventType::ObjectDestroyed,
19071            "object_detonated" => GameEventType::ObjectDetonated,
19072            "achievement_earned" => GameEventType::AchievementEarned,
19073            "spec_target_updated" => GameEventType::SpecTargetUpdated,
19074            "tournament_stateupdate" => GameEventType::TournamentStateUpdate,
19075            "tournament_enablecountdown" => GameEventType::TournamentEnableCountdown,
19076            "player_calledformedic" => GameEventType::PlayerCalledForMedic,
19077            "player_askedforball" => GameEventType::PlayerAskedForBall,
19078            "localplayer_becameobserver" => GameEventType::LocalPlayerBecameObserver,
19079            "player_ignited_inv" => GameEventType::PlayerIgnitedInv,
19080            "player_ignited" => GameEventType::PlayerIgnited,
19081            "player_extinguished" => GameEventType::PlayerExtinguished,
19082            "player_teleported" => GameEventType::PlayerTeleported,
19083            "player_healedmediccall" => GameEventType::PlayerHealedMedicCall,
19084            "localplayer_chargeready" => GameEventType::LocalPlayerChargeReady,
19085            "localplayer_winddown" => GameEventType::LocalPlayerWindDown,
19086            "player_invulned" => GameEventType::PlayerInvulned,
19087            "escort_speed" => GameEventType::EscortSpeed,
19088            "escort_progress" => GameEventType::EscortProgress,
19089            "escort_recede" => GameEventType::EscortRecede,
19090            "gameui_activated" => GameEventType::GameUIActivated,
19091            "gameui_hidden" => GameEventType::GameUIHidden,
19092            "player_escort_score" => GameEventType::PlayerEscortScore,
19093            "player_healonhit" => GameEventType::PlayerHealOnHit,
19094            "player_stealsandvich" => GameEventType::PlayerStealSandvich,
19095            "show_class_layout" => GameEventType::ShowClassLayout,
19096            "show_vs_panel" => GameEventType::ShowVsPanel,
19097            "player_damaged" => GameEventType::PlayerDamaged,
19098            "arena_player_notification" => GameEventType::ArenaPlayerNotification,
19099            "arena_match_maxstreak" => GameEventType::ArenaMatchMaxStreak,
19100            "arena_round_start" => GameEventType::ArenaRoundStart,
19101            "arena_win_panel" => GameEventType::ArenaWinPanel,
19102            "pve_win_panel" => GameEventType::PveWinPanel,
19103            "air_dash" => GameEventType::AirDash,
19104            "landed" => GameEventType::Landed,
19105            "player_damage_dodged" => GameEventType::PlayerDamageDodged,
19106            "player_stunned" => GameEventType::PlayerStunned,
19107            "scout_grand_slam" => GameEventType::ScoutGrandSlam,
19108            "scout_slamdoll_landed" => GameEventType::ScoutSlamdollLanded,
19109            "arrow_impact" => GameEventType::ArrowImpact,
19110            "player_jarated" => GameEventType::PlayerJarated,
19111            "player_jarated_fade" => GameEventType::PlayerJaratedFade,
19112            "player_shield_blocked" => GameEventType::PlayerShieldBlocked,
19113            "player_pinned" => GameEventType::PlayerPinned,
19114            "player_healedbymedic" => GameEventType::PlayerHealedByMedic,
19115            "player_sapped_object" => GameEventType::PlayerSappedObject,
19116            "item_found" => GameEventType::ItemFound,
19117            "show_annotation" => GameEventType::ShowAnnotation,
19118            "hide_annotation" => GameEventType::HideAnnotation,
19119            "post_inventory_application" => GameEventType::PostInventoryApplication,
19120            "controlpoint_unlock_updated" => GameEventType::ControlPointUnlockUpdated,
19121            "deploy_buff_banner" => GameEventType::DeployBuffBanner,
19122            "player_buff" => GameEventType::PlayerBuff,
19123            "medic_death" => GameEventType::MedicDeath,
19124            "overtime_nag" => GameEventType::OvertimeNag,
19125            "teams_changed" => GameEventType::TeamsChanged,
19126            "halloween_pumpkin_grab" => GameEventType::HalloweenPumpkinGrab,
19127            "rocket_jump" => GameEventType::RocketJump,
19128            "rocket_jump_landed" => GameEventType::RocketJumpLanded,
19129            "sticky_jump" => GameEventType::StickyJump,
19130            "sticky_jump_landed" => GameEventType::StickyJumpLanded,
19131            "rocketpack_launch" => GameEventType::RocketPackLaunch,
19132            "rocketpack_landed" => GameEventType::RocketPackLanded,
19133            "medic_defended" => GameEventType::MedicDefended,
19134            "localplayer_healed" => GameEventType::LocalPlayerHealed,
19135            "player_destroyed_pipebomb" => GameEventType::PlayerDestroyedPipeBomb,
19136            "object_deflected" => GameEventType::ObjectDeflected,
19137            "player_mvp" => GameEventType::PlayerMvp,
19138            "raid_spawn_mob" => GameEventType::RaidSpawnMob,
19139            "raid_spawn_squad" => GameEventType::RaidSpawnSquad,
19140            "nav_blocked" => GameEventType::NavBlocked,
19141            "path_track_passed" => GameEventType::PathTrackPassed,
19142            "num_cappers_changed" => GameEventType::NumCappersChanged,
19143            "player_regenerate" => GameEventType::PlayerRegenerate,
19144            "update_status_item" => GameEventType::UpdateStatusItem,
19145            "stats_resetround" => GameEventType::StatsResetRound,
19146            "scorestats_accumulated_update" => GameEventType::ScoreStatsAccumulatedUpdate,
19147            "scorestats_accumulated_reset" => GameEventType::ScoreStatsAccumulatedReset,
19148            "achievement_earned_local" => GameEventType::AchievementEarnedLocal,
19149            "player_healed" => GameEventType::PlayerHealed,
19150            "building_healed" => GameEventType::BuildingHealed,
19151            "item_pickup" => GameEventType::ItemPickup,
19152            "duel_status" => GameEventType::DuelStatus,
19153            "fish_notice" => GameEventType::FishNotice,
19154            "fish_notice__arm" => GameEventType::FishNoticeArm,
19155            "slap_notice" => GameEventType::SlapNotice,
19156            "throwable_hit" => GameEventType::ThrowableHit,
19157            "pumpkin_lord_summoned" => GameEventType::PumpkinLordSummoned,
19158            "pumpkin_lord_killed" => GameEventType::PumpkinLordKilled,
19159            "merasmus_summoned" => GameEventType::MerasmusSummoned,
19160            "merasmus_killed" => GameEventType::MerasmusKilled,
19161            "merasmus_escape_warning" => GameEventType::MerasmusEscapeWarning,
19162            "merasmus_escaped" => GameEventType::MerasmusEscaped,
19163            "eyeball_boss_summoned" => GameEventType::EyeballBossSummoned,
19164            "eyeball_boss_stunned" => GameEventType::EyeballBossStunned,
19165            "eyeball_boss_killed" => GameEventType::EyeballBossKilled,
19166            "eyeball_boss_killer" => GameEventType::EyeballBossKiller,
19167            "eyeball_boss_escape_imminent" => GameEventType::EyeballBossEscapeImminent,
19168            "eyeball_boss_escaped" => GameEventType::EyeballBossEscaped,
19169            "npc_hurt" => GameEventType::NpcHurt,
19170            "controlpoint_timer_updated" => GameEventType::ControlPointTimerUpdated,
19171            "player_highfive_start" => GameEventType::PlayerHighFiveStart,
19172            "player_highfive_cancel" => GameEventType::PlayerHighFiveCancel,
19173            "player_highfive_success" => GameEventType::PlayerHighFiveSuccess,
19174            "player_bonuspoints" => GameEventType::PlayerBonusPoints,
19175            "player_upgraded" => GameEventType::PlayerUpgraded,
19176            "player_buyback" => GameEventType::PlayerBuyback,
19177            "player_used_powerup_bottle" => GameEventType::PlayerUsedPowerUpBottle,
19178            "christmas_gift_grab" => GameEventType::ChristmasGiftGrab,
19179            "player_killed_achievement_zone" => GameEventType::PlayerKilledAchievementZone,
19180            "party_updated" => GameEventType::PartyUpdated,
19181            "party_pref_changed" => GameEventType::PartyPrefChanged,
19182            "party_criteria_changed" => GameEventType::PartyCriteriaChanged,
19183            "party_invites_changed" => GameEventType::PartyInvitesChanged,
19184            "party_queue_state_changed" => GameEventType::PartyQueueStateChanged,
19185            "party_chat" => GameEventType::PartyChat,
19186            "party_member_join" => GameEventType::PartyMemberJoin,
19187            "party_member_leave" => GameEventType::PartyMemberLeave,
19188            "match_invites_updated" => GameEventType::MatchInvitesUpdated,
19189            "lobby_updated" => GameEventType::LobbyUpdated,
19190            "mvm_mission_update" => GameEventType::MvmMissionUpdate,
19191            "recalculate_holidays" => GameEventType::RecalculateHolidays,
19192            "player_currency_changed" => GameEventType::PlayerCurrencyChanged,
19193            "doomsday_rocket_open" => GameEventType::DoomsdayRocketOpen,
19194            "remove_nemesis_relationships" => GameEventType::RemoveNemesisRelationships,
19195            "mvm_creditbonus_wave" => GameEventType::MvmCreditBonusWave,
19196            "mvm_creditbonus_all" => GameEventType::MvmCreditBonusAll,
19197            "mvm_creditbonus_all_advanced" => GameEventType::MvmCreditBonusAllAdvanced,
19198            "mvm_quick_sentry_upgrade" => GameEventType::MvmQuickSentryUpgrade,
19199            "mvm_tank_destroyed_by_players" => GameEventType::MvmTankDestroyedByPlayers,
19200            "mvm_kill_robot_delivering_bomb" => GameEventType::MvmKillRobotDeliveringBomb,
19201            "mvm_pickup_currency" => GameEventType::MvmPickupCurrency,
19202            "mvm_bomb_carrier_killed" => GameEventType::MvmBombCarrierKilled,
19203            "mvm_sentrybuster_detonate" => GameEventType::MvmSentryBusterDetonate,
19204            "mvm_scout_marked_for_death" => GameEventType::MvmScoutMarkedForDeath,
19205            "mvm_medic_powerup_shared" => GameEventType::MvmMedicPowerUpShared,
19206            "mvm_begin_wave" => GameEventType::MvmBeginWave,
19207            "mvm_wave_complete" => GameEventType::MvmWaveComplete,
19208            "mvm_mission_complete" => GameEventType::MvmMissionComplete,
19209            "mvm_bomb_reset_by_player" => GameEventType::MvmBombResetByPlayer,
19210            "mvm_bomb_alarm_triggered" => GameEventType::MvmBombAlarmTriggered,
19211            "mvm_bomb_deploy_reset_by_player" => GameEventType::MvmBombDeployResetByPlayer,
19212            "mvm_wave_failed" => GameEventType::MvmWaveFailed,
19213            "mvm_reset_stats" => GameEventType::MvmResetStats,
19214            "damage_resisted" => GameEventType::DamageResisted,
19215            "revive_player_notify" => GameEventType::RevivePlayerNotify,
19216            "revive_player_stopped" => GameEventType::RevivePlayerStopped,
19217            "revive_player_complete" => GameEventType::RevivePlayerComplete,
19218            "player_turned_to_ghost" => GameEventType::PlayerTurnedToGhost,
19219            "medigun_shield_blocked_damage" => GameEventType::MedigunShieldBlockedDamage,
19220            "mvm_adv_wave_complete_no_gates" => GameEventType::MvmAdvWaveCompleteNoGates,
19221            "mvm_sniper_headshot_currency" => GameEventType::MvmSniperHeadshotCurrency,
19222            "mvm_mannhattan_pit" => GameEventType::MvmMannhattanPit,
19223            "flag_carried_in_detection_zone" => GameEventType::FlagCarriedInDetectionZone,
19224            "mvm_adv_wave_killed_stun_radio" => GameEventType::MvmAdvWaveKilledStunRadio,
19225            "player_directhit_stun" => GameEventType::PlayerDirectHitStun,
19226            "mvm_sentrybuster_killed" => GameEventType::MvmSentryBusterKilled,
19227            "upgrades_file_changed" => GameEventType::UpgradesFileChanged,
19228            "rd_team_points_changed" => GameEventType::RdTeamPointsChanged,
19229            "rd_rules_state_changed" => GameEventType::RdRulesStateChanged,
19230            "rd_robot_killed" => GameEventType::RdRobotKilled,
19231            "rd_robot_impact" => GameEventType::RdRobotImpact,
19232            "teamplay_pre_round_time_left" => GameEventType::TeamPlayPreRoundTimeLeft,
19233            "parachute_deploy" => GameEventType::ParachuteDeploy,
19234            "parachute_holster" => GameEventType::ParachuteHolster,
19235            "kill_refills_meter" => GameEventType::KillRefillsMeter,
19236            "rps_taunt_event" => GameEventType::RpsTauntEvent,
19237            "conga_kill" => GameEventType::CongaKill,
19238            "player_initial_spawn" => GameEventType::PlayerInitialSpawn,
19239            "competitive_victory" => GameEventType::CompetitiveVictory,
19240            "competitive_stats_update" => GameEventType::CompetitiveStatsUpdate,
19241            "minigame_win" => GameEventType::MiniGameWin,
19242            "sentry_on_go_active" => GameEventType::SentryOnGoActive,
19243            "duck_xp_level_up" => GameEventType::DuckXpLevelUp,
19244            "questlog_opened" => GameEventType::QuestLogOpened,
19245            "schema_updated" => GameEventType::SchemaUpdated,
19246            "localplayer_pickup_weapon" => GameEventType::LocalPlayerPickupWeapon,
19247            "rd_player_score_points" => GameEventType::RdPlayerScorePoints,
19248            "demoman_det_stickies" => GameEventType::DemomanDetStickies,
19249            "quest_objective_completed" => GameEventType::QuestObjectiveCompleted,
19250            "player_score_changed" => GameEventType::PlayerScoreChanged,
19251            "killed_capping_player" => GameEventType::KilledCappingPlayer,
19252            "environmental_death" => GameEventType::EnvironmentalDeath,
19253            "projectile_direct_hit" => GameEventType::ProjectileDirectHit,
19254            "pass_get" => GameEventType::PassGet,
19255            "pass_score" => GameEventType::PassScore,
19256            "pass_free" => GameEventType::PassFree,
19257            "pass_pass_caught" => GameEventType::PassPassCaught,
19258            "pass_ball_stolen" => GameEventType::PassBallStolen,
19259            "pass_ball_blocked" => GameEventType::PassBallBlocked,
19260            "damage_prevented" => GameEventType::DamagePrevented,
19261            "halloween_boss_killed" => GameEventType::HalloweenBossKilled,
19262            "escaped_loot_island" => GameEventType::EscapedLootIsland,
19263            "tagged_player_as_it" => GameEventType::TaggedPlayerAsIt,
19264            "merasmus_stunned" => GameEventType::MerasmusStunned,
19265            "merasmus_prop_found" => GameEventType::MerasmusPropFound,
19266            "halloween_skeleton_killed" => GameEventType::HalloweenSkeletonKilled,
19267            "skeleton_killed_quest" => GameEventType::SkeletonKilledQuest,
19268            "skeleton_king_killed_quest" => GameEventType::SkeletonKingKilledQuest,
19269            "escape_hell" => GameEventType::EscapeHell,
19270            "cross_spectral_bridge" => GameEventType::CrossSpectralBridge,
19271            "minigame_won" => GameEventType::MiniGameWon,
19272            "respawn_ghost" => GameEventType::RespawnGhost,
19273            "kill_in_hell" => GameEventType::KillInHell,
19274            "halloween_duck_collected" => GameEventType::HalloweenDuckCollected,
19275            "special_score" => GameEventType::SpecialScore,
19276            "team_leader_killed" => GameEventType::TeamLeaderKilled,
19277            "halloween_soul_collected" => GameEventType::HalloweenSoulCollected,
19278            "recalculate_truce" => GameEventType::RecalculateTruce,
19279            "deadringer_cheat_death" => GameEventType::DeadRingerCheatDeath,
19280            "crossbow_heal" => GameEventType::CrossbowHeal,
19281            "damage_mitigated" => GameEventType::DamageMitigated,
19282            "payload_pushed" => GameEventType::PayloadPushed,
19283            "player_abandoned_match" => GameEventType::PlayerAbandonedMatch,
19284            "cl_drawline" => GameEventType::ClDrawline,
19285            "restart_timer_time" => GameEventType::RestartTimerTime,
19286            "winlimit_changed" => GameEventType::WinLimitChanged,
19287            "winpanel_show_scores" => GameEventType::WinPanelShowScores,
19288            "top_streams_request_finished" => GameEventType::TopStreamsRequestFinished,
19289            "competitive_state_changed" => GameEventType::CompetitiveStateChanged,
19290            "global_war_data_updated" => GameEventType::GlobalWarDataUpdated,
19291            "stop_watch_changed" => GameEventType::StopWatchChanged,
19292            "ds_stop" => GameEventType::DsStop,
19293            "ds_screenshot" => GameEventType::DsScreenshot,
19294            "show_match_summary" => GameEventType::ShowMatchSummary,
19295            "experience_changed" => GameEventType::ExperienceChanged,
19296            "begin_xp_lerp" => GameEventType::BeginXpLerp,
19297            "matchmaker_stats_updated" => GameEventType::MatchmakerStatsUpdated,
19298            "rematch_vote_period_over" => GameEventType::RematchVotePeriodOver,
19299            "rematch_failed_to_create" => GameEventType::RematchFailedToCreate,
19300            "player_rematch_change" => GameEventType::PlayerRematchChange,
19301            "ping_updated" => GameEventType::PingUpdated,
19302            "mmstats_updated" => GameEventType::MMStatsUpdated,
19303            "player_next_map_vote_change" => GameEventType::PlayerNextMapVoteChange,
19304            "vote_maps_changed" => GameEventType::VoteMapsChanged,
19305            "proto_def_changed" => GameEventType::ProtoDefChanged,
19306            "player_domination" => GameEventType::PlayerDomination,
19307            "player_rocketpack_pushed" => GameEventType::PlayerRocketPackPushed,
19308            "quest_request" => GameEventType::QuestRequest,
19309            "quest_response" => GameEventType::QuestResponse,
19310            "quest_progress" => GameEventType::QuestProgress,
19311            "projectile_removed" => GameEventType::ProjectileRemoved,
19312            "quest_map_data_changed" => GameEventType::QuestMapDataChanged,
19313            "gas_doused_player_ignited" => GameEventType::GasDousedPlayerIgnited,
19314            "quest_turn_in_state" => GameEventType::QuestTurnInState,
19315            "items_acknowledged" => GameEventType::ItemsAcknowledged,
19316            "capper_killed" => GameEventType::CapperKilled,
19317            "mainmenu_stabilized" => GameEventType::MainMenuStabilized,
19318            "world_status_changed" => GameEventType::WorldStatusChanged,
19319            "hltv_status" => GameEventType::HLTVStatus,
19320            "hltv_cameraman" => GameEventType::HLTVCameraman,
19321            "hltv_rank_camera" => GameEventType::HLTVRankCamera,
19322            "hltv_rank_entity" => GameEventType::HLTVRankEntity,
19323            "hltv_fixed" => GameEventType::HLTVFixed,
19324            "hltv_chase" => GameEventType::HLTVChase,
19325            "hltv_message" => GameEventType::HLTVMessage,
19326            "hltv_title" => GameEventType::HLTVTitle,
19327            "hltv_chat" => GameEventType::HLTVChat,
19328            "replay_startrecord" => GameEventType::ReplayStartRecord,
19329            "replay_sessioninfo" => GameEventType::ReplaySessionInfo,
19330            "replay_endrecord" => GameEventType::ReplayEndRecord,
19331            "replay_replaysavailable" => GameEventType::ReplayReplaysAvailable,
19332            "replay_servererror" => GameEventType::ReplayServerError,
19333            ty => GameEventType::Unknown(ty.into()),
19334        }
19335    }
19336    pub fn as_str(&self) -> &str {
19337        match self {
19338            GameEventType::ServerSpawn => "server_spawn",
19339            GameEventType::ServerChangeLevelFailed => "server_changelevel_failed",
19340            GameEventType::ServerShutdown => "server_shutdown",
19341            GameEventType::ServerCvar => "server_cvar",
19342            GameEventType::ServerMessage => "server_message",
19343            GameEventType::ServerAddBan => "server_addban",
19344            GameEventType::ServerRemoveBan => "server_removeban",
19345            GameEventType::PlayerConnect => "player_connect",
19346            GameEventType::PlayerConnectClient => "player_connect_client",
19347            GameEventType::PlayerInfo => "player_info",
19348            GameEventType::PlayerDisconnect => "player_disconnect",
19349            GameEventType::PlayerActivate => "player_activate",
19350            GameEventType::PlayerSay => "player_say",
19351            GameEventType::ClientDisconnect => "client_disconnect",
19352            GameEventType::ClientBeginConnect => "client_beginconnect",
19353            GameEventType::ClientConnected => "client_connected",
19354            GameEventType::ClientFullConnect => "client_fullconnect",
19355            GameEventType::HostQuit => "host_quit",
19356            GameEventType::TeamInfo => "team_info",
19357            GameEventType::TeamScore => "team_score",
19358            GameEventType::TeamPlayBroadcastAudio => "teamplay_broadcast_audio",
19359            GameEventType::PlayerTeam => "player_team",
19360            GameEventType::PlayerClass => "player_class",
19361            GameEventType::PlayerDeath => "player_death",
19362            GameEventType::PlayerHurt => "player_hurt",
19363            GameEventType::PlayerChat => "player_chat",
19364            GameEventType::PlayerScore => "player_score",
19365            GameEventType::PlayerSpawn => "player_spawn",
19366            GameEventType::PlayerShoot => "player_shoot",
19367            GameEventType::PlayerUse => "player_use",
19368            GameEventType::PlayerChangeName => "player_changename",
19369            GameEventType::PlayerHintMessage => "player_hintmessage",
19370            GameEventType::BasePlayerTeleported => "base_player_teleported",
19371            GameEventType::GameInit => "game_init",
19372            GameEventType::GameNewMap => "game_newmap",
19373            GameEventType::GameStart => "game_start",
19374            GameEventType::GameEnd => "game_end",
19375            GameEventType::RoundStart => "round_start",
19376            GameEventType::RoundEnd => "round_end",
19377            GameEventType::GameMessage => "game_message",
19378            GameEventType::BreakBreakable => "break_breakable",
19379            GameEventType::BreakProp => "break_prop",
19380            GameEventType::EntityKilled => "entity_killed",
19381            GameEventType::BonusUpdated => "bonus_updated",
19382            GameEventType::AchievementEvent => "achievement_event",
19383            GameEventType::AchievementIncrement => "achievement_increment",
19384            GameEventType::PhysgunPickup => "physgun_pickup",
19385            GameEventType::FlareIgniteNpc => "flare_ignite_npc",
19386            GameEventType::HelicopterGrenadePuntMiss => "helicopter_grenade_punt_miss",
19387            GameEventType::UserDataDownloaded => "user_data_downloaded",
19388            GameEventType::RagdollDissolved => "ragdoll_dissolved",
19389            GameEventType::HLTVChangedMode => "hltv_changed_mode",
19390            GameEventType::HLTVChangedTarget => "hltv_changed_target",
19391            GameEventType::VoteEnded => "vote_ended",
19392            GameEventType::VoteStarted => "vote_started",
19393            GameEventType::VoteChanged => "vote_changed",
19394            GameEventType::VotePassed => "vote_passed",
19395            GameEventType::VoteFailed => "vote_failed",
19396            GameEventType::VoteCast => "vote_cast",
19397            GameEventType::VoteOptions => "vote_options",
19398            GameEventType::ReplaySaved => "replay_saved",
19399            GameEventType::EnteredPerformanceMode => "entered_performance_mode",
19400            GameEventType::BrowseReplays => "browse_replays",
19401            GameEventType::ReplayYoutubeStats => "replay_youtube_stats",
19402            GameEventType::InventoryUpdated => "inventory_updated",
19403            GameEventType::CartUpdated => "cart_updated",
19404            GameEventType::StorePriceSheetUpdated => "store_pricesheet_updated",
19405            GameEventType::EconInventoryConnected => "econ_inventory_connected",
19406            GameEventType::ItemSchemaInitialized => "item_schema_initialized",
19407            GameEventType::GcNewSession => "gc_new_session",
19408            GameEventType::GcLostSession => "gc_lost_session",
19409            GameEventType::IntroFinish => "intro_finish",
19410            GameEventType::IntroNextCamera => "intro_nextcamera",
19411            GameEventType::PlayerChangeClass => "player_changeclass",
19412            GameEventType::TfMapTimeRemaining => "tf_map_time_remaining",
19413            GameEventType::TfGameOver => "tf_game_over",
19414            GameEventType::CtfFlagCaptured => "ctf_flag_captured",
19415            GameEventType::ControlPointInitialized => "controlpoint_initialized",
19416            GameEventType::ControlPointUpdateImages => "controlpoint_updateimages",
19417            GameEventType::ControlPointUpdateLayout => "controlpoint_updatelayout",
19418            GameEventType::ControlPointUpdateCapping => "controlpoint_updatecapping",
19419            GameEventType::ControlPointUpdateOwner => "controlpoint_updateowner",
19420            GameEventType::ControlPointStartTouch => "controlpoint_starttouch",
19421            GameEventType::ControlPointEndTouch => "controlpoint_endtouch",
19422            GameEventType::ControlPointPulseElement => "controlpoint_pulse_element",
19423            GameEventType::ControlPointFakeCapture => "controlpoint_fake_capture",
19424            GameEventType::ControlPointFakeCaptureMultiplier => "controlpoint_fake_capture_mult",
19425            GameEventType::TeamPlayRoundSelected => "teamplay_round_selected",
19426            GameEventType::TeamPlayRoundStart => "teamplay_round_start",
19427            GameEventType::TeamPlayRoundActive => "teamplay_round_active",
19428            GameEventType::TeamPlayWaitingBegins => "teamplay_waiting_begins",
19429            GameEventType::TeamPlayWaitingEnds => "teamplay_waiting_ends",
19430            GameEventType::TeamPlayWaitingAboutToEnd => "teamplay_waiting_abouttoend",
19431            GameEventType::TeamPlayRestartRound => "teamplay_restart_round",
19432            GameEventType::TeamPlayReadyRestart => "teamplay_ready_restart",
19433            GameEventType::TeamPlayRoundRestartSeconds => "teamplay_round_restart_seconds",
19434            GameEventType::TeamPlayTeamReady => "teamplay_team_ready",
19435            GameEventType::TeamPlayRoundWin => "teamplay_round_win",
19436            GameEventType::TeamPlayUpdateTimer => "teamplay_update_timer",
19437            GameEventType::TeamPlayRoundStalemate => "teamplay_round_stalemate",
19438            GameEventType::TeamPlayOvertimeBegin => "teamplay_overtime_begin",
19439            GameEventType::TeamPlayOvertimeEnd => "teamplay_overtime_end",
19440            GameEventType::TeamPlaySuddenDeathBegin => "teamplay_suddendeath_begin",
19441            GameEventType::TeamPlaySuddenDeathEnd => "teamplay_suddendeath_end",
19442            GameEventType::TeamPlayGameOver => "teamplay_game_over",
19443            GameEventType::TeamPlayMapTimeRemaining => "teamplay_map_time_remaining",
19444            GameEventType::TeamPlayTimerFlash => "teamplay_timer_flash",
19445            GameEventType::TeamPlayTimerTimeAdded => "teamplay_timer_time_added",
19446            GameEventType::TeamPlayPointStartCapture => "teamplay_point_startcapture",
19447            GameEventType::TeamPlayPointCaptured => "teamplay_point_captured",
19448            GameEventType::TeamPlayPointLocked => "teamplay_point_locked",
19449            GameEventType::TeamPlayPointUnlocked => "teamplay_point_unlocked",
19450            GameEventType::TeamPlayCaptureBroken => "teamplay_capture_broken",
19451            GameEventType::TeamPlayCaptureBlocked => "teamplay_capture_blocked",
19452            GameEventType::TeamPlayFlagEvent => "teamplay_flag_event",
19453            GameEventType::TeamPlayWinPanel => "teamplay_win_panel",
19454            GameEventType::TeamPlayTeamBalancedPlayer => "teamplay_teambalanced_player",
19455            GameEventType::TeamPlaySetupFinished => "teamplay_setup_finished",
19456            GameEventType::TeamPlayAlert => "teamplay_alert",
19457            GameEventType::TrainingComplete => "training_complete",
19458            GameEventType::ShowFreezePanel => "show_freezepanel",
19459            GameEventType::HideFreezePanel => "hide_freezepanel",
19460            GameEventType::FreezeCamStarted => "freezecam_started",
19461            GameEventType::LocalPlayerChangeTeam => "localplayer_changeteam",
19462            GameEventType::LocalPlayerScoreChanged => "localplayer_score_changed",
19463            GameEventType::LocalPlayerChangeClass => "localplayer_changeclass",
19464            GameEventType::LocalPlayerRespawn => "localplayer_respawn",
19465            GameEventType::BuildingInfoChanged => "building_info_changed",
19466            GameEventType::LocalPlayerChangeDisguise => "localplayer_changedisguise",
19467            GameEventType::PlayerAccountChanged => "player_account_changed",
19468            GameEventType::SpyPdaReset => "spy_pda_reset",
19469            GameEventType::FlagStatusUpdate => "flagstatus_update",
19470            GameEventType::PlayerStatsUpdated => "player_stats_updated",
19471            GameEventType::PlayingCommentary => "playing_commentary",
19472            GameEventType::PlayerChargeDeployed => "player_chargedeployed",
19473            GameEventType::PlayerBuiltObject => "player_builtobject",
19474            GameEventType::PlayerUpgradedObject => "player_upgradedobject",
19475            GameEventType::PlayerCarryObject => "player_carryobject",
19476            GameEventType::PlayerDropObject => "player_dropobject",
19477            GameEventType::ObjectRemoved => "object_removed",
19478            GameEventType::ObjectDestroyed => "object_destroyed",
19479            GameEventType::ObjectDetonated => "object_detonated",
19480            GameEventType::AchievementEarned => "achievement_earned",
19481            GameEventType::SpecTargetUpdated => "spec_target_updated",
19482            GameEventType::TournamentStateUpdate => "tournament_stateupdate",
19483            GameEventType::TournamentEnableCountdown => "tournament_enablecountdown",
19484            GameEventType::PlayerCalledForMedic => "player_calledformedic",
19485            GameEventType::PlayerAskedForBall => "player_askedforball",
19486            GameEventType::LocalPlayerBecameObserver => "localplayer_becameobserver",
19487            GameEventType::PlayerIgnitedInv => "player_ignited_inv",
19488            GameEventType::PlayerIgnited => "player_ignited",
19489            GameEventType::PlayerExtinguished => "player_extinguished",
19490            GameEventType::PlayerTeleported => "player_teleported",
19491            GameEventType::PlayerHealedMedicCall => "player_healedmediccall",
19492            GameEventType::LocalPlayerChargeReady => "localplayer_chargeready",
19493            GameEventType::LocalPlayerWindDown => "localplayer_winddown",
19494            GameEventType::PlayerInvulned => "player_invulned",
19495            GameEventType::EscortSpeed => "escort_speed",
19496            GameEventType::EscortProgress => "escort_progress",
19497            GameEventType::EscortRecede => "escort_recede",
19498            GameEventType::GameUIActivated => "gameui_activated",
19499            GameEventType::GameUIHidden => "gameui_hidden",
19500            GameEventType::PlayerEscortScore => "player_escort_score",
19501            GameEventType::PlayerHealOnHit => "player_healonhit",
19502            GameEventType::PlayerStealSandvich => "player_stealsandvich",
19503            GameEventType::ShowClassLayout => "show_class_layout",
19504            GameEventType::ShowVsPanel => "show_vs_panel",
19505            GameEventType::PlayerDamaged => "player_damaged",
19506            GameEventType::ArenaPlayerNotification => "arena_player_notification",
19507            GameEventType::ArenaMatchMaxStreak => "arena_match_maxstreak",
19508            GameEventType::ArenaRoundStart => "arena_round_start",
19509            GameEventType::ArenaWinPanel => "arena_win_panel",
19510            GameEventType::PveWinPanel => "pve_win_panel",
19511            GameEventType::AirDash => "air_dash",
19512            GameEventType::Landed => "landed",
19513            GameEventType::PlayerDamageDodged => "player_damage_dodged",
19514            GameEventType::PlayerStunned => "player_stunned",
19515            GameEventType::ScoutGrandSlam => "scout_grand_slam",
19516            GameEventType::ScoutSlamdollLanded => "scout_slamdoll_landed",
19517            GameEventType::ArrowImpact => "arrow_impact",
19518            GameEventType::PlayerJarated => "player_jarated",
19519            GameEventType::PlayerJaratedFade => "player_jarated_fade",
19520            GameEventType::PlayerShieldBlocked => "player_shield_blocked",
19521            GameEventType::PlayerPinned => "player_pinned",
19522            GameEventType::PlayerHealedByMedic => "player_healedbymedic",
19523            GameEventType::PlayerSappedObject => "player_sapped_object",
19524            GameEventType::ItemFound => "item_found",
19525            GameEventType::ShowAnnotation => "show_annotation",
19526            GameEventType::HideAnnotation => "hide_annotation",
19527            GameEventType::PostInventoryApplication => "post_inventory_application",
19528            GameEventType::ControlPointUnlockUpdated => "controlpoint_unlock_updated",
19529            GameEventType::DeployBuffBanner => "deploy_buff_banner",
19530            GameEventType::PlayerBuff => "player_buff",
19531            GameEventType::MedicDeath => "medic_death",
19532            GameEventType::OvertimeNag => "overtime_nag",
19533            GameEventType::TeamsChanged => "teams_changed",
19534            GameEventType::HalloweenPumpkinGrab => "halloween_pumpkin_grab",
19535            GameEventType::RocketJump => "rocket_jump",
19536            GameEventType::RocketJumpLanded => "rocket_jump_landed",
19537            GameEventType::StickyJump => "sticky_jump",
19538            GameEventType::StickyJumpLanded => "sticky_jump_landed",
19539            GameEventType::RocketPackLaunch => "rocketpack_launch",
19540            GameEventType::RocketPackLanded => "rocketpack_landed",
19541            GameEventType::MedicDefended => "medic_defended",
19542            GameEventType::LocalPlayerHealed => "localplayer_healed",
19543            GameEventType::PlayerDestroyedPipeBomb => "player_destroyed_pipebomb",
19544            GameEventType::ObjectDeflected => "object_deflected",
19545            GameEventType::PlayerMvp => "player_mvp",
19546            GameEventType::RaidSpawnMob => "raid_spawn_mob",
19547            GameEventType::RaidSpawnSquad => "raid_spawn_squad",
19548            GameEventType::NavBlocked => "nav_blocked",
19549            GameEventType::PathTrackPassed => "path_track_passed",
19550            GameEventType::NumCappersChanged => "num_cappers_changed",
19551            GameEventType::PlayerRegenerate => "player_regenerate",
19552            GameEventType::UpdateStatusItem => "update_status_item",
19553            GameEventType::StatsResetRound => "stats_resetround",
19554            GameEventType::ScoreStatsAccumulatedUpdate => "scorestats_accumulated_update",
19555            GameEventType::ScoreStatsAccumulatedReset => "scorestats_accumulated_reset",
19556            GameEventType::AchievementEarnedLocal => "achievement_earned_local",
19557            GameEventType::PlayerHealed => "player_healed",
19558            GameEventType::BuildingHealed => "building_healed",
19559            GameEventType::ItemPickup => "item_pickup",
19560            GameEventType::DuelStatus => "duel_status",
19561            GameEventType::FishNotice => "fish_notice",
19562            GameEventType::FishNoticeArm => "fish_notice__arm",
19563            GameEventType::SlapNotice => "slap_notice",
19564            GameEventType::ThrowableHit => "throwable_hit",
19565            GameEventType::PumpkinLordSummoned => "pumpkin_lord_summoned",
19566            GameEventType::PumpkinLordKilled => "pumpkin_lord_killed",
19567            GameEventType::MerasmusSummoned => "merasmus_summoned",
19568            GameEventType::MerasmusKilled => "merasmus_killed",
19569            GameEventType::MerasmusEscapeWarning => "merasmus_escape_warning",
19570            GameEventType::MerasmusEscaped => "merasmus_escaped",
19571            GameEventType::EyeballBossSummoned => "eyeball_boss_summoned",
19572            GameEventType::EyeballBossStunned => "eyeball_boss_stunned",
19573            GameEventType::EyeballBossKilled => "eyeball_boss_killed",
19574            GameEventType::EyeballBossKiller => "eyeball_boss_killer",
19575            GameEventType::EyeballBossEscapeImminent => "eyeball_boss_escape_imminent",
19576            GameEventType::EyeballBossEscaped => "eyeball_boss_escaped",
19577            GameEventType::NpcHurt => "npc_hurt",
19578            GameEventType::ControlPointTimerUpdated => "controlpoint_timer_updated",
19579            GameEventType::PlayerHighFiveStart => "player_highfive_start",
19580            GameEventType::PlayerHighFiveCancel => "player_highfive_cancel",
19581            GameEventType::PlayerHighFiveSuccess => "player_highfive_success",
19582            GameEventType::PlayerBonusPoints => "player_bonuspoints",
19583            GameEventType::PlayerUpgraded => "player_upgraded",
19584            GameEventType::PlayerBuyback => "player_buyback",
19585            GameEventType::PlayerUsedPowerUpBottle => "player_used_powerup_bottle",
19586            GameEventType::ChristmasGiftGrab => "christmas_gift_grab",
19587            GameEventType::PlayerKilledAchievementZone => "player_killed_achievement_zone",
19588            GameEventType::PartyUpdated => "party_updated",
19589            GameEventType::PartyPrefChanged => "party_pref_changed",
19590            GameEventType::PartyCriteriaChanged => "party_criteria_changed",
19591            GameEventType::PartyInvitesChanged => "party_invites_changed",
19592            GameEventType::PartyQueueStateChanged => "party_queue_state_changed",
19593            GameEventType::PartyChat => "party_chat",
19594            GameEventType::PartyMemberJoin => "party_member_join",
19595            GameEventType::PartyMemberLeave => "party_member_leave",
19596            GameEventType::MatchInvitesUpdated => "match_invites_updated",
19597            GameEventType::LobbyUpdated => "lobby_updated",
19598            GameEventType::MvmMissionUpdate => "mvm_mission_update",
19599            GameEventType::RecalculateHolidays => "recalculate_holidays",
19600            GameEventType::PlayerCurrencyChanged => "player_currency_changed",
19601            GameEventType::DoomsdayRocketOpen => "doomsday_rocket_open",
19602            GameEventType::RemoveNemesisRelationships => "remove_nemesis_relationships",
19603            GameEventType::MvmCreditBonusWave => "mvm_creditbonus_wave",
19604            GameEventType::MvmCreditBonusAll => "mvm_creditbonus_all",
19605            GameEventType::MvmCreditBonusAllAdvanced => "mvm_creditbonus_all_advanced",
19606            GameEventType::MvmQuickSentryUpgrade => "mvm_quick_sentry_upgrade",
19607            GameEventType::MvmTankDestroyedByPlayers => "mvm_tank_destroyed_by_players",
19608            GameEventType::MvmKillRobotDeliveringBomb => "mvm_kill_robot_delivering_bomb",
19609            GameEventType::MvmPickupCurrency => "mvm_pickup_currency",
19610            GameEventType::MvmBombCarrierKilled => "mvm_bomb_carrier_killed",
19611            GameEventType::MvmSentryBusterDetonate => "mvm_sentrybuster_detonate",
19612            GameEventType::MvmScoutMarkedForDeath => "mvm_scout_marked_for_death",
19613            GameEventType::MvmMedicPowerUpShared => "mvm_medic_powerup_shared",
19614            GameEventType::MvmBeginWave => "mvm_begin_wave",
19615            GameEventType::MvmWaveComplete => "mvm_wave_complete",
19616            GameEventType::MvmMissionComplete => "mvm_mission_complete",
19617            GameEventType::MvmBombResetByPlayer => "mvm_bomb_reset_by_player",
19618            GameEventType::MvmBombAlarmTriggered => "mvm_bomb_alarm_triggered",
19619            GameEventType::MvmBombDeployResetByPlayer => "mvm_bomb_deploy_reset_by_player",
19620            GameEventType::MvmWaveFailed => "mvm_wave_failed",
19621            GameEventType::MvmResetStats => "mvm_reset_stats",
19622            GameEventType::DamageResisted => "damage_resisted",
19623            GameEventType::RevivePlayerNotify => "revive_player_notify",
19624            GameEventType::RevivePlayerStopped => "revive_player_stopped",
19625            GameEventType::RevivePlayerComplete => "revive_player_complete",
19626            GameEventType::PlayerTurnedToGhost => "player_turned_to_ghost",
19627            GameEventType::MedigunShieldBlockedDamage => "medigun_shield_blocked_damage",
19628            GameEventType::MvmAdvWaveCompleteNoGates => "mvm_adv_wave_complete_no_gates",
19629            GameEventType::MvmSniperHeadshotCurrency => "mvm_sniper_headshot_currency",
19630            GameEventType::MvmMannhattanPit => "mvm_mannhattan_pit",
19631            GameEventType::FlagCarriedInDetectionZone => "flag_carried_in_detection_zone",
19632            GameEventType::MvmAdvWaveKilledStunRadio => "mvm_adv_wave_killed_stun_radio",
19633            GameEventType::PlayerDirectHitStun => "player_directhit_stun",
19634            GameEventType::MvmSentryBusterKilled => "mvm_sentrybuster_killed",
19635            GameEventType::UpgradesFileChanged => "upgrades_file_changed",
19636            GameEventType::RdTeamPointsChanged => "rd_team_points_changed",
19637            GameEventType::RdRulesStateChanged => "rd_rules_state_changed",
19638            GameEventType::RdRobotKilled => "rd_robot_killed",
19639            GameEventType::RdRobotImpact => "rd_robot_impact",
19640            GameEventType::TeamPlayPreRoundTimeLeft => "teamplay_pre_round_time_left",
19641            GameEventType::ParachuteDeploy => "parachute_deploy",
19642            GameEventType::ParachuteHolster => "parachute_holster",
19643            GameEventType::KillRefillsMeter => "kill_refills_meter",
19644            GameEventType::RpsTauntEvent => "rps_taunt_event",
19645            GameEventType::CongaKill => "conga_kill",
19646            GameEventType::PlayerInitialSpawn => "player_initial_spawn",
19647            GameEventType::CompetitiveVictory => "competitive_victory",
19648            GameEventType::CompetitiveStatsUpdate => "competitive_stats_update",
19649            GameEventType::MiniGameWin => "minigame_win",
19650            GameEventType::SentryOnGoActive => "sentry_on_go_active",
19651            GameEventType::DuckXpLevelUp => "duck_xp_level_up",
19652            GameEventType::QuestLogOpened => "questlog_opened",
19653            GameEventType::SchemaUpdated => "schema_updated",
19654            GameEventType::LocalPlayerPickupWeapon => "localplayer_pickup_weapon",
19655            GameEventType::RdPlayerScorePoints => "rd_player_score_points",
19656            GameEventType::DemomanDetStickies => "demoman_det_stickies",
19657            GameEventType::QuestObjectiveCompleted => "quest_objective_completed",
19658            GameEventType::PlayerScoreChanged => "player_score_changed",
19659            GameEventType::KilledCappingPlayer => "killed_capping_player",
19660            GameEventType::EnvironmentalDeath => "environmental_death",
19661            GameEventType::ProjectileDirectHit => "projectile_direct_hit",
19662            GameEventType::PassGet => "pass_get",
19663            GameEventType::PassScore => "pass_score",
19664            GameEventType::PassFree => "pass_free",
19665            GameEventType::PassPassCaught => "pass_pass_caught",
19666            GameEventType::PassBallStolen => "pass_ball_stolen",
19667            GameEventType::PassBallBlocked => "pass_ball_blocked",
19668            GameEventType::DamagePrevented => "damage_prevented",
19669            GameEventType::HalloweenBossKilled => "halloween_boss_killed",
19670            GameEventType::EscapedLootIsland => "escaped_loot_island",
19671            GameEventType::TaggedPlayerAsIt => "tagged_player_as_it",
19672            GameEventType::MerasmusStunned => "merasmus_stunned",
19673            GameEventType::MerasmusPropFound => "merasmus_prop_found",
19674            GameEventType::HalloweenSkeletonKilled => "halloween_skeleton_killed",
19675            GameEventType::SkeletonKilledQuest => "skeleton_killed_quest",
19676            GameEventType::SkeletonKingKilledQuest => "skeleton_king_killed_quest",
19677            GameEventType::EscapeHell => "escape_hell",
19678            GameEventType::CrossSpectralBridge => "cross_spectral_bridge",
19679            GameEventType::MiniGameWon => "minigame_won",
19680            GameEventType::RespawnGhost => "respawn_ghost",
19681            GameEventType::KillInHell => "kill_in_hell",
19682            GameEventType::HalloweenDuckCollected => "halloween_duck_collected",
19683            GameEventType::SpecialScore => "special_score",
19684            GameEventType::TeamLeaderKilled => "team_leader_killed",
19685            GameEventType::HalloweenSoulCollected => "halloween_soul_collected",
19686            GameEventType::RecalculateTruce => "recalculate_truce",
19687            GameEventType::DeadRingerCheatDeath => "deadringer_cheat_death",
19688            GameEventType::CrossbowHeal => "crossbow_heal",
19689            GameEventType::DamageMitigated => "damage_mitigated",
19690            GameEventType::PayloadPushed => "payload_pushed",
19691            GameEventType::PlayerAbandonedMatch => "player_abandoned_match",
19692            GameEventType::ClDrawline => "cl_drawline",
19693            GameEventType::RestartTimerTime => "restart_timer_time",
19694            GameEventType::WinLimitChanged => "winlimit_changed",
19695            GameEventType::WinPanelShowScores => "winpanel_show_scores",
19696            GameEventType::TopStreamsRequestFinished => "top_streams_request_finished",
19697            GameEventType::CompetitiveStateChanged => "competitive_state_changed",
19698            GameEventType::GlobalWarDataUpdated => "global_war_data_updated",
19699            GameEventType::StopWatchChanged => "stop_watch_changed",
19700            GameEventType::DsStop => "ds_stop",
19701            GameEventType::DsScreenshot => "ds_screenshot",
19702            GameEventType::ShowMatchSummary => "show_match_summary",
19703            GameEventType::ExperienceChanged => "experience_changed",
19704            GameEventType::BeginXpLerp => "begin_xp_lerp",
19705            GameEventType::MatchmakerStatsUpdated => "matchmaker_stats_updated",
19706            GameEventType::RematchVotePeriodOver => "rematch_vote_period_over",
19707            GameEventType::RematchFailedToCreate => "rematch_failed_to_create",
19708            GameEventType::PlayerRematchChange => "player_rematch_change",
19709            GameEventType::PingUpdated => "ping_updated",
19710            GameEventType::MMStatsUpdated => "mmstats_updated",
19711            GameEventType::PlayerNextMapVoteChange => "player_next_map_vote_change",
19712            GameEventType::VoteMapsChanged => "vote_maps_changed",
19713            GameEventType::ProtoDefChanged => "proto_def_changed",
19714            GameEventType::PlayerDomination => "player_domination",
19715            GameEventType::PlayerRocketPackPushed => "player_rocketpack_pushed",
19716            GameEventType::QuestRequest => "quest_request",
19717            GameEventType::QuestResponse => "quest_response",
19718            GameEventType::QuestProgress => "quest_progress",
19719            GameEventType::ProjectileRemoved => "projectile_removed",
19720            GameEventType::QuestMapDataChanged => "quest_map_data_changed",
19721            GameEventType::GasDousedPlayerIgnited => "gas_doused_player_ignited",
19722            GameEventType::QuestTurnInState => "quest_turn_in_state",
19723            GameEventType::ItemsAcknowledged => "items_acknowledged",
19724            GameEventType::CapperKilled => "capper_killed",
19725            GameEventType::MainMenuStabilized => "mainmenu_stabilized",
19726            GameEventType::WorldStatusChanged => "world_status_changed",
19727            GameEventType::HLTVStatus => "hltv_status",
19728            GameEventType::HLTVCameraman => "hltv_cameraman",
19729            GameEventType::HLTVRankCamera => "hltv_rank_camera",
19730            GameEventType::HLTVRankEntity => "hltv_rank_entity",
19731            GameEventType::HLTVFixed => "hltv_fixed",
19732            GameEventType::HLTVChase => "hltv_chase",
19733            GameEventType::HLTVMessage => "hltv_message",
19734            GameEventType::HLTVTitle => "hltv_title",
19735            GameEventType::HLTVChat => "hltv_chat",
19736            GameEventType::ReplayStartRecord => "replay_startrecord",
19737            GameEventType::ReplaySessionInfo => "replay_sessioninfo",
19738            GameEventType::ReplayEndRecord => "replay_endrecord",
19739            GameEventType::ReplayReplaysAvailable => "replay_replaysavailable",
19740            GameEventType::ReplayServerError => "replay_servererror",
19741            GameEventType::Unknown(ty) => ty,
19742        }
19743    }
19744}
19745impl GameEvent {
19746    pub fn read(stream: &mut Stream, definition: &GameEventDefinition) -> Result<Self> {
19747        Ok(match definition.event_type {
19748            GameEventType::ServerSpawn => {
19749                GameEvent::ServerSpawn(Box::new(<ServerSpawnEvent>::read(stream, definition)?))
19750            }
19751            GameEventType::ServerChangeLevelFailed => GameEvent::ServerChangeLevelFailed(
19752                ServerChangeLevelFailedEvent::read(stream, definition)?,
19753            ),
19754            GameEventType::ServerShutdown => {
19755                GameEvent::ServerShutdown(ServerShutdownEvent::read(stream, definition)?)
19756            }
19757            GameEventType::ServerCvar => {
19758                GameEvent::ServerCvar(ServerCvarEvent::read(stream, definition)?)
19759            }
19760            GameEventType::ServerMessage => {
19761                GameEvent::ServerMessage(ServerMessageEvent::read(stream, definition)?)
19762            }
19763            GameEventType::ServerAddBan => {
19764                GameEvent::ServerAddBan(Box::new(<ServerAddBanEvent>::read(stream, definition)?))
19765            }
19766            GameEventType::ServerRemoveBan => {
19767                GameEvent::ServerRemoveBan(ServerRemoveBanEvent::read(stream, definition)?)
19768            }
19769            GameEventType::PlayerConnect => {
19770                GameEvent::PlayerConnect(PlayerConnectEvent::read(stream, definition)?)
19771            }
19772            GameEventType::PlayerConnectClient => {
19773                GameEvent::PlayerConnectClient(PlayerConnectClientEvent::read(stream, definition)?)
19774            }
19775            GameEventType::PlayerInfo => {
19776                GameEvent::PlayerInfo(PlayerInfoEvent::read(stream, definition)?)
19777            }
19778            GameEventType::PlayerDisconnect => {
19779                GameEvent::PlayerDisconnect(PlayerDisconnectEvent::read(stream, definition)?)
19780            }
19781            GameEventType::PlayerActivate => {
19782                GameEvent::PlayerActivate(PlayerActivateEvent::read(stream, definition)?)
19783            }
19784            GameEventType::PlayerSay => {
19785                GameEvent::PlayerSay(PlayerSayEvent::read(stream, definition)?)
19786            }
19787            GameEventType::ClientDisconnect => {
19788                GameEvent::ClientDisconnect(ClientDisconnectEvent::read(stream, definition)?)
19789            }
19790            GameEventType::ClientBeginConnect => {
19791                GameEvent::ClientBeginConnect(ClientBeginConnectEvent::read(stream, definition)?)
19792            }
19793            GameEventType::ClientConnected => {
19794                GameEvent::ClientConnected(ClientConnectedEvent::read(stream, definition)?)
19795            }
19796            GameEventType::ClientFullConnect => {
19797                GameEvent::ClientFullConnect(ClientFullConnectEvent::read(stream, definition)?)
19798            }
19799            GameEventType::HostQuit => {
19800                GameEvent::HostQuit(HostQuitEvent::read(stream, definition)?)
19801            }
19802            GameEventType::TeamInfo => {
19803                GameEvent::TeamInfo(TeamInfoEvent::read(stream, definition)?)
19804            }
19805            GameEventType::TeamScore => {
19806                GameEvent::TeamScore(TeamScoreEvent::read(stream, definition)?)
19807            }
19808            GameEventType::TeamPlayBroadcastAudio => GameEvent::TeamPlayBroadcastAudio(
19809                TeamPlayBroadcastAudioEvent::read(stream, definition)?,
19810            ),
19811            GameEventType::PlayerTeam => {
19812                GameEvent::PlayerTeam(PlayerTeamEvent::read(stream, definition)?)
19813            }
19814            GameEventType::PlayerClass => {
19815                GameEvent::PlayerClass(PlayerClassEvent::read(stream, definition)?)
19816            }
19817            GameEventType::PlayerDeath => {
19818                GameEvent::PlayerDeath(Box::new(<PlayerDeathEvent>::read(stream, definition)?))
19819            }
19820            GameEventType::PlayerHurt => {
19821                GameEvent::PlayerHurt(PlayerHurtEvent::read(stream, definition)?)
19822            }
19823            GameEventType::PlayerChat => {
19824                GameEvent::PlayerChat(PlayerChatEvent::read(stream, definition)?)
19825            }
19826            GameEventType::PlayerScore => {
19827                GameEvent::PlayerScore(PlayerScoreEvent::read(stream, definition)?)
19828            }
19829            GameEventType::PlayerSpawn => {
19830                GameEvent::PlayerSpawn(PlayerSpawnEvent::read(stream, definition)?)
19831            }
19832            GameEventType::PlayerShoot => {
19833                GameEvent::PlayerShoot(PlayerShootEvent::read(stream, definition)?)
19834            }
19835            GameEventType::PlayerUse => {
19836                GameEvent::PlayerUse(PlayerUseEvent::read(stream, definition)?)
19837            }
19838            GameEventType::PlayerChangeName => {
19839                GameEvent::PlayerChangeName(PlayerChangeNameEvent::read(stream, definition)?)
19840            }
19841            GameEventType::PlayerHintMessage => {
19842                GameEvent::PlayerHintMessage(PlayerHintMessageEvent::read(stream, definition)?)
19843            }
19844            GameEventType::BasePlayerTeleported => GameEvent::BasePlayerTeleported(
19845                BasePlayerTeleportedEvent::read(stream, definition)?,
19846            ),
19847            GameEventType::GameInit => {
19848                GameEvent::GameInit(GameInitEvent::read(stream, definition)?)
19849            }
19850            GameEventType::GameNewMap => {
19851                GameEvent::GameNewMap(GameNewMapEvent::read(stream, definition)?)
19852            }
19853            GameEventType::GameStart => {
19854                GameEvent::GameStart(GameStartEvent::read(stream, definition)?)
19855            }
19856            GameEventType::GameEnd => GameEvent::GameEnd(GameEndEvent::read(stream, definition)?),
19857            GameEventType::RoundStart => {
19858                GameEvent::RoundStart(RoundStartEvent::read(stream, definition)?)
19859            }
19860            GameEventType::RoundEnd => {
19861                GameEvent::RoundEnd(RoundEndEvent::read(stream, definition)?)
19862            }
19863            GameEventType::GameMessage => {
19864                GameEvent::GameMessage(GameMessageEvent::read(stream, definition)?)
19865            }
19866            GameEventType::BreakBreakable => {
19867                GameEvent::BreakBreakable(BreakBreakableEvent::read(stream, definition)?)
19868            }
19869            GameEventType::BreakProp => {
19870                GameEvent::BreakProp(BreakPropEvent::read(stream, definition)?)
19871            }
19872            GameEventType::EntityKilled => {
19873                GameEvent::EntityKilled(EntityKilledEvent::read(stream, definition)?)
19874            }
19875            GameEventType::BonusUpdated => {
19876                GameEvent::BonusUpdated(BonusUpdatedEvent::read(stream, definition)?)
19877            }
19878            GameEventType::AchievementEvent => {
19879                GameEvent::AchievementEvent(AchievementEventEvent::read(stream, definition)?)
19880            }
19881            GameEventType::AchievementIncrement => GameEvent::AchievementIncrement(
19882                AchievementIncrementEvent::read(stream, definition)?,
19883            ),
19884            GameEventType::PhysgunPickup => {
19885                GameEvent::PhysgunPickup(PhysgunPickupEvent::read(stream, definition)?)
19886            }
19887            GameEventType::FlareIgniteNpc => {
19888                GameEvent::FlareIgniteNpc(FlareIgniteNpcEvent::read(stream, definition)?)
19889            }
19890            GameEventType::HelicopterGrenadePuntMiss => GameEvent::HelicopterGrenadePuntMiss(
19891                HelicopterGrenadePuntMissEvent::read(stream, definition)?,
19892            ),
19893            GameEventType::UserDataDownloaded => {
19894                GameEvent::UserDataDownloaded(UserDataDownloadedEvent::read(stream, definition)?)
19895            }
19896            GameEventType::RagdollDissolved => {
19897                GameEvent::RagdollDissolved(RagdollDissolvedEvent::read(stream, definition)?)
19898            }
19899            GameEventType::HLTVChangedMode => {
19900                GameEvent::HLTVChangedMode(HLTVChangedModeEvent::read(stream, definition)?)
19901            }
19902            GameEventType::HLTVChangedTarget => {
19903                GameEvent::HLTVChangedTarget(HLTVChangedTargetEvent::read(stream, definition)?)
19904            }
19905            GameEventType::VoteEnded => {
19906                GameEvent::VoteEnded(VoteEndedEvent::read(stream, definition)?)
19907            }
19908            GameEventType::VoteStarted => {
19909                GameEvent::VoteStarted(VoteStartedEvent::read(stream, definition)?)
19910            }
19911            GameEventType::VoteChanged => {
19912                GameEvent::VoteChanged(VoteChangedEvent::read(stream, definition)?)
19913            }
19914            GameEventType::VotePassed => {
19915                GameEvent::VotePassed(VotePassedEvent::read(stream, definition)?)
19916            }
19917            GameEventType::VoteFailed => {
19918                GameEvent::VoteFailed(VoteFailedEvent::read(stream, definition)?)
19919            }
19920            GameEventType::VoteCast => {
19921                GameEvent::VoteCast(VoteCastEvent::read(stream, definition)?)
19922            }
19923            GameEventType::VoteOptions => {
19924                GameEvent::VoteOptions(Box::new(<VoteOptionsEvent>::read(stream, definition)?))
19925            }
19926            GameEventType::ReplaySaved => {
19927                GameEvent::ReplaySaved(ReplaySavedEvent::read(stream, definition)?)
19928            }
19929            GameEventType::EnteredPerformanceMode => GameEvent::EnteredPerformanceMode(
19930                EnteredPerformanceModeEvent::read(stream, definition)?,
19931            ),
19932            GameEventType::BrowseReplays => {
19933                GameEvent::BrowseReplays(BrowseReplaysEvent::read(stream, definition)?)
19934            }
19935            GameEventType::ReplayYoutubeStats => {
19936                GameEvent::ReplayYoutubeStats(ReplayYoutubeStatsEvent::read(stream, definition)?)
19937            }
19938            GameEventType::InventoryUpdated => {
19939                GameEvent::InventoryUpdated(InventoryUpdatedEvent::read(stream, definition)?)
19940            }
19941            GameEventType::CartUpdated => {
19942                GameEvent::CartUpdated(CartUpdatedEvent::read(stream, definition)?)
19943            }
19944            GameEventType::StorePriceSheetUpdated => GameEvent::StorePriceSheetUpdated(
19945                StorePriceSheetUpdatedEvent::read(stream, definition)?,
19946            ),
19947            GameEventType::EconInventoryConnected => GameEvent::EconInventoryConnected(
19948                EconInventoryConnectedEvent::read(stream, definition)?,
19949            ),
19950            GameEventType::ItemSchemaInitialized => GameEvent::ItemSchemaInitialized(
19951                ItemSchemaInitializedEvent::read(stream, definition)?,
19952            ),
19953            GameEventType::GcNewSession => {
19954                GameEvent::GcNewSession(GcNewSessionEvent::read(stream, definition)?)
19955            }
19956            GameEventType::GcLostSession => {
19957                GameEvent::GcLostSession(GcLostSessionEvent::read(stream, definition)?)
19958            }
19959            GameEventType::IntroFinish => {
19960                GameEvent::IntroFinish(IntroFinishEvent::read(stream, definition)?)
19961            }
19962            GameEventType::IntroNextCamera => {
19963                GameEvent::IntroNextCamera(IntroNextCameraEvent::read(stream, definition)?)
19964            }
19965            GameEventType::PlayerChangeClass => {
19966                GameEvent::PlayerChangeClass(PlayerChangeClassEvent::read(stream, definition)?)
19967            }
19968            GameEventType::TfMapTimeRemaining => {
19969                GameEvent::TfMapTimeRemaining(TfMapTimeRemainingEvent::read(stream, definition)?)
19970            }
19971            GameEventType::TfGameOver => {
19972                GameEvent::TfGameOver(TfGameOverEvent::read(stream, definition)?)
19973            }
19974            GameEventType::CtfFlagCaptured => {
19975                GameEvent::CtfFlagCaptured(CtfFlagCapturedEvent::read(stream, definition)?)
19976            }
19977            GameEventType::ControlPointInitialized => GameEvent::ControlPointInitialized(
19978                ControlPointInitializedEvent::read(stream, definition)?,
19979            ),
19980            GameEventType::ControlPointUpdateImages => GameEvent::ControlPointUpdateImages(
19981                ControlPointUpdateImagesEvent::read(stream, definition)?,
19982            ),
19983            GameEventType::ControlPointUpdateLayout => GameEvent::ControlPointUpdateLayout(
19984                ControlPointUpdateLayoutEvent::read(stream, definition)?,
19985            ),
19986            GameEventType::ControlPointUpdateCapping => GameEvent::ControlPointUpdateCapping(
19987                ControlPointUpdateCappingEvent::read(stream, definition)?,
19988            ),
19989            GameEventType::ControlPointUpdateOwner => GameEvent::ControlPointUpdateOwner(
19990                ControlPointUpdateOwnerEvent::read(stream, definition)?,
19991            ),
19992            GameEventType::ControlPointStartTouch => GameEvent::ControlPointStartTouch(
19993                ControlPointStartTouchEvent::read(stream, definition)?,
19994            ),
19995            GameEventType::ControlPointEndTouch => GameEvent::ControlPointEndTouch(
19996                ControlPointEndTouchEvent::read(stream, definition)?,
19997            ),
19998            GameEventType::ControlPointPulseElement => GameEvent::ControlPointPulseElement(
19999                ControlPointPulseElementEvent::read(stream, definition)?,
20000            ),
20001            GameEventType::ControlPointFakeCapture => GameEvent::ControlPointFakeCapture(
20002                ControlPointFakeCaptureEvent::read(stream, definition)?,
20003            ),
20004            GameEventType::ControlPointFakeCaptureMultiplier => {
20005                GameEvent::ControlPointFakeCaptureMultiplier(
20006                    ControlPointFakeCaptureMultiplierEvent::read(stream, definition)?,
20007                )
20008            }
20009            GameEventType::TeamPlayRoundSelected => GameEvent::TeamPlayRoundSelected(
20010                TeamPlayRoundSelectedEvent::read(stream, definition)?,
20011            ),
20012            GameEventType::TeamPlayRoundStart => {
20013                GameEvent::TeamPlayRoundStart(TeamPlayRoundStartEvent::read(stream, definition)?)
20014            }
20015            GameEventType::TeamPlayRoundActive => {
20016                GameEvent::TeamPlayRoundActive(TeamPlayRoundActiveEvent::read(stream, definition)?)
20017            }
20018            GameEventType::TeamPlayWaitingBegins => GameEvent::TeamPlayWaitingBegins(
20019                TeamPlayWaitingBeginsEvent::read(stream, definition)?,
20020            ),
20021            GameEventType::TeamPlayWaitingEnds => {
20022                GameEvent::TeamPlayWaitingEnds(TeamPlayWaitingEndsEvent::read(stream, definition)?)
20023            }
20024            GameEventType::TeamPlayWaitingAboutToEnd => GameEvent::TeamPlayWaitingAboutToEnd(
20025                TeamPlayWaitingAboutToEndEvent::read(stream, definition)?,
20026            ),
20027            GameEventType::TeamPlayRestartRound => GameEvent::TeamPlayRestartRound(
20028                TeamPlayRestartRoundEvent::read(stream, definition)?,
20029            ),
20030            GameEventType::TeamPlayReadyRestart => GameEvent::TeamPlayReadyRestart(
20031                TeamPlayReadyRestartEvent::read(stream, definition)?,
20032            ),
20033            GameEventType::TeamPlayRoundRestartSeconds => GameEvent::TeamPlayRoundRestartSeconds(
20034                TeamPlayRoundRestartSecondsEvent::read(stream, definition)?,
20035            ),
20036            GameEventType::TeamPlayTeamReady => {
20037                GameEvent::TeamPlayTeamReady(TeamPlayTeamReadyEvent::read(stream, definition)?)
20038            }
20039            GameEventType::TeamPlayRoundWin => {
20040                GameEvent::TeamPlayRoundWin(TeamPlayRoundWinEvent::read(stream, definition)?)
20041            }
20042            GameEventType::TeamPlayUpdateTimer => {
20043                GameEvent::TeamPlayUpdateTimer(TeamPlayUpdateTimerEvent::read(stream, definition)?)
20044            }
20045            GameEventType::TeamPlayRoundStalemate => GameEvent::TeamPlayRoundStalemate(
20046                TeamPlayRoundStalemateEvent::read(stream, definition)?,
20047            ),
20048            GameEventType::TeamPlayOvertimeBegin => GameEvent::TeamPlayOvertimeBegin(
20049                TeamPlayOvertimeBeginEvent::read(stream, definition)?,
20050            ),
20051            GameEventType::TeamPlayOvertimeEnd => {
20052                GameEvent::TeamPlayOvertimeEnd(TeamPlayOvertimeEndEvent::read(stream, definition)?)
20053            }
20054            GameEventType::TeamPlaySuddenDeathBegin => GameEvent::TeamPlaySuddenDeathBegin(
20055                TeamPlaySuddenDeathBeginEvent::read(stream, definition)?,
20056            ),
20057            GameEventType::TeamPlaySuddenDeathEnd => GameEvent::TeamPlaySuddenDeathEnd(
20058                TeamPlaySuddenDeathEndEvent::read(stream, definition)?,
20059            ),
20060            GameEventType::TeamPlayGameOver => {
20061                GameEvent::TeamPlayGameOver(TeamPlayGameOverEvent::read(stream, definition)?)
20062            }
20063            GameEventType::TeamPlayMapTimeRemaining => GameEvent::TeamPlayMapTimeRemaining(
20064                TeamPlayMapTimeRemainingEvent::read(stream, definition)?,
20065            ),
20066            GameEventType::TeamPlayTimerFlash => {
20067                GameEvent::TeamPlayTimerFlash(TeamPlayTimerFlashEvent::read(stream, definition)?)
20068            }
20069            GameEventType::TeamPlayTimerTimeAdded => GameEvent::TeamPlayTimerTimeAdded(
20070                TeamPlayTimerTimeAddedEvent::read(stream, definition)?,
20071            ),
20072            GameEventType::TeamPlayPointStartCapture => GameEvent::TeamPlayPointStartCapture(
20073                TeamPlayPointStartCaptureEvent::read(stream, definition)?,
20074            ),
20075            GameEventType::TeamPlayPointCaptured => GameEvent::TeamPlayPointCaptured(
20076                TeamPlayPointCapturedEvent::read(stream, definition)?,
20077            ),
20078            GameEventType::TeamPlayPointLocked => {
20079                GameEvent::TeamPlayPointLocked(TeamPlayPointLockedEvent::read(stream, definition)?)
20080            }
20081            GameEventType::TeamPlayPointUnlocked => GameEvent::TeamPlayPointUnlocked(
20082                TeamPlayPointUnlockedEvent::read(stream, definition)?,
20083            ),
20084            GameEventType::TeamPlayCaptureBroken => GameEvent::TeamPlayCaptureBroken(
20085                TeamPlayCaptureBrokenEvent::read(stream, definition)?,
20086            ),
20087            GameEventType::TeamPlayCaptureBlocked => GameEvent::TeamPlayCaptureBlocked(
20088                TeamPlayCaptureBlockedEvent::read(stream, definition)?,
20089            ),
20090            GameEventType::TeamPlayFlagEvent => {
20091                GameEvent::TeamPlayFlagEvent(TeamPlayFlagEventEvent::read(stream, definition)?)
20092            }
20093            GameEventType::TeamPlayWinPanel => {
20094                GameEvent::TeamPlayWinPanel(TeamPlayWinPanelEvent::read(stream, definition)?)
20095            }
20096            GameEventType::TeamPlayTeamBalancedPlayer => GameEvent::TeamPlayTeamBalancedPlayer(
20097                TeamPlayTeamBalancedPlayerEvent::read(stream, definition)?,
20098            ),
20099            GameEventType::TeamPlaySetupFinished => GameEvent::TeamPlaySetupFinished(
20100                TeamPlaySetupFinishedEvent::read(stream, definition)?,
20101            ),
20102            GameEventType::TeamPlayAlert => {
20103                GameEvent::TeamPlayAlert(TeamPlayAlertEvent::read(stream, definition)?)
20104            }
20105            GameEventType::TrainingComplete => {
20106                GameEvent::TrainingComplete(TrainingCompleteEvent::read(stream, definition)?)
20107            }
20108            GameEventType::ShowFreezePanel => {
20109                GameEvent::ShowFreezePanel(ShowFreezePanelEvent::read(stream, definition)?)
20110            }
20111            GameEventType::HideFreezePanel => {
20112                GameEvent::HideFreezePanel(HideFreezePanelEvent::read(stream, definition)?)
20113            }
20114            GameEventType::FreezeCamStarted => {
20115                GameEvent::FreezeCamStarted(FreezeCamStartedEvent::read(stream, definition)?)
20116            }
20117            GameEventType::LocalPlayerChangeTeam => GameEvent::LocalPlayerChangeTeam(
20118                LocalPlayerChangeTeamEvent::read(stream, definition)?,
20119            ),
20120            GameEventType::LocalPlayerScoreChanged => GameEvent::LocalPlayerScoreChanged(
20121                LocalPlayerScoreChangedEvent::read(stream, definition)?,
20122            ),
20123            GameEventType::LocalPlayerChangeClass => GameEvent::LocalPlayerChangeClass(
20124                LocalPlayerChangeClassEvent::read(stream, definition)?,
20125            ),
20126            GameEventType::LocalPlayerRespawn => {
20127                GameEvent::LocalPlayerRespawn(LocalPlayerRespawnEvent::read(stream, definition)?)
20128            }
20129            GameEventType::BuildingInfoChanged => {
20130                GameEvent::BuildingInfoChanged(BuildingInfoChangedEvent::read(stream, definition)?)
20131            }
20132            GameEventType::LocalPlayerChangeDisguise => GameEvent::LocalPlayerChangeDisguise(
20133                LocalPlayerChangeDisguiseEvent::read(stream, definition)?,
20134            ),
20135            GameEventType::PlayerAccountChanged => GameEvent::PlayerAccountChanged(
20136                PlayerAccountChangedEvent::read(stream, definition)?,
20137            ),
20138            GameEventType::SpyPdaReset => {
20139                GameEvent::SpyPdaReset(SpyPdaResetEvent::read(stream, definition)?)
20140            }
20141            GameEventType::FlagStatusUpdate => {
20142                GameEvent::FlagStatusUpdate(FlagStatusUpdateEvent::read(stream, definition)?)
20143            }
20144            GameEventType::PlayerStatsUpdated => {
20145                GameEvent::PlayerStatsUpdated(PlayerStatsUpdatedEvent::read(stream, definition)?)
20146            }
20147            GameEventType::PlayingCommentary => {
20148                GameEvent::PlayingCommentary(PlayingCommentaryEvent::read(stream, definition)?)
20149            }
20150            GameEventType::PlayerChargeDeployed => GameEvent::PlayerChargeDeployed(
20151                PlayerChargeDeployedEvent::read(stream, definition)?,
20152            ),
20153            GameEventType::PlayerBuiltObject => {
20154                GameEvent::PlayerBuiltObject(PlayerBuiltObjectEvent::read(stream, definition)?)
20155            }
20156            GameEventType::PlayerUpgradedObject => GameEvent::PlayerUpgradedObject(
20157                PlayerUpgradedObjectEvent::read(stream, definition)?,
20158            ),
20159            GameEventType::PlayerCarryObject => {
20160                GameEvent::PlayerCarryObject(PlayerCarryObjectEvent::read(stream, definition)?)
20161            }
20162            GameEventType::PlayerDropObject => {
20163                GameEvent::PlayerDropObject(PlayerDropObjectEvent::read(stream, definition)?)
20164            }
20165            GameEventType::ObjectRemoved => {
20166                GameEvent::ObjectRemoved(ObjectRemovedEvent::read(stream, definition)?)
20167            }
20168            GameEventType::ObjectDestroyed => {
20169                GameEvent::ObjectDestroyed(ObjectDestroyedEvent::read(stream, definition)?)
20170            }
20171            GameEventType::ObjectDetonated => {
20172                GameEvent::ObjectDetonated(ObjectDetonatedEvent::read(stream, definition)?)
20173            }
20174            GameEventType::AchievementEarned => {
20175                GameEvent::AchievementEarned(AchievementEarnedEvent::read(stream, definition)?)
20176            }
20177            GameEventType::SpecTargetUpdated => {
20178                GameEvent::SpecTargetUpdated(SpecTargetUpdatedEvent::read(stream, definition)?)
20179            }
20180            GameEventType::TournamentStateUpdate => GameEvent::TournamentStateUpdate(
20181                TournamentStateUpdateEvent::read(stream, definition)?,
20182            ),
20183            GameEventType::TournamentEnableCountdown => GameEvent::TournamentEnableCountdown(
20184                TournamentEnableCountdownEvent::read(stream, definition)?,
20185            ),
20186            GameEventType::PlayerCalledForMedic => GameEvent::PlayerCalledForMedic(
20187                PlayerCalledForMedicEvent::read(stream, definition)?,
20188            ),
20189            GameEventType::PlayerAskedForBall => {
20190                GameEvent::PlayerAskedForBall(PlayerAskedForBallEvent::read(stream, definition)?)
20191            }
20192            GameEventType::LocalPlayerBecameObserver => GameEvent::LocalPlayerBecameObserver(
20193                LocalPlayerBecameObserverEvent::read(stream, definition)?,
20194            ),
20195            GameEventType::PlayerIgnitedInv => {
20196                GameEvent::PlayerIgnitedInv(PlayerIgnitedInvEvent::read(stream, definition)?)
20197            }
20198            GameEventType::PlayerIgnited => {
20199                GameEvent::PlayerIgnited(PlayerIgnitedEvent::read(stream, definition)?)
20200            }
20201            GameEventType::PlayerExtinguished => {
20202                GameEvent::PlayerExtinguished(PlayerExtinguishedEvent::read(stream, definition)?)
20203            }
20204            GameEventType::PlayerTeleported => {
20205                GameEvent::PlayerTeleported(PlayerTeleportedEvent::read(stream, definition)?)
20206            }
20207            GameEventType::PlayerHealedMedicCall => GameEvent::PlayerHealedMedicCall(
20208                PlayerHealedMedicCallEvent::read(stream, definition)?,
20209            ),
20210            GameEventType::LocalPlayerChargeReady => GameEvent::LocalPlayerChargeReady(
20211                LocalPlayerChargeReadyEvent::read(stream, definition)?,
20212            ),
20213            GameEventType::LocalPlayerWindDown => {
20214                GameEvent::LocalPlayerWindDown(LocalPlayerWindDownEvent::read(stream, definition)?)
20215            }
20216            GameEventType::PlayerInvulned => {
20217                GameEvent::PlayerInvulned(PlayerInvulnedEvent::read(stream, definition)?)
20218            }
20219            GameEventType::EscortSpeed => {
20220                GameEvent::EscortSpeed(EscortSpeedEvent::read(stream, definition)?)
20221            }
20222            GameEventType::EscortProgress => {
20223                GameEvent::EscortProgress(EscortProgressEvent::read(stream, definition)?)
20224            }
20225            GameEventType::EscortRecede => {
20226                GameEvent::EscortRecede(EscortRecedeEvent::read(stream, definition)?)
20227            }
20228            GameEventType::GameUIActivated => {
20229                GameEvent::GameUIActivated(GameUIActivatedEvent::read(stream, definition)?)
20230            }
20231            GameEventType::GameUIHidden => {
20232                GameEvent::GameUIHidden(GameUIHiddenEvent::read(stream, definition)?)
20233            }
20234            GameEventType::PlayerEscortScore => {
20235                GameEvent::PlayerEscortScore(PlayerEscortScoreEvent::read(stream, definition)?)
20236            }
20237            GameEventType::PlayerHealOnHit => {
20238                GameEvent::PlayerHealOnHit(PlayerHealOnHitEvent::read(stream, definition)?)
20239            }
20240            GameEventType::PlayerStealSandvich => {
20241                GameEvent::PlayerStealSandvich(PlayerStealSandvichEvent::read(stream, definition)?)
20242            }
20243            GameEventType::ShowClassLayout => {
20244                GameEvent::ShowClassLayout(ShowClassLayoutEvent::read(stream, definition)?)
20245            }
20246            GameEventType::ShowVsPanel => {
20247                GameEvent::ShowVsPanel(ShowVsPanelEvent::read(stream, definition)?)
20248            }
20249            GameEventType::PlayerDamaged => {
20250                GameEvent::PlayerDamaged(PlayerDamagedEvent::read(stream, definition)?)
20251            }
20252            GameEventType::ArenaPlayerNotification => GameEvent::ArenaPlayerNotification(
20253                ArenaPlayerNotificationEvent::read(stream, definition)?,
20254            ),
20255            GameEventType::ArenaMatchMaxStreak => {
20256                GameEvent::ArenaMatchMaxStreak(ArenaMatchMaxStreakEvent::read(stream, definition)?)
20257            }
20258            GameEventType::ArenaRoundStart => {
20259                GameEvent::ArenaRoundStart(ArenaRoundStartEvent::read(stream, definition)?)
20260            }
20261            GameEventType::ArenaWinPanel => {
20262                GameEvent::ArenaWinPanel(ArenaWinPanelEvent::read(stream, definition)?)
20263            }
20264            GameEventType::PveWinPanel => {
20265                GameEvent::PveWinPanel(PveWinPanelEvent::read(stream, definition)?)
20266            }
20267            GameEventType::AirDash => GameEvent::AirDash(AirDashEvent::read(stream, definition)?),
20268            GameEventType::Landed => GameEvent::Landed(LandedEvent::read(stream, definition)?),
20269            GameEventType::PlayerDamageDodged => {
20270                GameEvent::PlayerDamageDodged(PlayerDamageDodgedEvent::read(stream, definition)?)
20271            }
20272            GameEventType::PlayerStunned => {
20273                GameEvent::PlayerStunned(PlayerStunnedEvent::read(stream, definition)?)
20274            }
20275            GameEventType::ScoutGrandSlam => {
20276                GameEvent::ScoutGrandSlam(ScoutGrandSlamEvent::read(stream, definition)?)
20277            }
20278            GameEventType::ScoutSlamdollLanded => {
20279                GameEvent::ScoutSlamdollLanded(ScoutSlamdollLandedEvent::read(stream, definition)?)
20280            }
20281            GameEventType::ArrowImpact => {
20282                GameEvent::ArrowImpact(ArrowImpactEvent::read(stream, definition)?)
20283            }
20284            GameEventType::PlayerJarated => {
20285                GameEvent::PlayerJarated(PlayerJaratedEvent::read(stream, definition)?)
20286            }
20287            GameEventType::PlayerJaratedFade => {
20288                GameEvent::PlayerJaratedFade(PlayerJaratedFadeEvent::read(stream, definition)?)
20289            }
20290            GameEventType::PlayerShieldBlocked => {
20291                GameEvent::PlayerShieldBlocked(PlayerShieldBlockedEvent::read(stream, definition)?)
20292            }
20293            GameEventType::PlayerPinned => {
20294                GameEvent::PlayerPinned(PlayerPinnedEvent::read(stream, definition)?)
20295            }
20296            GameEventType::PlayerHealedByMedic => {
20297                GameEvent::PlayerHealedByMedic(PlayerHealedByMedicEvent::read(stream, definition)?)
20298            }
20299            GameEventType::PlayerSappedObject => {
20300                GameEvent::PlayerSappedObject(PlayerSappedObjectEvent::read(stream, definition)?)
20301            }
20302            GameEventType::ItemFound => {
20303                GameEvent::ItemFound(ItemFoundEvent::read(stream, definition)?)
20304            }
20305            GameEventType::ShowAnnotation => {
20306                GameEvent::ShowAnnotation(ShowAnnotationEvent::read(stream, definition)?)
20307            }
20308            GameEventType::HideAnnotation => {
20309                GameEvent::HideAnnotation(HideAnnotationEvent::read(stream, definition)?)
20310            }
20311            GameEventType::PostInventoryApplication => GameEvent::PostInventoryApplication(
20312                PostInventoryApplicationEvent::read(stream, definition)?,
20313            ),
20314            GameEventType::ControlPointUnlockUpdated => GameEvent::ControlPointUnlockUpdated(
20315                ControlPointUnlockUpdatedEvent::read(stream, definition)?,
20316            ),
20317            GameEventType::DeployBuffBanner => {
20318                GameEvent::DeployBuffBanner(DeployBuffBannerEvent::read(stream, definition)?)
20319            }
20320            GameEventType::PlayerBuff => {
20321                GameEvent::PlayerBuff(PlayerBuffEvent::read(stream, definition)?)
20322            }
20323            GameEventType::MedicDeath => {
20324                GameEvent::MedicDeath(MedicDeathEvent::read(stream, definition)?)
20325            }
20326            GameEventType::OvertimeNag => {
20327                GameEvent::OvertimeNag(OvertimeNagEvent::read(stream, definition)?)
20328            }
20329            GameEventType::TeamsChanged => {
20330                GameEvent::TeamsChanged(TeamsChangedEvent::read(stream, definition)?)
20331            }
20332            GameEventType::HalloweenPumpkinGrab => GameEvent::HalloweenPumpkinGrab(
20333                HalloweenPumpkinGrabEvent::read(stream, definition)?,
20334            ),
20335            GameEventType::RocketJump => {
20336                GameEvent::RocketJump(RocketJumpEvent::read(stream, definition)?)
20337            }
20338            GameEventType::RocketJumpLanded => {
20339                GameEvent::RocketJumpLanded(RocketJumpLandedEvent::read(stream, definition)?)
20340            }
20341            GameEventType::StickyJump => {
20342                GameEvent::StickyJump(StickyJumpEvent::read(stream, definition)?)
20343            }
20344            GameEventType::StickyJumpLanded => {
20345                GameEvent::StickyJumpLanded(StickyJumpLandedEvent::read(stream, definition)?)
20346            }
20347            GameEventType::RocketPackLaunch => {
20348                GameEvent::RocketPackLaunch(RocketPackLaunchEvent::read(stream, definition)?)
20349            }
20350            GameEventType::RocketPackLanded => {
20351                GameEvent::RocketPackLanded(RocketPackLandedEvent::read(stream, definition)?)
20352            }
20353            GameEventType::MedicDefended => {
20354                GameEvent::MedicDefended(MedicDefendedEvent::read(stream, definition)?)
20355            }
20356            GameEventType::LocalPlayerHealed => {
20357                GameEvent::LocalPlayerHealed(LocalPlayerHealedEvent::read(stream, definition)?)
20358            }
20359            GameEventType::PlayerDestroyedPipeBomb => GameEvent::PlayerDestroyedPipeBomb(
20360                PlayerDestroyedPipeBombEvent::read(stream, definition)?,
20361            ),
20362            GameEventType::ObjectDeflected => {
20363                GameEvent::ObjectDeflected(ObjectDeflectedEvent::read(stream, definition)?)
20364            }
20365            GameEventType::PlayerMvp => {
20366                GameEvent::PlayerMvp(PlayerMvpEvent::read(stream, definition)?)
20367            }
20368            GameEventType::RaidSpawnMob => {
20369                GameEvent::RaidSpawnMob(RaidSpawnMobEvent::read(stream, definition)?)
20370            }
20371            GameEventType::RaidSpawnSquad => {
20372                GameEvent::RaidSpawnSquad(RaidSpawnSquadEvent::read(stream, definition)?)
20373            }
20374            GameEventType::NavBlocked => {
20375                GameEvent::NavBlocked(NavBlockedEvent::read(stream, definition)?)
20376            }
20377            GameEventType::PathTrackPassed => {
20378                GameEvent::PathTrackPassed(PathTrackPassedEvent::read(stream, definition)?)
20379            }
20380            GameEventType::NumCappersChanged => {
20381                GameEvent::NumCappersChanged(NumCappersChangedEvent::read(stream, definition)?)
20382            }
20383            GameEventType::PlayerRegenerate => {
20384                GameEvent::PlayerRegenerate(PlayerRegenerateEvent::read(stream, definition)?)
20385            }
20386            GameEventType::UpdateStatusItem => {
20387                GameEvent::UpdateStatusItem(UpdateStatusItemEvent::read(stream, definition)?)
20388            }
20389            GameEventType::StatsResetRound => {
20390                GameEvent::StatsResetRound(StatsResetRoundEvent::read(stream, definition)?)
20391            }
20392            GameEventType::ScoreStatsAccumulatedUpdate => GameEvent::ScoreStatsAccumulatedUpdate(
20393                ScoreStatsAccumulatedUpdateEvent::read(stream, definition)?,
20394            ),
20395            GameEventType::ScoreStatsAccumulatedReset => GameEvent::ScoreStatsAccumulatedReset(
20396                ScoreStatsAccumulatedResetEvent::read(stream, definition)?,
20397            ),
20398            GameEventType::AchievementEarnedLocal => GameEvent::AchievementEarnedLocal(
20399                AchievementEarnedLocalEvent::read(stream, definition)?,
20400            ),
20401            GameEventType::PlayerHealed => {
20402                GameEvent::PlayerHealed(PlayerHealedEvent::read(stream, definition)?)
20403            }
20404            GameEventType::BuildingHealed => {
20405                GameEvent::BuildingHealed(BuildingHealedEvent::read(stream, definition)?)
20406            }
20407            GameEventType::ItemPickup => {
20408                GameEvent::ItemPickup(ItemPickupEvent::read(stream, definition)?)
20409            }
20410            GameEventType::DuelStatus => {
20411                GameEvent::DuelStatus(DuelStatusEvent::read(stream, definition)?)
20412            }
20413            GameEventType::FishNotice => {
20414                GameEvent::FishNotice(Box::new(<FishNoticeEvent>::read(stream, definition)?))
20415            }
20416            GameEventType::FishNoticeArm => {
20417                GameEvent::FishNoticeArm(Box::new(<FishNoticeArmEvent>::read(stream, definition)?))
20418            }
20419            GameEventType::SlapNotice => {
20420                GameEvent::SlapNotice(Box::new(<SlapNoticeEvent>::read(stream, definition)?))
20421            }
20422            GameEventType::ThrowableHit => {
20423                GameEvent::ThrowableHit(Box::new(<ThrowableHitEvent>::read(stream, definition)?))
20424            }
20425            GameEventType::PumpkinLordSummoned => {
20426                GameEvent::PumpkinLordSummoned(PumpkinLordSummonedEvent::read(stream, definition)?)
20427            }
20428            GameEventType::PumpkinLordKilled => {
20429                GameEvent::PumpkinLordKilled(PumpkinLordKilledEvent::read(stream, definition)?)
20430            }
20431            GameEventType::MerasmusSummoned => {
20432                GameEvent::MerasmusSummoned(MerasmusSummonedEvent::read(stream, definition)?)
20433            }
20434            GameEventType::MerasmusKilled => {
20435                GameEvent::MerasmusKilled(MerasmusKilledEvent::read(stream, definition)?)
20436            }
20437            GameEventType::MerasmusEscapeWarning => GameEvent::MerasmusEscapeWarning(
20438                MerasmusEscapeWarningEvent::read(stream, definition)?,
20439            ),
20440            GameEventType::MerasmusEscaped => {
20441                GameEvent::MerasmusEscaped(MerasmusEscapedEvent::read(stream, definition)?)
20442            }
20443            GameEventType::EyeballBossSummoned => {
20444                GameEvent::EyeballBossSummoned(EyeballBossSummonedEvent::read(stream, definition)?)
20445            }
20446            GameEventType::EyeballBossStunned => {
20447                GameEvent::EyeballBossStunned(EyeballBossStunnedEvent::read(stream, definition)?)
20448            }
20449            GameEventType::EyeballBossKilled => {
20450                GameEvent::EyeballBossKilled(EyeballBossKilledEvent::read(stream, definition)?)
20451            }
20452            GameEventType::EyeballBossKiller => {
20453                GameEvent::EyeballBossKiller(EyeballBossKillerEvent::read(stream, definition)?)
20454            }
20455            GameEventType::EyeballBossEscapeImminent => GameEvent::EyeballBossEscapeImminent(
20456                EyeballBossEscapeImminentEvent::read(stream, definition)?,
20457            ),
20458            GameEventType::EyeballBossEscaped => {
20459                GameEvent::EyeballBossEscaped(EyeballBossEscapedEvent::read(stream, definition)?)
20460            }
20461            GameEventType::NpcHurt => GameEvent::NpcHurt(NpcHurtEvent::read(stream, definition)?),
20462            GameEventType::ControlPointTimerUpdated => GameEvent::ControlPointTimerUpdated(
20463                ControlPointTimerUpdatedEvent::read(stream, definition)?,
20464            ),
20465            GameEventType::PlayerHighFiveStart => {
20466                GameEvent::PlayerHighFiveStart(PlayerHighFiveStartEvent::read(stream, definition)?)
20467            }
20468            GameEventType::PlayerHighFiveCancel => GameEvent::PlayerHighFiveCancel(
20469                PlayerHighFiveCancelEvent::read(stream, definition)?,
20470            ),
20471            GameEventType::PlayerHighFiveSuccess => GameEvent::PlayerHighFiveSuccess(
20472                PlayerHighFiveSuccessEvent::read(stream, definition)?,
20473            ),
20474            GameEventType::PlayerBonusPoints => {
20475                GameEvent::PlayerBonusPoints(PlayerBonusPointsEvent::read(stream, definition)?)
20476            }
20477            GameEventType::PlayerUpgraded => {
20478                GameEvent::PlayerUpgraded(PlayerUpgradedEvent::read(stream, definition)?)
20479            }
20480            GameEventType::PlayerBuyback => {
20481                GameEvent::PlayerBuyback(PlayerBuybackEvent::read(stream, definition)?)
20482            }
20483            GameEventType::PlayerUsedPowerUpBottle => GameEvent::PlayerUsedPowerUpBottle(
20484                PlayerUsedPowerUpBottleEvent::read(stream, definition)?,
20485            ),
20486            GameEventType::ChristmasGiftGrab => {
20487                GameEvent::ChristmasGiftGrab(ChristmasGiftGrabEvent::read(stream, definition)?)
20488            }
20489            GameEventType::PlayerKilledAchievementZone => GameEvent::PlayerKilledAchievementZone(
20490                PlayerKilledAchievementZoneEvent::read(stream, definition)?,
20491            ),
20492            GameEventType::PartyUpdated => {
20493                GameEvent::PartyUpdated(PartyUpdatedEvent::read(stream, definition)?)
20494            }
20495            GameEventType::PartyPrefChanged => {
20496                GameEvent::PartyPrefChanged(PartyPrefChangedEvent::read(stream, definition)?)
20497            }
20498            GameEventType::PartyCriteriaChanged => GameEvent::PartyCriteriaChanged(
20499                PartyCriteriaChangedEvent::read(stream, definition)?,
20500            ),
20501            GameEventType::PartyInvitesChanged => {
20502                GameEvent::PartyInvitesChanged(PartyInvitesChangedEvent::read(stream, definition)?)
20503            }
20504            GameEventType::PartyQueueStateChanged => GameEvent::PartyQueueStateChanged(
20505                PartyQueueStateChangedEvent::read(stream, definition)?,
20506            ),
20507            GameEventType::PartyChat => {
20508                GameEvent::PartyChat(PartyChatEvent::read(stream, definition)?)
20509            }
20510            GameEventType::PartyMemberJoin => {
20511                GameEvent::PartyMemberJoin(PartyMemberJoinEvent::read(stream, definition)?)
20512            }
20513            GameEventType::PartyMemberLeave => {
20514                GameEvent::PartyMemberLeave(PartyMemberLeaveEvent::read(stream, definition)?)
20515            }
20516            GameEventType::MatchInvitesUpdated => {
20517                GameEvent::MatchInvitesUpdated(MatchInvitesUpdatedEvent::read(stream, definition)?)
20518            }
20519            GameEventType::LobbyUpdated => {
20520                GameEvent::LobbyUpdated(LobbyUpdatedEvent::read(stream, definition)?)
20521            }
20522            GameEventType::MvmMissionUpdate => {
20523                GameEvent::MvmMissionUpdate(MvmMissionUpdateEvent::read(stream, definition)?)
20524            }
20525            GameEventType::RecalculateHolidays => {
20526                GameEvent::RecalculateHolidays(RecalculateHolidaysEvent::read(stream, definition)?)
20527            }
20528            GameEventType::PlayerCurrencyChanged => GameEvent::PlayerCurrencyChanged(
20529                PlayerCurrencyChangedEvent::read(stream, definition)?,
20530            ),
20531            GameEventType::DoomsdayRocketOpen => {
20532                GameEvent::DoomsdayRocketOpen(DoomsdayRocketOpenEvent::read(stream, definition)?)
20533            }
20534            GameEventType::RemoveNemesisRelationships => GameEvent::RemoveNemesisRelationships(
20535                RemoveNemesisRelationshipsEvent::read(stream, definition)?,
20536            ),
20537            GameEventType::MvmCreditBonusWave => {
20538                GameEvent::MvmCreditBonusWave(MvmCreditBonusWaveEvent::read(stream, definition)?)
20539            }
20540            GameEventType::MvmCreditBonusAll => {
20541                GameEvent::MvmCreditBonusAll(MvmCreditBonusAllEvent::read(stream, definition)?)
20542            }
20543            GameEventType::MvmCreditBonusAllAdvanced => GameEvent::MvmCreditBonusAllAdvanced(
20544                MvmCreditBonusAllAdvancedEvent::read(stream, definition)?,
20545            ),
20546            GameEventType::MvmQuickSentryUpgrade => GameEvent::MvmQuickSentryUpgrade(
20547                MvmQuickSentryUpgradeEvent::read(stream, definition)?,
20548            ),
20549            GameEventType::MvmTankDestroyedByPlayers => GameEvent::MvmTankDestroyedByPlayers(
20550                MvmTankDestroyedByPlayersEvent::read(stream, definition)?,
20551            ),
20552            GameEventType::MvmKillRobotDeliveringBomb => GameEvent::MvmKillRobotDeliveringBomb(
20553                MvmKillRobotDeliveringBombEvent::read(stream, definition)?,
20554            ),
20555            GameEventType::MvmPickupCurrency => {
20556                GameEvent::MvmPickupCurrency(MvmPickupCurrencyEvent::read(stream, definition)?)
20557            }
20558            GameEventType::MvmBombCarrierKilled => GameEvent::MvmBombCarrierKilled(
20559                MvmBombCarrierKilledEvent::read(stream, definition)?,
20560            ),
20561            GameEventType::MvmSentryBusterDetonate => GameEvent::MvmSentryBusterDetonate(
20562                MvmSentryBusterDetonateEvent::read(stream, definition)?,
20563            ),
20564            GameEventType::MvmScoutMarkedForDeath => GameEvent::MvmScoutMarkedForDeath(
20565                MvmScoutMarkedForDeathEvent::read(stream, definition)?,
20566            ),
20567            GameEventType::MvmMedicPowerUpShared => GameEvent::MvmMedicPowerUpShared(
20568                MvmMedicPowerUpSharedEvent::read(stream, definition)?,
20569            ),
20570            GameEventType::MvmBeginWave => {
20571                GameEvent::MvmBeginWave(MvmBeginWaveEvent::read(stream, definition)?)
20572            }
20573            GameEventType::MvmWaveComplete => {
20574                GameEvent::MvmWaveComplete(MvmWaveCompleteEvent::read(stream, definition)?)
20575            }
20576            GameEventType::MvmMissionComplete => {
20577                GameEvent::MvmMissionComplete(MvmMissionCompleteEvent::read(stream, definition)?)
20578            }
20579            GameEventType::MvmBombResetByPlayer => GameEvent::MvmBombResetByPlayer(
20580                MvmBombResetByPlayerEvent::read(stream, definition)?,
20581            ),
20582            GameEventType::MvmBombAlarmTriggered => GameEvent::MvmBombAlarmTriggered(
20583                MvmBombAlarmTriggeredEvent::read(stream, definition)?,
20584            ),
20585            GameEventType::MvmBombDeployResetByPlayer => GameEvent::MvmBombDeployResetByPlayer(
20586                MvmBombDeployResetByPlayerEvent::read(stream, definition)?,
20587            ),
20588            GameEventType::MvmWaveFailed => {
20589                GameEvent::MvmWaveFailed(MvmWaveFailedEvent::read(stream, definition)?)
20590            }
20591            GameEventType::MvmResetStats => {
20592                GameEvent::MvmResetStats(MvmResetStatsEvent::read(stream, definition)?)
20593            }
20594            GameEventType::DamageResisted => {
20595                GameEvent::DamageResisted(DamageResistedEvent::read(stream, definition)?)
20596            }
20597            GameEventType::RevivePlayerNotify => {
20598                GameEvent::RevivePlayerNotify(RevivePlayerNotifyEvent::read(stream, definition)?)
20599            }
20600            GameEventType::RevivePlayerStopped => {
20601                GameEvent::RevivePlayerStopped(RevivePlayerStoppedEvent::read(stream, definition)?)
20602            }
20603            GameEventType::RevivePlayerComplete => GameEvent::RevivePlayerComplete(
20604                RevivePlayerCompleteEvent::read(stream, definition)?,
20605            ),
20606            GameEventType::PlayerTurnedToGhost => {
20607                GameEvent::PlayerTurnedToGhost(PlayerTurnedToGhostEvent::read(stream, definition)?)
20608            }
20609            GameEventType::MedigunShieldBlockedDamage => GameEvent::MedigunShieldBlockedDamage(
20610                MedigunShieldBlockedDamageEvent::read(stream, definition)?,
20611            ),
20612            GameEventType::MvmAdvWaveCompleteNoGates => GameEvent::MvmAdvWaveCompleteNoGates(
20613                MvmAdvWaveCompleteNoGatesEvent::read(stream, definition)?,
20614            ),
20615            GameEventType::MvmSniperHeadshotCurrency => GameEvent::MvmSniperHeadshotCurrency(
20616                MvmSniperHeadshotCurrencyEvent::read(stream, definition)?,
20617            ),
20618            GameEventType::MvmMannhattanPit => {
20619                GameEvent::MvmMannhattanPit(MvmMannhattanPitEvent::read(stream, definition)?)
20620            }
20621            GameEventType::FlagCarriedInDetectionZone => GameEvent::FlagCarriedInDetectionZone(
20622                FlagCarriedInDetectionZoneEvent::read(stream, definition)?,
20623            ),
20624            GameEventType::MvmAdvWaveKilledStunRadio => GameEvent::MvmAdvWaveKilledStunRadio(
20625                MvmAdvWaveKilledStunRadioEvent::read(stream, definition)?,
20626            ),
20627            GameEventType::PlayerDirectHitStun => {
20628                GameEvent::PlayerDirectHitStun(PlayerDirectHitStunEvent::read(stream, definition)?)
20629            }
20630            GameEventType::MvmSentryBusterKilled => GameEvent::MvmSentryBusterKilled(
20631                MvmSentryBusterKilledEvent::read(stream, definition)?,
20632            ),
20633            GameEventType::UpgradesFileChanged => {
20634                GameEvent::UpgradesFileChanged(UpgradesFileChangedEvent::read(stream, definition)?)
20635            }
20636            GameEventType::RdTeamPointsChanged => {
20637                GameEvent::RdTeamPointsChanged(RdTeamPointsChangedEvent::read(stream, definition)?)
20638            }
20639            GameEventType::RdRulesStateChanged => {
20640                GameEvent::RdRulesStateChanged(RdRulesStateChangedEvent::read(stream, definition)?)
20641            }
20642            GameEventType::RdRobotKilled => {
20643                GameEvent::RdRobotKilled(RdRobotKilledEvent::read(stream, definition)?)
20644            }
20645            GameEventType::RdRobotImpact => {
20646                GameEvent::RdRobotImpact(RdRobotImpactEvent::read(stream, definition)?)
20647            }
20648            GameEventType::TeamPlayPreRoundTimeLeft => GameEvent::TeamPlayPreRoundTimeLeft(
20649                TeamPlayPreRoundTimeLeftEvent::read(stream, definition)?,
20650            ),
20651            GameEventType::ParachuteDeploy => {
20652                GameEvent::ParachuteDeploy(ParachuteDeployEvent::read(stream, definition)?)
20653            }
20654            GameEventType::ParachuteHolster => {
20655                GameEvent::ParachuteHolster(ParachuteHolsterEvent::read(stream, definition)?)
20656            }
20657            GameEventType::KillRefillsMeter => {
20658                GameEvent::KillRefillsMeter(KillRefillsMeterEvent::read(stream, definition)?)
20659            }
20660            GameEventType::RpsTauntEvent => {
20661                GameEvent::RpsTauntEvent(RpsTauntEventEvent::read(stream, definition)?)
20662            }
20663            GameEventType::CongaKill => {
20664                GameEvent::CongaKill(CongaKillEvent::read(stream, definition)?)
20665            }
20666            GameEventType::PlayerInitialSpawn => {
20667                GameEvent::PlayerInitialSpawn(PlayerInitialSpawnEvent::read(stream, definition)?)
20668            }
20669            GameEventType::CompetitiveVictory => {
20670                GameEvent::CompetitiveVictory(CompetitiveVictoryEvent::read(stream, definition)?)
20671            }
20672            GameEventType::CompetitiveStatsUpdate => GameEvent::CompetitiveStatsUpdate(
20673                CompetitiveStatsUpdateEvent::read(stream, definition)?,
20674            ),
20675            GameEventType::MiniGameWin => {
20676                GameEvent::MiniGameWin(MiniGameWinEvent::read(stream, definition)?)
20677            }
20678            GameEventType::SentryOnGoActive => {
20679                GameEvent::SentryOnGoActive(SentryOnGoActiveEvent::read(stream, definition)?)
20680            }
20681            GameEventType::DuckXpLevelUp => {
20682                GameEvent::DuckXpLevelUp(DuckXpLevelUpEvent::read(stream, definition)?)
20683            }
20684            GameEventType::QuestLogOpened => {
20685                GameEvent::QuestLogOpened(QuestLogOpenedEvent::read(stream, definition)?)
20686            }
20687            GameEventType::SchemaUpdated => {
20688                GameEvent::SchemaUpdated(SchemaUpdatedEvent::read(stream, definition)?)
20689            }
20690            GameEventType::LocalPlayerPickupWeapon => GameEvent::LocalPlayerPickupWeapon(
20691                LocalPlayerPickupWeaponEvent::read(stream, definition)?,
20692            ),
20693            GameEventType::RdPlayerScorePoints => {
20694                GameEvent::RdPlayerScorePoints(RdPlayerScorePointsEvent::read(stream, definition)?)
20695            }
20696            GameEventType::DemomanDetStickies => {
20697                GameEvent::DemomanDetStickies(DemomanDetStickiesEvent::read(stream, definition)?)
20698            }
20699            GameEventType::QuestObjectiveCompleted => GameEvent::QuestObjectiveCompleted(
20700                QuestObjectiveCompletedEvent::read(stream, definition)?,
20701            ),
20702            GameEventType::PlayerScoreChanged => {
20703                GameEvent::PlayerScoreChanged(PlayerScoreChangedEvent::read(stream, definition)?)
20704            }
20705            GameEventType::KilledCappingPlayer => {
20706                GameEvent::KilledCappingPlayer(KilledCappingPlayerEvent::read(stream, definition)?)
20707            }
20708            GameEventType::EnvironmentalDeath => {
20709                GameEvent::EnvironmentalDeath(EnvironmentalDeathEvent::read(stream, definition)?)
20710            }
20711            GameEventType::ProjectileDirectHit => {
20712                GameEvent::ProjectileDirectHit(ProjectileDirectHitEvent::read(stream, definition)?)
20713            }
20714            GameEventType::PassGet => GameEvent::PassGet(PassGetEvent::read(stream, definition)?),
20715            GameEventType::PassScore => {
20716                GameEvent::PassScore(PassScoreEvent::read(stream, definition)?)
20717            }
20718            GameEventType::PassFree => {
20719                GameEvent::PassFree(PassFreeEvent::read(stream, definition)?)
20720            }
20721            GameEventType::PassPassCaught => {
20722                GameEvent::PassPassCaught(PassPassCaughtEvent::read(stream, definition)?)
20723            }
20724            GameEventType::PassBallStolen => {
20725                GameEvent::PassBallStolen(PassBallStolenEvent::read(stream, definition)?)
20726            }
20727            GameEventType::PassBallBlocked => {
20728                GameEvent::PassBallBlocked(PassBallBlockedEvent::read(stream, definition)?)
20729            }
20730            GameEventType::DamagePrevented => {
20731                GameEvent::DamagePrevented(DamagePreventedEvent::read(stream, definition)?)
20732            }
20733            GameEventType::HalloweenBossKilled => {
20734                GameEvent::HalloweenBossKilled(HalloweenBossKilledEvent::read(stream, definition)?)
20735            }
20736            GameEventType::EscapedLootIsland => {
20737                GameEvent::EscapedLootIsland(EscapedLootIslandEvent::read(stream, definition)?)
20738            }
20739            GameEventType::TaggedPlayerAsIt => {
20740                GameEvent::TaggedPlayerAsIt(TaggedPlayerAsItEvent::read(stream, definition)?)
20741            }
20742            GameEventType::MerasmusStunned => {
20743                GameEvent::MerasmusStunned(MerasmusStunnedEvent::read(stream, definition)?)
20744            }
20745            GameEventType::MerasmusPropFound => {
20746                GameEvent::MerasmusPropFound(MerasmusPropFoundEvent::read(stream, definition)?)
20747            }
20748            GameEventType::HalloweenSkeletonKilled => GameEvent::HalloweenSkeletonKilled(
20749                HalloweenSkeletonKilledEvent::read(stream, definition)?,
20750            ),
20751            GameEventType::SkeletonKilledQuest => {
20752                GameEvent::SkeletonKilledQuest(SkeletonKilledQuestEvent::read(stream, definition)?)
20753            }
20754            GameEventType::SkeletonKingKilledQuest => GameEvent::SkeletonKingKilledQuest(
20755                SkeletonKingKilledQuestEvent::read(stream, definition)?,
20756            ),
20757            GameEventType::EscapeHell => {
20758                GameEvent::EscapeHell(EscapeHellEvent::read(stream, definition)?)
20759            }
20760            GameEventType::CrossSpectralBridge => {
20761                GameEvent::CrossSpectralBridge(CrossSpectralBridgeEvent::read(stream, definition)?)
20762            }
20763            GameEventType::MiniGameWon => {
20764                GameEvent::MiniGameWon(MiniGameWonEvent::read(stream, definition)?)
20765            }
20766            GameEventType::RespawnGhost => {
20767                GameEvent::RespawnGhost(RespawnGhostEvent::read(stream, definition)?)
20768            }
20769            GameEventType::KillInHell => {
20770                GameEvent::KillInHell(KillInHellEvent::read(stream, definition)?)
20771            }
20772            GameEventType::HalloweenDuckCollected => GameEvent::HalloweenDuckCollected(
20773                HalloweenDuckCollectedEvent::read(stream, definition)?,
20774            ),
20775            GameEventType::SpecialScore => {
20776                GameEvent::SpecialScore(SpecialScoreEvent::read(stream, definition)?)
20777            }
20778            GameEventType::TeamLeaderKilled => {
20779                GameEvent::TeamLeaderKilled(TeamLeaderKilledEvent::read(stream, definition)?)
20780            }
20781            GameEventType::HalloweenSoulCollected => GameEvent::HalloweenSoulCollected(
20782                HalloweenSoulCollectedEvent::read(stream, definition)?,
20783            ),
20784            GameEventType::RecalculateTruce => {
20785                GameEvent::RecalculateTruce(RecalculateTruceEvent::read(stream, definition)?)
20786            }
20787            GameEventType::DeadRingerCheatDeath => GameEvent::DeadRingerCheatDeath(
20788                DeadRingerCheatDeathEvent::read(stream, definition)?,
20789            ),
20790            GameEventType::CrossbowHeal => {
20791                GameEvent::CrossbowHeal(CrossbowHealEvent::read(stream, definition)?)
20792            }
20793            GameEventType::DamageMitigated => {
20794                GameEvent::DamageMitigated(DamageMitigatedEvent::read(stream, definition)?)
20795            }
20796            GameEventType::PayloadPushed => {
20797                GameEvent::PayloadPushed(PayloadPushedEvent::read(stream, definition)?)
20798            }
20799            GameEventType::PlayerAbandonedMatch => GameEvent::PlayerAbandonedMatch(
20800                PlayerAbandonedMatchEvent::read(stream, definition)?,
20801            ),
20802            GameEventType::ClDrawline => {
20803                GameEvent::ClDrawline(ClDrawlineEvent::read(stream, definition)?)
20804            }
20805            GameEventType::RestartTimerTime => {
20806                GameEvent::RestartTimerTime(RestartTimerTimeEvent::read(stream, definition)?)
20807            }
20808            GameEventType::WinLimitChanged => {
20809                GameEvent::WinLimitChanged(WinLimitChangedEvent::read(stream, definition)?)
20810            }
20811            GameEventType::WinPanelShowScores => {
20812                GameEvent::WinPanelShowScores(WinPanelShowScoresEvent::read(stream, definition)?)
20813            }
20814            GameEventType::TopStreamsRequestFinished => GameEvent::TopStreamsRequestFinished(
20815                TopStreamsRequestFinishedEvent::read(stream, definition)?,
20816            ),
20817            GameEventType::CompetitiveStateChanged => GameEvent::CompetitiveStateChanged(
20818                CompetitiveStateChangedEvent::read(stream, definition)?,
20819            ),
20820            GameEventType::GlobalWarDataUpdated => GameEvent::GlobalWarDataUpdated(
20821                GlobalWarDataUpdatedEvent::read(stream, definition)?,
20822            ),
20823            GameEventType::StopWatchChanged => {
20824                GameEvent::StopWatchChanged(StopWatchChangedEvent::read(stream, definition)?)
20825            }
20826            GameEventType::DsStop => GameEvent::DsStop(DsStopEvent::read(stream, definition)?),
20827            GameEventType::DsScreenshot => {
20828                GameEvent::DsScreenshot(DsScreenshotEvent::read(stream, definition)?)
20829            }
20830            GameEventType::ShowMatchSummary => {
20831                GameEvent::ShowMatchSummary(ShowMatchSummaryEvent::read(stream, definition)?)
20832            }
20833            GameEventType::ExperienceChanged => {
20834                GameEvent::ExperienceChanged(ExperienceChangedEvent::read(stream, definition)?)
20835            }
20836            GameEventType::BeginXpLerp => {
20837                GameEvent::BeginXpLerp(BeginXpLerpEvent::read(stream, definition)?)
20838            }
20839            GameEventType::MatchmakerStatsUpdated => GameEvent::MatchmakerStatsUpdated(
20840                MatchmakerStatsUpdatedEvent::read(stream, definition)?,
20841            ),
20842            GameEventType::RematchVotePeriodOver => GameEvent::RematchVotePeriodOver(
20843                RematchVotePeriodOverEvent::read(stream, definition)?,
20844            ),
20845            GameEventType::RematchFailedToCreate => GameEvent::RematchFailedToCreate(
20846                RematchFailedToCreateEvent::read(stream, definition)?,
20847            ),
20848            GameEventType::PlayerRematchChange => {
20849                GameEvent::PlayerRematchChange(PlayerRematchChangeEvent::read(stream, definition)?)
20850            }
20851            GameEventType::PingUpdated => {
20852                GameEvent::PingUpdated(PingUpdatedEvent::read(stream, definition)?)
20853            }
20854            GameEventType::MMStatsUpdated => {
20855                GameEvent::MMStatsUpdated(MMStatsUpdatedEvent::read(stream, definition)?)
20856            }
20857            GameEventType::PlayerNextMapVoteChange => GameEvent::PlayerNextMapVoteChange(
20858                PlayerNextMapVoteChangeEvent::read(stream, definition)?,
20859            ),
20860            GameEventType::VoteMapsChanged => {
20861                GameEvent::VoteMapsChanged(VoteMapsChangedEvent::read(stream, definition)?)
20862            }
20863            GameEventType::ProtoDefChanged => {
20864                GameEvent::ProtoDefChanged(ProtoDefChangedEvent::read(stream, definition)?)
20865            }
20866            GameEventType::PlayerDomination => {
20867                GameEvent::PlayerDomination(PlayerDominationEvent::read(stream, definition)?)
20868            }
20869            GameEventType::PlayerRocketPackPushed => GameEvent::PlayerRocketPackPushed(
20870                PlayerRocketPackPushedEvent::read(stream, definition)?,
20871            ),
20872            GameEventType::QuestRequest => {
20873                GameEvent::QuestRequest(QuestRequestEvent::read(stream, definition)?)
20874            }
20875            GameEventType::QuestResponse => {
20876                GameEvent::QuestResponse(QuestResponseEvent::read(stream, definition)?)
20877            }
20878            GameEventType::QuestProgress => {
20879                GameEvent::QuestProgress(QuestProgressEvent::read(stream, definition)?)
20880            }
20881            GameEventType::ProjectileRemoved => {
20882                GameEvent::ProjectileRemoved(ProjectileRemovedEvent::read(stream, definition)?)
20883            }
20884            GameEventType::QuestMapDataChanged => {
20885                GameEvent::QuestMapDataChanged(QuestMapDataChangedEvent::read(stream, definition)?)
20886            }
20887            GameEventType::GasDousedPlayerIgnited => GameEvent::GasDousedPlayerIgnited(
20888                GasDousedPlayerIgnitedEvent::read(stream, definition)?,
20889            ),
20890            GameEventType::QuestTurnInState => {
20891                GameEvent::QuestTurnInState(QuestTurnInStateEvent::read(stream, definition)?)
20892            }
20893            GameEventType::ItemsAcknowledged => {
20894                GameEvent::ItemsAcknowledged(ItemsAcknowledgedEvent::read(stream, definition)?)
20895            }
20896            GameEventType::CapperKilled => {
20897                GameEvent::CapperKilled(CapperKilledEvent::read(stream, definition)?)
20898            }
20899            GameEventType::MainMenuStabilized => {
20900                GameEvent::MainMenuStabilized(MainMenuStabilizedEvent::read(stream, definition)?)
20901            }
20902            GameEventType::WorldStatusChanged => {
20903                GameEvent::WorldStatusChanged(WorldStatusChangedEvent::read(stream, definition)?)
20904            }
20905            GameEventType::HLTVStatus => {
20906                GameEvent::HLTVStatus(HLTVStatusEvent::read(stream, definition)?)
20907            }
20908            GameEventType::HLTVCameraman => {
20909                GameEvent::HLTVCameraman(HLTVCameramanEvent::read(stream, definition)?)
20910            }
20911            GameEventType::HLTVRankCamera => {
20912                GameEvent::HLTVRankCamera(HLTVRankCameraEvent::read(stream, definition)?)
20913            }
20914            GameEventType::HLTVRankEntity => {
20915                GameEvent::HLTVRankEntity(HLTVRankEntityEvent::read(stream, definition)?)
20916            }
20917            GameEventType::HLTVFixed => {
20918                GameEvent::HLTVFixed(HLTVFixedEvent::read(stream, definition)?)
20919            }
20920            GameEventType::HLTVChase => {
20921                GameEvent::HLTVChase(HLTVChaseEvent::read(stream, definition)?)
20922            }
20923            GameEventType::HLTVMessage => {
20924                GameEvent::HLTVMessage(HLTVMessageEvent::read(stream, definition)?)
20925            }
20926            GameEventType::HLTVTitle => {
20927                GameEvent::HLTVTitle(HLTVTitleEvent::read(stream, definition)?)
20928            }
20929            GameEventType::HLTVChat => {
20930                GameEvent::HLTVChat(HLTVChatEvent::read(stream, definition)?)
20931            }
20932            GameEventType::ReplayStartRecord => {
20933                GameEvent::ReplayStartRecord(ReplayStartRecordEvent::read(stream, definition)?)
20934            }
20935            GameEventType::ReplaySessionInfo => {
20936                GameEvent::ReplaySessionInfo(ReplaySessionInfoEvent::read(stream, definition)?)
20937            }
20938            GameEventType::ReplayEndRecord => {
20939                GameEvent::ReplayEndRecord(ReplayEndRecordEvent::read(stream, definition)?)
20940            }
20941            GameEventType::ReplayReplaysAvailable => GameEvent::ReplayReplaysAvailable(
20942                ReplayReplaysAvailableEvent::read(stream, definition)?,
20943            ),
20944            GameEventType::ReplayServerError => {
20945                GameEvent::ReplayServerError(ReplayServerErrorEvent::read(stream, definition)?)
20946            }
20947            GameEventType::Unknown(_) => {
20948                GameEvent::Unknown(RawGameEvent::read(stream, definition)?)
20949            }
20950        })
20951    }
20952    pub fn write(
20953        &self,
20954        stream: &mut BitWriteStream<LittleEndian>,
20955        definition: &GameEventDefinition,
20956    ) -> Result<()> {
20957        match &self {
20958            GameEvent::ServerSpawn(event) => event.write(stream, definition),
20959            GameEvent::ServerChangeLevelFailed(event) => event.write(stream, definition),
20960            GameEvent::ServerShutdown(event) => event.write(stream, definition),
20961            GameEvent::ServerCvar(event) => event.write(stream, definition),
20962            GameEvent::ServerMessage(event) => event.write(stream, definition),
20963            GameEvent::ServerAddBan(event) => event.write(stream, definition),
20964            GameEvent::ServerRemoveBan(event) => event.write(stream, definition),
20965            GameEvent::PlayerConnect(event) => event.write(stream, definition),
20966            GameEvent::PlayerConnectClient(event) => event.write(stream, definition),
20967            GameEvent::PlayerInfo(event) => event.write(stream, definition),
20968            GameEvent::PlayerDisconnect(event) => event.write(stream, definition),
20969            GameEvent::PlayerActivate(event) => event.write(stream, definition),
20970            GameEvent::PlayerSay(event) => event.write(stream, definition),
20971            GameEvent::ClientDisconnect(event) => event.write(stream, definition),
20972            GameEvent::ClientBeginConnect(event) => event.write(stream, definition),
20973            GameEvent::ClientConnected(event) => event.write(stream, definition),
20974            GameEvent::ClientFullConnect(event) => event.write(stream, definition),
20975            GameEvent::HostQuit(event) => event.write(stream, definition),
20976            GameEvent::TeamInfo(event) => event.write(stream, definition),
20977            GameEvent::TeamScore(event) => event.write(stream, definition),
20978            GameEvent::TeamPlayBroadcastAudio(event) => event.write(stream, definition),
20979            GameEvent::PlayerTeam(event) => event.write(stream, definition),
20980            GameEvent::PlayerClass(event) => event.write(stream, definition),
20981            GameEvent::PlayerDeath(event) => event.write(stream, definition),
20982            GameEvent::PlayerHurt(event) => event.write(stream, definition),
20983            GameEvent::PlayerChat(event) => event.write(stream, definition),
20984            GameEvent::PlayerScore(event) => event.write(stream, definition),
20985            GameEvent::PlayerSpawn(event) => event.write(stream, definition),
20986            GameEvent::PlayerShoot(event) => event.write(stream, definition),
20987            GameEvent::PlayerUse(event) => event.write(stream, definition),
20988            GameEvent::PlayerChangeName(event) => event.write(stream, definition),
20989            GameEvent::PlayerHintMessage(event) => event.write(stream, definition),
20990            GameEvent::BasePlayerTeleported(event) => event.write(stream, definition),
20991            GameEvent::GameInit(event) => event.write(stream, definition),
20992            GameEvent::GameNewMap(event) => event.write(stream, definition),
20993            GameEvent::GameStart(event) => event.write(stream, definition),
20994            GameEvent::GameEnd(event) => event.write(stream, definition),
20995            GameEvent::RoundStart(event) => event.write(stream, definition),
20996            GameEvent::RoundEnd(event) => event.write(stream, definition),
20997            GameEvent::GameMessage(event) => event.write(stream, definition),
20998            GameEvent::BreakBreakable(event) => event.write(stream, definition),
20999            GameEvent::BreakProp(event) => event.write(stream, definition),
21000            GameEvent::EntityKilled(event) => event.write(stream, definition),
21001            GameEvent::BonusUpdated(event) => event.write(stream, definition),
21002            GameEvent::AchievementEvent(event) => event.write(stream, definition),
21003            GameEvent::AchievementIncrement(event) => event.write(stream, definition),
21004            GameEvent::PhysgunPickup(event) => event.write(stream, definition),
21005            GameEvent::FlareIgniteNpc(event) => event.write(stream, definition),
21006            GameEvent::HelicopterGrenadePuntMiss(event) => event.write(stream, definition),
21007            GameEvent::UserDataDownloaded(event) => event.write(stream, definition),
21008            GameEvent::RagdollDissolved(event) => event.write(stream, definition),
21009            GameEvent::HLTVChangedMode(event) => event.write(stream, definition),
21010            GameEvent::HLTVChangedTarget(event) => event.write(stream, definition),
21011            GameEvent::VoteEnded(event) => event.write(stream, definition),
21012            GameEvent::VoteStarted(event) => event.write(stream, definition),
21013            GameEvent::VoteChanged(event) => event.write(stream, definition),
21014            GameEvent::VotePassed(event) => event.write(stream, definition),
21015            GameEvent::VoteFailed(event) => event.write(stream, definition),
21016            GameEvent::VoteCast(event) => event.write(stream, definition),
21017            GameEvent::VoteOptions(event) => event.write(stream, definition),
21018            GameEvent::ReplaySaved(event) => event.write(stream, definition),
21019            GameEvent::EnteredPerformanceMode(event) => event.write(stream, definition),
21020            GameEvent::BrowseReplays(event) => event.write(stream, definition),
21021            GameEvent::ReplayYoutubeStats(event) => event.write(stream, definition),
21022            GameEvent::InventoryUpdated(event) => event.write(stream, definition),
21023            GameEvent::CartUpdated(event) => event.write(stream, definition),
21024            GameEvent::StorePriceSheetUpdated(event) => event.write(stream, definition),
21025            GameEvent::EconInventoryConnected(event) => event.write(stream, definition),
21026            GameEvent::ItemSchemaInitialized(event) => event.write(stream, definition),
21027            GameEvent::GcNewSession(event) => event.write(stream, definition),
21028            GameEvent::GcLostSession(event) => event.write(stream, definition),
21029            GameEvent::IntroFinish(event) => event.write(stream, definition),
21030            GameEvent::IntroNextCamera(event) => event.write(stream, definition),
21031            GameEvent::PlayerChangeClass(event) => event.write(stream, definition),
21032            GameEvent::TfMapTimeRemaining(event) => event.write(stream, definition),
21033            GameEvent::TfGameOver(event) => event.write(stream, definition),
21034            GameEvent::CtfFlagCaptured(event) => event.write(stream, definition),
21035            GameEvent::ControlPointInitialized(event) => event.write(stream, definition),
21036            GameEvent::ControlPointUpdateImages(event) => event.write(stream, definition),
21037            GameEvent::ControlPointUpdateLayout(event) => event.write(stream, definition),
21038            GameEvent::ControlPointUpdateCapping(event) => event.write(stream, definition),
21039            GameEvent::ControlPointUpdateOwner(event) => event.write(stream, definition),
21040            GameEvent::ControlPointStartTouch(event) => event.write(stream, definition),
21041            GameEvent::ControlPointEndTouch(event) => event.write(stream, definition),
21042            GameEvent::ControlPointPulseElement(event) => event.write(stream, definition),
21043            GameEvent::ControlPointFakeCapture(event) => event.write(stream, definition),
21044            GameEvent::ControlPointFakeCaptureMultiplier(event) => event.write(stream, definition),
21045            GameEvent::TeamPlayRoundSelected(event) => event.write(stream, definition),
21046            GameEvent::TeamPlayRoundStart(event) => event.write(stream, definition),
21047            GameEvent::TeamPlayRoundActive(event) => event.write(stream, definition),
21048            GameEvent::TeamPlayWaitingBegins(event) => event.write(stream, definition),
21049            GameEvent::TeamPlayWaitingEnds(event) => event.write(stream, definition),
21050            GameEvent::TeamPlayWaitingAboutToEnd(event) => event.write(stream, definition),
21051            GameEvent::TeamPlayRestartRound(event) => event.write(stream, definition),
21052            GameEvent::TeamPlayReadyRestart(event) => event.write(stream, definition),
21053            GameEvent::TeamPlayRoundRestartSeconds(event) => event.write(stream, definition),
21054            GameEvent::TeamPlayTeamReady(event) => event.write(stream, definition),
21055            GameEvent::TeamPlayRoundWin(event) => event.write(stream, definition),
21056            GameEvent::TeamPlayUpdateTimer(event) => event.write(stream, definition),
21057            GameEvent::TeamPlayRoundStalemate(event) => event.write(stream, definition),
21058            GameEvent::TeamPlayOvertimeBegin(event) => event.write(stream, definition),
21059            GameEvent::TeamPlayOvertimeEnd(event) => event.write(stream, definition),
21060            GameEvent::TeamPlaySuddenDeathBegin(event) => event.write(stream, definition),
21061            GameEvent::TeamPlaySuddenDeathEnd(event) => event.write(stream, definition),
21062            GameEvent::TeamPlayGameOver(event) => event.write(stream, definition),
21063            GameEvent::TeamPlayMapTimeRemaining(event) => event.write(stream, definition),
21064            GameEvent::TeamPlayTimerFlash(event) => event.write(stream, definition),
21065            GameEvent::TeamPlayTimerTimeAdded(event) => event.write(stream, definition),
21066            GameEvent::TeamPlayPointStartCapture(event) => event.write(stream, definition),
21067            GameEvent::TeamPlayPointCaptured(event) => event.write(stream, definition),
21068            GameEvent::TeamPlayPointLocked(event) => event.write(stream, definition),
21069            GameEvent::TeamPlayPointUnlocked(event) => event.write(stream, definition),
21070            GameEvent::TeamPlayCaptureBroken(event) => event.write(stream, definition),
21071            GameEvent::TeamPlayCaptureBlocked(event) => event.write(stream, definition),
21072            GameEvent::TeamPlayFlagEvent(event) => event.write(stream, definition),
21073            GameEvent::TeamPlayWinPanel(event) => event.write(stream, definition),
21074            GameEvent::TeamPlayTeamBalancedPlayer(event) => event.write(stream, definition),
21075            GameEvent::TeamPlaySetupFinished(event) => event.write(stream, definition),
21076            GameEvent::TeamPlayAlert(event) => event.write(stream, definition),
21077            GameEvent::TrainingComplete(event) => event.write(stream, definition),
21078            GameEvent::ShowFreezePanel(event) => event.write(stream, definition),
21079            GameEvent::HideFreezePanel(event) => event.write(stream, definition),
21080            GameEvent::FreezeCamStarted(event) => event.write(stream, definition),
21081            GameEvent::LocalPlayerChangeTeam(event) => event.write(stream, definition),
21082            GameEvent::LocalPlayerScoreChanged(event) => event.write(stream, definition),
21083            GameEvent::LocalPlayerChangeClass(event) => event.write(stream, definition),
21084            GameEvent::LocalPlayerRespawn(event) => event.write(stream, definition),
21085            GameEvent::BuildingInfoChanged(event) => event.write(stream, definition),
21086            GameEvent::LocalPlayerChangeDisguise(event) => event.write(stream, definition),
21087            GameEvent::PlayerAccountChanged(event) => event.write(stream, definition),
21088            GameEvent::SpyPdaReset(event) => event.write(stream, definition),
21089            GameEvent::FlagStatusUpdate(event) => event.write(stream, definition),
21090            GameEvent::PlayerStatsUpdated(event) => event.write(stream, definition),
21091            GameEvent::PlayingCommentary(event) => event.write(stream, definition),
21092            GameEvent::PlayerChargeDeployed(event) => event.write(stream, definition),
21093            GameEvent::PlayerBuiltObject(event) => event.write(stream, definition),
21094            GameEvent::PlayerUpgradedObject(event) => event.write(stream, definition),
21095            GameEvent::PlayerCarryObject(event) => event.write(stream, definition),
21096            GameEvent::PlayerDropObject(event) => event.write(stream, definition),
21097            GameEvent::ObjectRemoved(event) => event.write(stream, definition),
21098            GameEvent::ObjectDestroyed(event) => event.write(stream, definition),
21099            GameEvent::ObjectDetonated(event) => event.write(stream, definition),
21100            GameEvent::AchievementEarned(event) => event.write(stream, definition),
21101            GameEvent::SpecTargetUpdated(event) => event.write(stream, definition),
21102            GameEvent::TournamentStateUpdate(event) => event.write(stream, definition),
21103            GameEvent::TournamentEnableCountdown(event) => event.write(stream, definition),
21104            GameEvent::PlayerCalledForMedic(event) => event.write(stream, definition),
21105            GameEvent::PlayerAskedForBall(event) => event.write(stream, definition),
21106            GameEvent::LocalPlayerBecameObserver(event) => event.write(stream, definition),
21107            GameEvent::PlayerIgnitedInv(event) => event.write(stream, definition),
21108            GameEvent::PlayerIgnited(event) => event.write(stream, definition),
21109            GameEvent::PlayerExtinguished(event) => event.write(stream, definition),
21110            GameEvent::PlayerTeleported(event) => event.write(stream, definition),
21111            GameEvent::PlayerHealedMedicCall(event) => event.write(stream, definition),
21112            GameEvent::LocalPlayerChargeReady(event) => event.write(stream, definition),
21113            GameEvent::LocalPlayerWindDown(event) => event.write(stream, definition),
21114            GameEvent::PlayerInvulned(event) => event.write(stream, definition),
21115            GameEvent::EscortSpeed(event) => event.write(stream, definition),
21116            GameEvent::EscortProgress(event) => event.write(stream, definition),
21117            GameEvent::EscortRecede(event) => event.write(stream, definition),
21118            GameEvent::GameUIActivated(event) => event.write(stream, definition),
21119            GameEvent::GameUIHidden(event) => event.write(stream, definition),
21120            GameEvent::PlayerEscortScore(event) => event.write(stream, definition),
21121            GameEvent::PlayerHealOnHit(event) => event.write(stream, definition),
21122            GameEvent::PlayerStealSandvich(event) => event.write(stream, definition),
21123            GameEvent::ShowClassLayout(event) => event.write(stream, definition),
21124            GameEvent::ShowVsPanel(event) => event.write(stream, definition),
21125            GameEvent::PlayerDamaged(event) => event.write(stream, definition),
21126            GameEvent::ArenaPlayerNotification(event) => event.write(stream, definition),
21127            GameEvent::ArenaMatchMaxStreak(event) => event.write(stream, definition),
21128            GameEvent::ArenaRoundStart(event) => event.write(stream, definition),
21129            GameEvent::ArenaWinPanel(event) => event.write(stream, definition),
21130            GameEvent::PveWinPanel(event) => event.write(stream, definition),
21131            GameEvent::AirDash(event) => event.write(stream, definition),
21132            GameEvent::Landed(event) => event.write(stream, definition),
21133            GameEvent::PlayerDamageDodged(event) => event.write(stream, definition),
21134            GameEvent::PlayerStunned(event) => event.write(stream, definition),
21135            GameEvent::ScoutGrandSlam(event) => event.write(stream, definition),
21136            GameEvent::ScoutSlamdollLanded(event) => event.write(stream, definition),
21137            GameEvent::ArrowImpact(event) => event.write(stream, definition),
21138            GameEvent::PlayerJarated(event) => event.write(stream, definition),
21139            GameEvent::PlayerJaratedFade(event) => event.write(stream, definition),
21140            GameEvent::PlayerShieldBlocked(event) => event.write(stream, definition),
21141            GameEvent::PlayerPinned(event) => event.write(stream, definition),
21142            GameEvent::PlayerHealedByMedic(event) => event.write(stream, definition),
21143            GameEvent::PlayerSappedObject(event) => event.write(stream, definition),
21144            GameEvent::ItemFound(event) => event.write(stream, definition),
21145            GameEvent::ShowAnnotation(event) => event.write(stream, definition),
21146            GameEvent::HideAnnotation(event) => event.write(stream, definition),
21147            GameEvent::PostInventoryApplication(event) => event.write(stream, definition),
21148            GameEvent::ControlPointUnlockUpdated(event) => event.write(stream, definition),
21149            GameEvent::DeployBuffBanner(event) => event.write(stream, definition),
21150            GameEvent::PlayerBuff(event) => event.write(stream, definition),
21151            GameEvent::MedicDeath(event) => event.write(stream, definition),
21152            GameEvent::OvertimeNag(event) => event.write(stream, definition),
21153            GameEvent::TeamsChanged(event) => event.write(stream, definition),
21154            GameEvent::HalloweenPumpkinGrab(event) => event.write(stream, definition),
21155            GameEvent::RocketJump(event) => event.write(stream, definition),
21156            GameEvent::RocketJumpLanded(event) => event.write(stream, definition),
21157            GameEvent::StickyJump(event) => event.write(stream, definition),
21158            GameEvent::StickyJumpLanded(event) => event.write(stream, definition),
21159            GameEvent::RocketPackLaunch(event) => event.write(stream, definition),
21160            GameEvent::RocketPackLanded(event) => event.write(stream, definition),
21161            GameEvent::MedicDefended(event) => event.write(stream, definition),
21162            GameEvent::LocalPlayerHealed(event) => event.write(stream, definition),
21163            GameEvent::PlayerDestroyedPipeBomb(event) => event.write(stream, definition),
21164            GameEvent::ObjectDeflected(event) => event.write(stream, definition),
21165            GameEvent::PlayerMvp(event) => event.write(stream, definition),
21166            GameEvent::RaidSpawnMob(event) => event.write(stream, definition),
21167            GameEvent::RaidSpawnSquad(event) => event.write(stream, definition),
21168            GameEvent::NavBlocked(event) => event.write(stream, definition),
21169            GameEvent::PathTrackPassed(event) => event.write(stream, definition),
21170            GameEvent::NumCappersChanged(event) => event.write(stream, definition),
21171            GameEvent::PlayerRegenerate(event) => event.write(stream, definition),
21172            GameEvent::UpdateStatusItem(event) => event.write(stream, definition),
21173            GameEvent::StatsResetRound(event) => event.write(stream, definition),
21174            GameEvent::ScoreStatsAccumulatedUpdate(event) => event.write(stream, definition),
21175            GameEvent::ScoreStatsAccumulatedReset(event) => event.write(stream, definition),
21176            GameEvent::AchievementEarnedLocal(event) => event.write(stream, definition),
21177            GameEvent::PlayerHealed(event) => event.write(stream, definition),
21178            GameEvent::BuildingHealed(event) => event.write(stream, definition),
21179            GameEvent::ItemPickup(event) => event.write(stream, definition),
21180            GameEvent::DuelStatus(event) => event.write(stream, definition),
21181            GameEvent::FishNotice(event) => event.write(stream, definition),
21182            GameEvent::FishNoticeArm(event) => event.write(stream, definition),
21183            GameEvent::SlapNotice(event) => event.write(stream, definition),
21184            GameEvent::ThrowableHit(event) => event.write(stream, definition),
21185            GameEvent::PumpkinLordSummoned(event) => event.write(stream, definition),
21186            GameEvent::PumpkinLordKilled(event) => event.write(stream, definition),
21187            GameEvent::MerasmusSummoned(event) => event.write(stream, definition),
21188            GameEvent::MerasmusKilled(event) => event.write(stream, definition),
21189            GameEvent::MerasmusEscapeWarning(event) => event.write(stream, definition),
21190            GameEvent::MerasmusEscaped(event) => event.write(stream, definition),
21191            GameEvent::EyeballBossSummoned(event) => event.write(stream, definition),
21192            GameEvent::EyeballBossStunned(event) => event.write(stream, definition),
21193            GameEvent::EyeballBossKilled(event) => event.write(stream, definition),
21194            GameEvent::EyeballBossKiller(event) => event.write(stream, definition),
21195            GameEvent::EyeballBossEscapeImminent(event) => event.write(stream, definition),
21196            GameEvent::EyeballBossEscaped(event) => event.write(stream, definition),
21197            GameEvent::NpcHurt(event) => event.write(stream, definition),
21198            GameEvent::ControlPointTimerUpdated(event) => event.write(stream, definition),
21199            GameEvent::PlayerHighFiveStart(event) => event.write(stream, definition),
21200            GameEvent::PlayerHighFiveCancel(event) => event.write(stream, definition),
21201            GameEvent::PlayerHighFiveSuccess(event) => event.write(stream, definition),
21202            GameEvent::PlayerBonusPoints(event) => event.write(stream, definition),
21203            GameEvent::PlayerUpgraded(event) => event.write(stream, definition),
21204            GameEvent::PlayerBuyback(event) => event.write(stream, definition),
21205            GameEvent::PlayerUsedPowerUpBottle(event) => event.write(stream, definition),
21206            GameEvent::ChristmasGiftGrab(event) => event.write(stream, definition),
21207            GameEvent::PlayerKilledAchievementZone(event) => event.write(stream, definition),
21208            GameEvent::PartyUpdated(event) => event.write(stream, definition),
21209            GameEvent::PartyPrefChanged(event) => event.write(stream, definition),
21210            GameEvent::PartyCriteriaChanged(event) => event.write(stream, definition),
21211            GameEvent::PartyInvitesChanged(event) => event.write(stream, definition),
21212            GameEvent::PartyQueueStateChanged(event) => event.write(stream, definition),
21213            GameEvent::PartyChat(event) => event.write(stream, definition),
21214            GameEvent::PartyMemberJoin(event) => event.write(stream, definition),
21215            GameEvent::PartyMemberLeave(event) => event.write(stream, definition),
21216            GameEvent::MatchInvitesUpdated(event) => event.write(stream, definition),
21217            GameEvent::LobbyUpdated(event) => event.write(stream, definition),
21218            GameEvent::MvmMissionUpdate(event) => event.write(stream, definition),
21219            GameEvent::RecalculateHolidays(event) => event.write(stream, definition),
21220            GameEvent::PlayerCurrencyChanged(event) => event.write(stream, definition),
21221            GameEvent::DoomsdayRocketOpen(event) => event.write(stream, definition),
21222            GameEvent::RemoveNemesisRelationships(event) => event.write(stream, definition),
21223            GameEvent::MvmCreditBonusWave(event) => event.write(stream, definition),
21224            GameEvent::MvmCreditBonusAll(event) => event.write(stream, definition),
21225            GameEvent::MvmCreditBonusAllAdvanced(event) => event.write(stream, definition),
21226            GameEvent::MvmQuickSentryUpgrade(event) => event.write(stream, definition),
21227            GameEvent::MvmTankDestroyedByPlayers(event) => event.write(stream, definition),
21228            GameEvent::MvmKillRobotDeliveringBomb(event) => event.write(stream, definition),
21229            GameEvent::MvmPickupCurrency(event) => event.write(stream, definition),
21230            GameEvent::MvmBombCarrierKilled(event) => event.write(stream, definition),
21231            GameEvent::MvmSentryBusterDetonate(event) => event.write(stream, definition),
21232            GameEvent::MvmScoutMarkedForDeath(event) => event.write(stream, definition),
21233            GameEvent::MvmMedicPowerUpShared(event) => event.write(stream, definition),
21234            GameEvent::MvmBeginWave(event) => event.write(stream, definition),
21235            GameEvent::MvmWaveComplete(event) => event.write(stream, definition),
21236            GameEvent::MvmMissionComplete(event) => event.write(stream, definition),
21237            GameEvent::MvmBombResetByPlayer(event) => event.write(stream, definition),
21238            GameEvent::MvmBombAlarmTriggered(event) => event.write(stream, definition),
21239            GameEvent::MvmBombDeployResetByPlayer(event) => event.write(stream, definition),
21240            GameEvent::MvmWaveFailed(event) => event.write(stream, definition),
21241            GameEvent::MvmResetStats(event) => event.write(stream, definition),
21242            GameEvent::DamageResisted(event) => event.write(stream, definition),
21243            GameEvent::RevivePlayerNotify(event) => event.write(stream, definition),
21244            GameEvent::RevivePlayerStopped(event) => event.write(stream, definition),
21245            GameEvent::RevivePlayerComplete(event) => event.write(stream, definition),
21246            GameEvent::PlayerTurnedToGhost(event) => event.write(stream, definition),
21247            GameEvent::MedigunShieldBlockedDamage(event) => event.write(stream, definition),
21248            GameEvent::MvmAdvWaveCompleteNoGates(event) => event.write(stream, definition),
21249            GameEvent::MvmSniperHeadshotCurrency(event) => event.write(stream, definition),
21250            GameEvent::MvmMannhattanPit(event) => event.write(stream, definition),
21251            GameEvent::FlagCarriedInDetectionZone(event) => event.write(stream, definition),
21252            GameEvent::MvmAdvWaveKilledStunRadio(event) => event.write(stream, definition),
21253            GameEvent::PlayerDirectHitStun(event) => event.write(stream, definition),
21254            GameEvent::MvmSentryBusterKilled(event) => event.write(stream, definition),
21255            GameEvent::UpgradesFileChanged(event) => event.write(stream, definition),
21256            GameEvent::RdTeamPointsChanged(event) => event.write(stream, definition),
21257            GameEvent::RdRulesStateChanged(event) => event.write(stream, definition),
21258            GameEvent::RdRobotKilled(event) => event.write(stream, definition),
21259            GameEvent::RdRobotImpact(event) => event.write(stream, definition),
21260            GameEvent::TeamPlayPreRoundTimeLeft(event) => event.write(stream, definition),
21261            GameEvent::ParachuteDeploy(event) => event.write(stream, definition),
21262            GameEvent::ParachuteHolster(event) => event.write(stream, definition),
21263            GameEvent::KillRefillsMeter(event) => event.write(stream, definition),
21264            GameEvent::RpsTauntEvent(event) => event.write(stream, definition),
21265            GameEvent::CongaKill(event) => event.write(stream, definition),
21266            GameEvent::PlayerInitialSpawn(event) => event.write(stream, definition),
21267            GameEvent::CompetitiveVictory(event) => event.write(stream, definition),
21268            GameEvent::CompetitiveStatsUpdate(event) => event.write(stream, definition),
21269            GameEvent::MiniGameWin(event) => event.write(stream, definition),
21270            GameEvent::SentryOnGoActive(event) => event.write(stream, definition),
21271            GameEvent::DuckXpLevelUp(event) => event.write(stream, definition),
21272            GameEvent::QuestLogOpened(event) => event.write(stream, definition),
21273            GameEvent::SchemaUpdated(event) => event.write(stream, definition),
21274            GameEvent::LocalPlayerPickupWeapon(event) => event.write(stream, definition),
21275            GameEvent::RdPlayerScorePoints(event) => event.write(stream, definition),
21276            GameEvent::DemomanDetStickies(event) => event.write(stream, definition),
21277            GameEvent::QuestObjectiveCompleted(event) => event.write(stream, definition),
21278            GameEvent::PlayerScoreChanged(event) => event.write(stream, definition),
21279            GameEvent::KilledCappingPlayer(event) => event.write(stream, definition),
21280            GameEvent::EnvironmentalDeath(event) => event.write(stream, definition),
21281            GameEvent::ProjectileDirectHit(event) => event.write(stream, definition),
21282            GameEvent::PassGet(event) => event.write(stream, definition),
21283            GameEvent::PassScore(event) => event.write(stream, definition),
21284            GameEvent::PassFree(event) => event.write(stream, definition),
21285            GameEvent::PassPassCaught(event) => event.write(stream, definition),
21286            GameEvent::PassBallStolen(event) => event.write(stream, definition),
21287            GameEvent::PassBallBlocked(event) => event.write(stream, definition),
21288            GameEvent::DamagePrevented(event) => event.write(stream, definition),
21289            GameEvent::HalloweenBossKilled(event) => event.write(stream, definition),
21290            GameEvent::EscapedLootIsland(event) => event.write(stream, definition),
21291            GameEvent::TaggedPlayerAsIt(event) => event.write(stream, definition),
21292            GameEvent::MerasmusStunned(event) => event.write(stream, definition),
21293            GameEvent::MerasmusPropFound(event) => event.write(stream, definition),
21294            GameEvent::HalloweenSkeletonKilled(event) => event.write(stream, definition),
21295            GameEvent::SkeletonKilledQuest(event) => event.write(stream, definition),
21296            GameEvent::SkeletonKingKilledQuest(event) => event.write(stream, definition),
21297            GameEvent::EscapeHell(event) => event.write(stream, definition),
21298            GameEvent::CrossSpectralBridge(event) => event.write(stream, definition),
21299            GameEvent::MiniGameWon(event) => event.write(stream, definition),
21300            GameEvent::RespawnGhost(event) => event.write(stream, definition),
21301            GameEvent::KillInHell(event) => event.write(stream, definition),
21302            GameEvent::HalloweenDuckCollected(event) => event.write(stream, definition),
21303            GameEvent::SpecialScore(event) => event.write(stream, definition),
21304            GameEvent::TeamLeaderKilled(event) => event.write(stream, definition),
21305            GameEvent::HalloweenSoulCollected(event) => event.write(stream, definition),
21306            GameEvent::RecalculateTruce(event) => event.write(stream, definition),
21307            GameEvent::DeadRingerCheatDeath(event) => event.write(stream, definition),
21308            GameEvent::CrossbowHeal(event) => event.write(stream, definition),
21309            GameEvent::DamageMitigated(event) => event.write(stream, definition),
21310            GameEvent::PayloadPushed(event) => event.write(stream, definition),
21311            GameEvent::PlayerAbandonedMatch(event) => event.write(stream, definition),
21312            GameEvent::ClDrawline(event) => event.write(stream, definition),
21313            GameEvent::RestartTimerTime(event) => event.write(stream, definition),
21314            GameEvent::WinLimitChanged(event) => event.write(stream, definition),
21315            GameEvent::WinPanelShowScores(event) => event.write(stream, definition),
21316            GameEvent::TopStreamsRequestFinished(event) => event.write(stream, definition),
21317            GameEvent::CompetitiveStateChanged(event) => event.write(stream, definition),
21318            GameEvent::GlobalWarDataUpdated(event) => event.write(stream, definition),
21319            GameEvent::StopWatchChanged(event) => event.write(stream, definition),
21320            GameEvent::DsStop(event) => event.write(stream, definition),
21321            GameEvent::DsScreenshot(event) => event.write(stream, definition),
21322            GameEvent::ShowMatchSummary(event) => event.write(stream, definition),
21323            GameEvent::ExperienceChanged(event) => event.write(stream, definition),
21324            GameEvent::BeginXpLerp(event) => event.write(stream, definition),
21325            GameEvent::MatchmakerStatsUpdated(event) => event.write(stream, definition),
21326            GameEvent::RematchVotePeriodOver(event) => event.write(stream, definition),
21327            GameEvent::RematchFailedToCreate(event) => event.write(stream, definition),
21328            GameEvent::PlayerRematchChange(event) => event.write(stream, definition),
21329            GameEvent::PingUpdated(event) => event.write(stream, definition),
21330            GameEvent::MMStatsUpdated(event) => event.write(stream, definition),
21331            GameEvent::PlayerNextMapVoteChange(event) => event.write(stream, definition),
21332            GameEvent::VoteMapsChanged(event) => event.write(stream, definition),
21333            GameEvent::ProtoDefChanged(event) => event.write(stream, definition),
21334            GameEvent::PlayerDomination(event) => event.write(stream, definition),
21335            GameEvent::PlayerRocketPackPushed(event) => event.write(stream, definition),
21336            GameEvent::QuestRequest(event) => event.write(stream, definition),
21337            GameEvent::QuestResponse(event) => event.write(stream, definition),
21338            GameEvent::QuestProgress(event) => event.write(stream, definition),
21339            GameEvent::ProjectileRemoved(event) => event.write(stream, definition),
21340            GameEvent::QuestMapDataChanged(event) => event.write(stream, definition),
21341            GameEvent::GasDousedPlayerIgnited(event) => event.write(stream, definition),
21342            GameEvent::QuestTurnInState(event) => event.write(stream, definition),
21343            GameEvent::ItemsAcknowledged(event) => event.write(stream, definition),
21344            GameEvent::CapperKilled(event) => event.write(stream, definition),
21345            GameEvent::MainMenuStabilized(event) => event.write(stream, definition),
21346            GameEvent::WorldStatusChanged(event) => event.write(stream, definition),
21347            GameEvent::HLTVStatus(event) => event.write(stream, definition),
21348            GameEvent::HLTVCameraman(event) => event.write(stream, definition),
21349            GameEvent::HLTVRankCamera(event) => event.write(stream, definition),
21350            GameEvent::HLTVRankEntity(event) => event.write(stream, definition),
21351            GameEvent::HLTVFixed(event) => event.write(stream, definition),
21352            GameEvent::HLTVChase(event) => event.write(stream, definition),
21353            GameEvent::HLTVMessage(event) => event.write(stream, definition),
21354            GameEvent::HLTVTitle(event) => event.write(stream, definition),
21355            GameEvent::HLTVChat(event) => event.write(stream, definition),
21356            GameEvent::ReplayStartRecord(event) => event.write(stream, definition),
21357            GameEvent::ReplaySessionInfo(event) => event.write(stream, definition),
21358            GameEvent::ReplayEndRecord(event) => event.write(stream, definition),
21359            GameEvent::ReplayReplaysAvailable(event) => event.write(stream, definition),
21360            GameEvent::ReplayServerError(event) => event.write(stream, definition),
21361            GameEvent::Unknown(raw) => Ok(raw.write(stream)?),
21362        }
21363    }
21364    pub fn event_type(&self) -> GameEventType {
21365        match &self {
21366            GameEvent::ServerSpawn(_) => GameEventType::ServerSpawn,
21367            GameEvent::ServerChangeLevelFailed(_) => GameEventType::ServerChangeLevelFailed,
21368            GameEvent::ServerShutdown(_) => GameEventType::ServerShutdown,
21369            GameEvent::ServerCvar(_) => GameEventType::ServerCvar,
21370            GameEvent::ServerMessage(_) => GameEventType::ServerMessage,
21371            GameEvent::ServerAddBan(_) => GameEventType::ServerAddBan,
21372            GameEvent::ServerRemoveBan(_) => GameEventType::ServerRemoveBan,
21373            GameEvent::PlayerConnect(_) => GameEventType::PlayerConnect,
21374            GameEvent::PlayerConnectClient(_) => GameEventType::PlayerConnectClient,
21375            GameEvent::PlayerInfo(_) => GameEventType::PlayerInfo,
21376            GameEvent::PlayerDisconnect(_) => GameEventType::PlayerDisconnect,
21377            GameEvent::PlayerActivate(_) => GameEventType::PlayerActivate,
21378            GameEvent::PlayerSay(_) => GameEventType::PlayerSay,
21379            GameEvent::ClientDisconnect(_) => GameEventType::ClientDisconnect,
21380            GameEvent::ClientBeginConnect(_) => GameEventType::ClientBeginConnect,
21381            GameEvent::ClientConnected(_) => GameEventType::ClientConnected,
21382            GameEvent::ClientFullConnect(_) => GameEventType::ClientFullConnect,
21383            GameEvent::HostQuit(_) => GameEventType::HostQuit,
21384            GameEvent::TeamInfo(_) => GameEventType::TeamInfo,
21385            GameEvent::TeamScore(_) => GameEventType::TeamScore,
21386            GameEvent::TeamPlayBroadcastAudio(_) => GameEventType::TeamPlayBroadcastAudio,
21387            GameEvent::PlayerTeam(_) => GameEventType::PlayerTeam,
21388            GameEvent::PlayerClass(_) => GameEventType::PlayerClass,
21389            GameEvent::PlayerDeath(_) => GameEventType::PlayerDeath,
21390            GameEvent::PlayerHurt(_) => GameEventType::PlayerHurt,
21391            GameEvent::PlayerChat(_) => GameEventType::PlayerChat,
21392            GameEvent::PlayerScore(_) => GameEventType::PlayerScore,
21393            GameEvent::PlayerSpawn(_) => GameEventType::PlayerSpawn,
21394            GameEvent::PlayerShoot(_) => GameEventType::PlayerShoot,
21395            GameEvent::PlayerUse(_) => GameEventType::PlayerUse,
21396            GameEvent::PlayerChangeName(_) => GameEventType::PlayerChangeName,
21397            GameEvent::PlayerHintMessage(_) => GameEventType::PlayerHintMessage,
21398            GameEvent::BasePlayerTeleported(_) => GameEventType::BasePlayerTeleported,
21399            GameEvent::GameInit(_) => GameEventType::GameInit,
21400            GameEvent::GameNewMap(_) => GameEventType::GameNewMap,
21401            GameEvent::GameStart(_) => GameEventType::GameStart,
21402            GameEvent::GameEnd(_) => GameEventType::GameEnd,
21403            GameEvent::RoundStart(_) => GameEventType::RoundStart,
21404            GameEvent::RoundEnd(_) => GameEventType::RoundEnd,
21405            GameEvent::GameMessage(_) => GameEventType::GameMessage,
21406            GameEvent::BreakBreakable(_) => GameEventType::BreakBreakable,
21407            GameEvent::BreakProp(_) => GameEventType::BreakProp,
21408            GameEvent::EntityKilled(_) => GameEventType::EntityKilled,
21409            GameEvent::BonusUpdated(_) => GameEventType::BonusUpdated,
21410            GameEvent::AchievementEvent(_) => GameEventType::AchievementEvent,
21411            GameEvent::AchievementIncrement(_) => GameEventType::AchievementIncrement,
21412            GameEvent::PhysgunPickup(_) => GameEventType::PhysgunPickup,
21413            GameEvent::FlareIgniteNpc(_) => GameEventType::FlareIgniteNpc,
21414            GameEvent::HelicopterGrenadePuntMiss(_) => GameEventType::HelicopterGrenadePuntMiss,
21415            GameEvent::UserDataDownloaded(_) => GameEventType::UserDataDownloaded,
21416            GameEvent::RagdollDissolved(_) => GameEventType::RagdollDissolved,
21417            GameEvent::HLTVChangedMode(_) => GameEventType::HLTVChangedMode,
21418            GameEvent::HLTVChangedTarget(_) => GameEventType::HLTVChangedTarget,
21419            GameEvent::VoteEnded(_) => GameEventType::VoteEnded,
21420            GameEvent::VoteStarted(_) => GameEventType::VoteStarted,
21421            GameEvent::VoteChanged(_) => GameEventType::VoteChanged,
21422            GameEvent::VotePassed(_) => GameEventType::VotePassed,
21423            GameEvent::VoteFailed(_) => GameEventType::VoteFailed,
21424            GameEvent::VoteCast(_) => GameEventType::VoteCast,
21425            GameEvent::VoteOptions(_) => GameEventType::VoteOptions,
21426            GameEvent::ReplaySaved(_) => GameEventType::ReplaySaved,
21427            GameEvent::EnteredPerformanceMode(_) => GameEventType::EnteredPerformanceMode,
21428            GameEvent::BrowseReplays(_) => GameEventType::BrowseReplays,
21429            GameEvent::ReplayYoutubeStats(_) => GameEventType::ReplayYoutubeStats,
21430            GameEvent::InventoryUpdated(_) => GameEventType::InventoryUpdated,
21431            GameEvent::CartUpdated(_) => GameEventType::CartUpdated,
21432            GameEvent::StorePriceSheetUpdated(_) => GameEventType::StorePriceSheetUpdated,
21433            GameEvent::EconInventoryConnected(_) => GameEventType::EconInventoryConnected,
21434            GameEvent::ItemSchemaInitialized(_) => GameEventType::ItemSchemaInitialized,
21435            GameEvent::GcNewSession(_) => GameEventType::GcNewSession,
21436            GameEvent::GcLostSession(_) => GameEventType::GcLostSession,
21437            GameEvent::IntroFinish(_) => GameEventType::IntroFinish,
21438            GameEvent::IntroNextCamera(_) => GameEventType::IntroNextCamera,
21439            GameEvent::PlayerChangeClass(_) => GameEventType::PlayerChangeClass,
21440            GameEvent::TfMapTimeRemaining(_) => GameEventType::TfMapTimeRemaining,
21441            GameEvent::TfGameOver(_) => GameEventType::TfGameOver,
21442            GameEvent::CtfFlagCaptured(_) => GameEventType::CtfFlagCaptured,
21443            GameEvent::ControlPointInitialized(_) => GameEventType::ControlPointInitialized,
21444            GameEvent::ControlPointUpdateImages(_) => GameEventType::ControlPointUpdateImages,
21445            GameEvent::ControlPointUpdateLayout(_) => GameEventType::ControlPointUpdateLayout,
21446            GameEvent::ControlPointUpdateCapping(_) => GameEventType::ControlPointUpdateCapping,
21447            GameEvent::ControlPointUpdateOwner(_) => GameEventType::ControlPointUpdateOwner,
21448            GameEvent::ControlPointStartTouch(_) => GameEventType::ControlPointStartTouch,
21449            GameEvent::ControlPointEndTouch(_) => GameEventType::ControlPointEndTouch,
21450            GameEvent::ControlPointPulseElement(_) => GameEventType::ControlPointPulseElement,
21451            GameEvent::ControlPointFakeCapture(_) => GameEventType::ControlPointFakeCapture,
21452            GameEvent::ControlPointFakeCaptureMultiplier(_) => {
21453                GameEventType::ControlPointFakeCaptureMultiplier
21454            }
21455            GameEvent::TeamPlayRoundSelected(_) => GameEventType::TeamPlayRoundSelected,
21456            GameEvent::TeamPlayRoundStart(_) => GameEventType::TeamPlayRoundStart,
21457            GameEvent::TeamPlayRoundActive(_) => GameEventType::TeamPlayRoundActive,
21458            GameEvent::TeamPlayWaitingBegins(_) => GameEventType::TeamPlayWaitingBegins,
21459            GameEvent::TeamPlayWaitingEnds(_) => GameEventType::TeamPlayWaitingEnds,
21460            GameEvent::TeamPlayWaitingAboutToEnd(_) => GameEventType::TeamPlayWaitingAboutToEnd,
21461            GameEvent::TeamPlayRestartRound(_) => GameEventType::TeamPlayRestartRound,
21462            GameEvent::TeamPlayReadyRestart(_) => GameEventType::TeamPlayReadyRestart,
21463            GameEvent::TeamPlayRoundRestartSeconds(_) => GameEventType::TeamPlayRoundRestartSeconds,
21464            GameEvent::TeamPlayTeamReady(_) => GameEventType::TeamPlayTeamReady,
21465            GameEvent::TeamPlayRoundWin(_) => GameEventType::TeamPlayRoundWin,
21466            GameEvent::TeamPlayUpdateTimer(_) => GameEventType::TeamPlayUpdateTimer,
21467            GameEvent::TeamPlayRoundStalemate(_) => GameEventType::TeamPlayRoundStalemate,
21468            GameEvent::TeamPlayOvertimeBegin(_) => GameEventType::TeamPlayOvertimeBegin,
21469            GameEvent::TeamPlayOvertimeEnd(_) => GameEventType::TeamPlayOvertimeEnd,
21470            GameEvent::TeamPlaySuddenDeathBegin(_) => GameEventType::TeamPlaySuddenDeathBegin,
21471            GameEvent::TeamPlaySuddenDeathEnd(_) => GameEventType::TeamPlaySuddenDeathEnd,
21472            GameEvent::TeamPlayGameOver(_) => GameEventType::TeamPlayGameOver,
21473            GameEvent::TeamPlayMapTimeRemaining(_) => GameEventType::TeamPlayMapTimeRemaining,
21474            GameEvent::TeamPlayTimerFlash(_) => GameEventType::TeamPlayTimerFlash,
21475            GameEvent::TeamPlayTimerTimeAdded(_) => GameEventType::TeamPlayTimerTimeAdded,
21476            GameEvent::TeamPlayPointStartCapture(_) => GameEventType::TeamPlayPointStartCapture,
21477            GameEvent::TeamPlayPointCaptured(_) => GameEventType::TeamPlayPointCaptured,
21478            GameEvent::TeamPlayPointLocked(_) => GameEventType::TeamPlayPointLocked,
21479            GameEvent::TeamPlayPointUnlocked(_) => GameEventType::TeamPlayPointUnlocked,
21480            GameEvent::TeamPlayCaptureBroken(_) => GameEventType::TeamPlayCaptureBroken,
21481            GameEvent::TeamPlayCaptureBlocked(_) => GameEventType::TeamPlayCaptureBlocked,
21482            GameEvent::TeamPlayFlagEvent(_) => GameEventType::TeamPlayFlagEvent,
21483            GameEvent::TeamPlayWinPanel(_) => GameEventType::TeamPlayWinPanel,
21484            GameEvent::TeamPlayTeamBalancedPlayer(_) => GameEventType::TeamPlayTeamBalancedPlayer,
21485            GameEvent::TeamPlaySetupFinished(_) => GameEventType::TeamPlaySetupFinished,
21486            GameEvent::TeamPlayAlert(_) => GameEventType::TeamPlayAlert,
21487            GameEvent::TrainingComplete(_) => GameEventType::TrainingComplete,
21488            GameEvent::ShowFreezePanel(_) => GameEventType::ShowFreezePanel,
21489            GameEvent::HideFreezePanel(_) => GameEventType::HideFreezePanel,
21490            GameEvent::FreezeCamStarted(_) => GameEventType::FreezeCamStarted,
21491            GameEvent::LocalPlayerChangeTeam(_) => GameEventType::LocalPlayerChangeTeam,
21492            GameEvent::LocalPlayerScoreChanged(_) => GameEventType::LocalPlayerScoreChanged,
21493            GameEvent::LocalPlayerChangeClass(_) => GameEventType::LocalPlayerChangeClass,
21494            GameEvent::LocalPlayerRespawn(_) => GameEventType::LocalPlayerRespawn,
21495            GameEvent::BuildingInfoChanged(_) => GameEventType::BuildingInfoChanged,
21496            GameEvent::LocalPlayerChangeDisguise(_) => GameEventType::LocalPlayerChangeDisguise,
21497            GameEvent::PlayerAccountChanged(_) => GameEventType::PlayerAccountChanged,
21498            GameEvent::SpyPdaReset(_) => GameEventType::SpyPdaReset,
21499            GameEvent::FlagStatusUpdate(_) => GameEventType::FlagStatusUpdate,
21500            GameEvent::PlayerStatsUpdated(_) => GameEventType::PlayerStatsUpdated,
21501            GameEvent::PlayingCommentary(_) => GameEventType::PlayingCommentary,
21502            GameEvent::PlayerChargeDeployed(_) => GameEventType::PlayerChargeDeployed,
21503            GameEvent::PlayerBuiltObject(_) => GameEventType::PlayerBuiltObject,
21504            GameEvent::PlayerUpgradedObject(_) => GameEventType::PlayerUpgradedObject,
21505            GameEvent::PlayerCarryObject(_) => GameEventType::PlayerCarryObject,
21506            GameEvent::PlayerDropObject(_) => GameEventType::PlayerDropObject,
21507            GameEvent::ObjectRemoved(_) => GameEventType::ObjectRemoved,
21508            GameEvent::ObjectDestroyed(_) => GameEventType::ObjectDestroyed,
21509            GameEvent::ObjectDetonated(_) => GameEventType::ObjectDetonated,
21510            GameEvent::AchievementEarned(_) => GameEventType::AchievementEarned,
21511            GameEvent::SpecTargetUpdated(_) => GameEventType::SpecTargetUpdated,
21512            GameEvent::TournamentStateUpdate(_) => GameEventType::TournamentStateUpdate,
21513            GameEvent::TournamentEnableCountdown(_) => GameEventType::TournamentEnableCountdown,
21514            GameEvent::PlayerCalledForMedic(_) => GameEventType::PlayerCalledForMedic,
21515            GameEvent::PlayerAskedForBall(_) => GameEventType::PlayerAskedForBall,
21516            GameEvent::LocalPlayerBecameObserver(_) => GameEventType::LocalPlayerBecameObserver,
21517            GameEvent::PlayerIgnitedInv(_) => GameEventType::PlayerIgnitedInv,
21518            GameEvent::PlayerIgnited(_) => GameEventType::PlayerIgnited,
21519            GameEvent::PlayerExtinguished(_) => GameEventType::PlayerExtinguished,
21520            GameEvent::PlayerTeleported(_) => GameEventType::PlayerTeleported,
21521            GameEvent::PlayerHealedMedicCall(_) => GameEventType::PlayerHealedMedicCall,
21522            GameEvent::LocalPlayerChargeReady(_) => GameEventType::LocalPlayerChargeReady,
21523            GameEvent::LocalPlayerWindDown(_) => GameEventType::LocalPlayerWindDown,
21524            GameEvent::PlayerInvulned(_) => GameEventType::PlayerInvulned,
21525            GameEvent::EscortSpeed(_) => GameEventType::EscortSpeed,
21526            GameEvent::EscortProgress(_) => GameEventType::EscortProgress,
21527            GameEvent::EscortRecede(_) => GameEventType::EscortRecede,
21528            GameEvent::GameUIActivated(_) => GameEventType::GameUIActivated,
21529            GameEvent::GameUIHidden(_) => GameEventType::GameUIHidden,
21530            GameEvent::PlayerEscortScore(_) => GameEventType::PlayerEscortScore,
21531            GameEvent::PlayerHealOnHit(_) => GameEventType::PlayerHealOnHit,
21532            GameEvent::PlayerStealSandvich(_) => GameEventType::PlayerStealSandvich,
21533            GameEvent::ShowClassLayout(_) => GameEventType::ShowClassLayout,
21534            GameEvent::ShowVsPanel(_) => GameEventType::ShowVsPanel,
21535            GameEvent::PlayerDamaged(_) => GameEventType::PlayerDamaged,
21536            GameEvent::ArenaPlayerNotification(_) => GameEventType::ArenaPlayerNotification,
21537            GameEvent::ArenaMatchMaxStreak(_) => GameEventType::ArenaMatchMaxStreak,
21538            GameEvent::ArenaRoundStart(_) => GameEventType::ArenaRoundStart,
21539            GameEvent::ArenaWinPanel(_) => GameEventType::ArenaWinPanel,
21540            GameEvent::PveWinPanel(_) => GameEventType::PveWinPanel,
21541            GameEvent::AirDash(_) => GameEventType::AirDash,
21542            GameEvent::Landed(_) => GameEventType::Landed,
21543            GameEvent::PlayerDamageDodged(_) => GameEventType::PlayerDamageDodged,
21544            GameEvent::PlayerStunned(_) => GameEventType::PlayerStunned,
21545            GameEvent::ScoutGrandSlam(_) => GameEventType::ScoutGrandSlam,
21546            GameEvent::ScoutSlamdollLanded(_) => GameEventType::ScoutSlamdollLanded,
21547            GameEvent::ArrowImpact(_) => GameEventType::ArrowImpact,
21548            GameEvent::PlayerJarated(_) => GameEventType::PlayerJarated,
21549            GameEvent::PlayerJaratedFade(_) => GameEventType::PlayerJaratedFade,
21550            GameEvent::PlayerShieldBlocked(_) => GameEventType::PlayerShieldBlocked,
21551            GameEvent::PlayerPinned(_) => GameEventType::PlayerPinned,
21552            GameEvent::PlayerHealedByMedic(_) => GameEventType::PlayerHealedByMedic,
21553            GameEvent::PlayerSappedObject(_) => GameEventType::PlayerSappedObject,
21554            GameEvent::ItemFound(_) => GameEventType::ItemFound,
21555            GameEvent::ShowAnnotation(_) => GameEventType::ShowAnnotation,
21556            GameEvent::HideAnnotation(_) => GameEventType::HideAnnotation,
21557            GameEvent::PostInventoryApplication(_) => GameEventType::PostInventoryApplication,
21558            GameEvent::ControlPointUnlockUpdated(_) => GameEventType::ControlPointUnlockUpdated,
21559            GameEvent::DeployBuffBanner(_) => GameEventType::DeployBuffBanner,
21560            GameEvent::PlayerBuff(_) => GameEventType::PlayerBuff,
21561            GameEvent::MedicDeath(_) => GameEventType::MedicDeath,
21562            GameEvent::OvertimeNag(_) => GameEventType::OvertimeNag,
21563            GameEvent::TeamsChanged(_) => GameEventType::TeamsChanged,
21564            GameEvent::HalloweenPumpkinGrab(_) => GameEventType::HalloweenPumpkinGrab,
21565            GameEvent::RocketJump(_) => GameEventType::RocketJump,
21566            GameEvent::RocketJumpLanded(_) => GameEventType::RocketJumpLanded,
21567            GameEvent::StickyJump(_) => GameEventType::StickyJump,
21568            GameEvent::StickyJumpLanded(_) => GameEventType::StickyJumpLanded,
21569            GameEvent::RocketPackLaunch(_) => GameEventType::RocketPackLaunch,
21570            GameEvent::RocketPackLanded(_) => GameEventType::RocketPackLanded,
21571            GameEvent::MedicDefended(_) => GameEventType::MedicDefended,
21572            GameEvent::LocalPlayerHealed(_) => GameEventType::LocalPlayerHealed,
21573            GameEvent::PlayerDestroyedPipeBomb(_) => GameEventType::PlayerDestroyedPipeBomb,
21574            GameEvent::ObjectDeflected(_) => GameEventType::ObjectDeflected,
21575            GameEvent::PlayerMvp(_) => GameEventType::PlayerMvp,
21576            GameEvent::RaidSpawnMob(_) => GameEventType::RaidSpawnMob,
21577            GameEvent::RaidSpawnSquad(_) => GameEventType::RaidSpawnSquad,
21578            GameEvent::NavBlocked(_) => GameEventType::NavBlocked,
21579            GameEvent::PathTrackPassed(_) => GameEventType::PathTrackPassed,
21580            GameEvent::NumCappersChanged(_) => GameEventType::NumCappersChanged,
21581            GameEvent::PlayerRegenerate(_) => GameEventType::PlayerRegenerate,
21582            GameEvent::UpdateStatusItem(_) => GameEventType::UpdateStatusItem,
21583            GameEvent::StatsResetRound(_) => GameEventType::StatsResetRound,
21584            GameEvent::ScoreStatsAccumulatedUpdate(_) => GameEventType::ScoreStatsAccumulatedUpdate,
21585            GameEvent::ScoreStatsAccumulatedReset(_) => GameEventType::ScoreStatsAccumulatedReset,
21586            GameEvent::AchievementEarnedLocal(_) => GameEventType::AchievementEarnedLocal,
21587            GameEvent::PlayerHealed(_) => GameEventType::PlayerHealed,
21588            GameEvent::BuildingHealed(_) => GameEventType::BuildingHealed,
21589            GameEvent::ItemPickup(_) => GameEventType::ItemPickup,
21590            GameEvent::DuelStatus(_) => GameEventType::DuelStatus,
21591            GameEvent::FishNotice(_) => GameEventType::FishNotice,
21592            GameEvent::FishNoticeArm(_) => GameEventType::FishNoticeArm,
21593            GameEvent::SlapNotice(_) => GameEventType::SlapNotice,
21594            GameEvent::ThrowableHit(_) => GameEventType::ThrowableHit,
21595            GameEvent::PumpkinLordSummoned(_) => GameEventType::PumpkinLordSummoned,
21596            GameEvent::PumpkinLordKilled(_) => GameEventType::PumpkinLordKilled,
21597            GameEvent::MerasmusSummoned(_) => GameEventType::MerasmusSummoned,
21598            GameEvent::MerasmusKilled(_) => GameEventType::MerasmusKilled,
21599            GameEvent::MerasmusEscapeWarning(_) => GameEventType::MerasmusEscapeWarning,
21600            GameEvent::MerasmusEscaped(_) => GameEventType::MerasmusEscaped,
21601            GameEvent::EyeballBossSummoned(_) => GameEventType::EyeballBossSummoned,
21602            GameEvent::EyeballBossStunned(_) => GameEventType::EyeballBossStunned,
21603            GameEvent::EyeballBossKilled(_) => GameEventType::EyeballBossKilled,
21604            GameEvent::EyeballBossKiller(_) => GameEventType::EyeballBossKiller,
21605            GameEvent::EyeballBossEscapeImminent(_) => GameEventType::EyeballBossEscapeImminent,
21606            GameEvent::EyeballBossEscaped(_) => GameEventType::EyeballBossEscaped,
21607            GameEvent::NpcHurt(_) => GameEventType::NpcHurt,
21608            GameEvent::ControlPointTimerUpdated(_) => GameEventType::ControlPointTimerUpdated,
21609            GameEvent::PlayerHighFiveStart(_) => GameEventType::PlayerHighFiveStart,
21610            GameEvent::PlayerHighFiveCancel(_) => GameEventType::PlayerHighFiveCancel,
21611            GameEvent::PlayerHighFiveSuccess(_) => GameEventType::PlayerHighFiveSuccess,
21612            GameEvent::PlayerBonusPoints(_) => GameEventType::PlayerBonusPoints,
21613            GameEvent::PlayerUpgraded(_) => GameEventType::PlayerUpgraded,
21614            GameEvent::PlayerBuyback(_) => GameEventType::PlayerBuyback,
21615            GameEvent::PlayerUsedPowerUpBottle(_) => GameEventType::PlayerUsedPowerUpBottle,
21616            GameEvent::ChristmasGiftGrab(_) => GameEventType::ChristmasGiftGrab,
21617            GameEvent::PlayerKilledAchievementZone(_) => GameEventType::PlayerKilledAchievementZone,
21618            GameEvent::PartyUpdated(_) => GameEventType::PartyUpdated,
21619            GameEvent::PartyPrefChanged(_) => GameEventType::PartyPrefChanged,
21620            GameEvent::PartyCriteriaChanged(_) => GameEventType::PartyCriteriaChanged,
21621            GameEvent::PartyInvitesChanged(_) => GameEventType::PartyInvitesChanged,
21622            GameEvent::PartyQueueStateChanged(_) => GameEventType::PartyQueueStateChanged,
21623            GameEvent::PartyChat(_) => GameEventType::PartyChat,
21624            GameEvent::PartyMemberJoin(_) => GameEventType::PartyMemberJoin,
21625            GameEvent::PartyMemberLeave(_) => GameEventType::PartyMemberLeave,
21626            GameEvent::MatchInvitesUpdated(_) => GameEventType::MatchInvitesUpdated,
21627            GameEvent::LobbyUpdated(_) => GameEventType::LobbyUpdated,
21628            GameEvent::MvmMissionUpdate(_) => GameEventType::MvmMissionUpdate,
21629            GameEvent::RecalculateHolidays(_) => GameEventType::RecalculateHolidays,
21630            GameEvent::PlayerCurrencyChanged(_) => GameEventType::PlayerCurrencyChanged,
21631            GameEvent::DoomsdayRocketOpen(_) => GameEventType::DoomsdayRocketOpen,
21632            GameEvent::RemoveNemesisRelationships(_) => GameEventType::RemoveNemesisRelationships,
21633            GameEvent::MvmCreditBonusWave(_) => GameEventType::MvmCreditBonusWave,
21634            GameEvent::MvmCreditBonusAll(_) => GameEventType::MvmCreditBonusAll,
21635            GameEvent::MvmCreditBonusAllAdvanced(_) => GameEventType::MvmCreditBonusAllAdvanced,
21636            GameEvent::MvmQuickSentryUpgrade(_) => GameEventType::MvmQuickSentryUpgrade,
21637            GameEvent::MvmTankDestroyedByPlayers(_) => GameEventType::MvmTankDestroyedByPlayers,
21638            GameEvent::MvmKillRobotDeliveringBomb(_) => GameEventType::MvmKillRobotDeliveringBomb,
21639            GameEvent::MvmPickupCurrency(_) => GameEventType::MvmPickupCurrency,
21640            GameEvent::MvmBombCarrierKilled(_) => GameEventType::MvmBombCarrierKilled,
21641            GameEvent::MvmSentryBusterDetonate(_) => GameEventType::MvmSentryBusterDetonate,
21642            GameEvent::MvmScoutMarkedForDeath(_) => GameEventType::MvmScoutMarkedForDeath,
21643            GameEvent::MvmMedicPowerUpShared(_) => GameEventType::MvmMedicPowerUpShared,
21644            GameEvent::MvmBeginWave(_) => GameEventType::MvmBeginWave,
21645            GameEvent::MvmWaveComplete(_) => GameEventType::MvmWaveComplete,
21646            GameEvent::MvmMissionComplete(_) => GameEventType::MvmMissionComplete,
21647            GameEvent::MvmBombResetByPlayer(_) => GameEventType::MvmBombResetByPlayer,
21648            GameEvent::MvmBombAlarmTriggered(_) => GameEventType::MvmBombAlarmTriggered,
21649            GameEvent::MvmBombDeployResetByPlayer(_) => GameEventType::MvmBombDeployResetByPlayer,
21650            GameEvent::MvmWaveFailed(_) => GameEventType::MvmWaveFailed,
21651            GameEvent::MvmResetStats(_) => GameEventType::MvmResetStats,
21652            GameEvent::DamageResisted(_) => GameEventType::DamageResisted,
21653            GameEvent::RevivePlayerNotify(_) => GameEventType::RevivePlayerNotify,
21654            GameEvent::RevivePlayerStopped(_) => GameEventType::RevivePlayerStopped,
21655            GameEvent::RevivePlayerComplete(_) => GameEventType::RevivePlayerComplete,
21656            GameEvent::PlayerTurnedToGhost(_) => GameEventType::PlayerTurnedToGhost,
21657            GameEvent::MedigunShieldBlockedDamage(_) => GameEventType::MedigunShieldBlockedDamage,
21658            GameEvent::MvmAdvWaveCompleteNoGates(_) => GameEventType::MvmAdvWaveCompleteNoGates,
21659            GameEvent::MvmSniperHeadshotCurrency(_) => GameEventType::MvmSniperHeadshotCurrency,
21660            GameEvent::MvmMannhattanPit(_) => GameEventType::MvmMannhattanPit,
21661            GameEvent::FlagCarriedInDetectionZone(_) => GameEventType::FlagCarriedInDetectionZone,
21662            GameEvent::MvmAdvWaveKilledStunRadio(_) => GameEventType::MvmAdvWaveKilledStunRadio,
21663            GameEvent::PlayerDirectHitStun(_) => GameEventType::PlayerDirectHitStun,
21664            GameEvent::MvmSentryBusterKilled(_) => GameEventType::MvmSentryBusterKilled,
21665            GameEvent::UpgradesFileChanged(_) => GameEventType::UpgradesFileChanged,
21666            GameEvent::RdTeamPointsChanged(_) => GameEventType::RdTeamPointsChanged,
21667            GameEvent::RdRulesStateChanged(_) => GameEventType::RdRulesStateChanged,
21668            GameEvent::RdRobotKilled(_) => GameEventType::RdRobotKilled,
21669            GameEvent::RdRobotImpact(_) => GameEventType::RdRobotImpact,
21670            GameEvent::TeamPlayPreRoundTimeLeft(_) => GameEventType::TeamPlayPreRoundTimeLeft,
21671            GameEvent::ParachuteDeploy(_) => GameEventType::ParachuteDeploy,
21672            GameEvent::ParachuteHolster(_) => GameEventType::ParachuteHolster,
21673            GameEvent::KillRefillsMeter(_) => GameEventType::KillRefillsMeter,
21674            GameEvent::RpsTauntEvent(_) => GameEventType::RpsTauntEvent,
21675            GameEvent::CongaKill(_) => GameEventType::CongaKill,
21676            GameEvent::PlayerInitialSpawn(_) => GameEventType::PlayerInitialSpawn,
21677            GameEvent::CompetitiveVictory(_) => GameEventType::CompetitiveVictory,
21678            GameEvent::CompetitiveStatsUpdate(_) => GameEventType::CompetitiveStatsUpdate,
21679            GameEvent::MiniGameWin(_) => GameEventType::MiniGameWin,
21680            GameEvent::SentryOnGoActive(_) => GameEventType::SentryOnGoActive,
21681            GameEvent::DuckXpLevelUp(_) => GameEventType::DuckXpLevelUp,
21682            GameEvent::QuestLogOpened(_) => GameEventType::QuestLogOpened,
21683            GameEvent::SchemaUpdated(_) => GameEventType::SchemaUpdated,
21684            GameEvent::LocalPlayerPickupWeapon(_) => GameEventType::LocalPlayerPickupWeapon,
21685            GameEvent::RdPlayerScorePoints(_) => GameEventType::RdPlayerScorePoints,
21686            GameEvent::DemomanDetStickies(_) => GameEventType::DemomanDetStickies,
21687            GameEvent::QuestObjectiveCompleted(_) => GameEventType::QuestObjectiveCompleted,
21688            GameEvent::PlayerScoreChanged(_) => GameEventType::PlayerScoreChanged,
21689            GameEvent::KilledCappingPlayer(_) => GameEventType::KilledCappingPlayer,
21690            GameEvent::EnvironmentalDeath(_) => GameEventType::EnvironmentalDeath,
21691            GameEvent::ProjectileDirectHit(_) => GameEventType::ProjectileDirectHit,
21692            GameEvent::PassGet(_) => GameEventType::PassGet,
21693            GameEvent::PassScore(_) => GameEventType::PassScore,
21694            GameEvent::PassFree(_) => GameEventType::PassFree,
21695            GameEvent::PassPassCaught(_) => GameEventType::PassPassCaught,
21696            GameEvent::PassBallStolen(_) => GameEventType::PassBallStolen,
21697            GameEvent::PassBallBlocked(_) => GameEventType::PassBallBlocked,
21698            GameEvent::DamagePrevented(_) => GameEventType::DamagePrevented,
21699            GameEvent::HalloweenBossKilled(_) => GameEventType::HalloweenBossKilled,
21700            GameEvent::EscapedLootIsland(_) => GameEventType::EscapedLootIsland,
21701            GameEvent::TaggedPlayerAsIt(_) => GameEventType::TaggedPlayerAsIt,
21702            GameEvent::MerasmusStunned(_) => GameEventType::MerasmusStunned,
21703            GameEvent::MerasmusPropFound(_) => GameEventType::MerasmusPropFound,
21704            GameEvent::HalloweenSkeletonKilled(_) => GameEventType::HalloweenSkeletonKilled,
21705            GameEvent::SkeletonKilledQuest(_) => GameEventType::SkeletonKilledQuest,
21706            GameEvent::SkeletonKingKilledQuest(_) => GameEventType::SkeletonKingKilledQuest,
21707            GameEvent::EscapeHell(_) => GameEventType::EscapeHell,
21708            GameEvent::CrossSpectralBridge(_) => GameEventType::CrossSpectralBridge,
21709            GameEvent::MiniGameWon(_) => GameEventType::MiniGameWon,
21710            GameEvent::RespawnGhost(_) => GameEventType::RespawnGhost,
21711            GameEvent::KillInHell(_) => GameEventType::KillInHell,
21712            GameEvent::HalloweenDuckCollected(_) => GameEventType::HalloweenDuckCollected,
21713            GameEvent::SpecialScore(_) => GameEventType::SpecialScore,
21714            GameEvent::TeamLeaderKilled(_) => GameEventType::TeamLeaderKilled,
21715            GameEvent::HalloweenSoulCollected(_) => GameEventType::HalloweenSoulCollected,
21716            GameEvent::RecalculateTruce(_) => GameEventType::RecalculateTruce,
21717            GameEvent::DeadRingerCheatDeath(_) => GameEventType::DeadRingerCheatDeath,
21718            GameEvent::CrossbowHeal(_) => GameEventType::CrossbowHeal,
21719            GameEvent::DamageMitigated(_) => GameEventType::DamageMitigated,
21720            GameEvent::PayloadPushed(_) => GameEventType::PayloadPushed,
21721            GameEvent::PlayerAbandonedMatch(_) => GameEventType::PlayerAbandonedMatch,
21722            GameEvent::ClDrawline(_) => GameEventType::ClDrawline,
21723            GameEvent::RestartTimerTime(_) => GameEventType::RestartTimerTime,
21724            GameEvent::WinLimitChanged(_) => GameEventType::WinLimitChanged,
21725            GameEvent::WinPanelShowScores(_) => GameEventType::WinPanelShowScores,
21726            GameEvent::TopStreamsRequestFinished(_) => GameEventType::TopStreamsRequestFinished,
21727            GameEvent::CompetitiveStateChanged(_) => GameEventType::CompetitiveStateChanged,
21728            GameEvent::GlobalWarDataUpdated(_) => GameEventType::GlobalWarDataUpdated,
21729            GameEvent::StopWatchChanged(_) => GameEventType::StopWatchChanged,
21730            GameEvent::DsStop(_) => GameEventType::DsStop,
21731            GameEvent::DsScreenshot(_) => GameEventType::DsScreenshot,
21732            GameEvent::ShowMatchSummary(_) => GameEventType::ShowMatchSummary,
21733            GameEvent::ExperienceChanged(_) => GameEventType::ExperienceChanged,
21734            GameEvent::BeginXpLerp(_) => GameEventType::BeginXpLerp,
21735            GameEvent::MatchmakerStatsUpdated(_) => GameEventType::MatchmakerStatsUpdated,
21736            GameEvent::RematchVotePeriodOver(_) => GameEventType::RematchVotePeriodOver,
21737            GameEvent::RematchFailedToCreate(_) => GameEventType::RematchFailedToCreate,
21738            GameEvent::PlayerRematchChange(_) => GameEventType::PlayerRematchChange,
21739            GameEvent::PingUpdated(_) => GameEventType::PingUpdated,
21740            GameEvent::MMStatsUpdated(_) => GameEventType::MMStatsUpdated,
21741            GameEvent::PlayerNextMapVoteChange(_) => GameEventType::PlayerNextMapVoteChange,
21742            GameEvent::VoteMapsChanged(_) => GameEventType::VoteMapsChanged,
21743            GameEvent::ProtoDefChanged(_) => GameEventType::ProtoDefChanged,
21744            GameEvent::PlayerDomination(_) => GameEventType::PlayerDomination,
21745            GameEvent::PlayerRocketPackPushed(_) => GameEventType::PlayerRocketPackPushed,
21746            GameEvent::QuestRequest(_) => GameEventType::QuestRequest,
21747            GameEvent::QuestResponse(_) => GameEventType::QuestResponse,
21748            GameEvent::QuestProgress(_) => GameEventType::QuestProgress,
21749            GameEvent::ProjectileRemoved(_) => GameEventType::ProjectileRemoved,
21750            GameEvent::QuestMapDataChanged(_) => GameEventType::QuestMapDataChanged,
21751            GameEvent::GasDousedPlayerIgnited(_) => GameEventType::GasDousedPlayerIgnited,
21752            GameEvent::QuestTurnInState(_) => GameEventType::QuestTurnInState,
21753            GameEvent::ItemsAcknowledged(_) => GameEventType::ItemsAcknowledged,
21754            GameEvent::CapperKilled(_) => GameEventType::CapperKilled,
21755            GameEvent::MainMenuStabilized(_) => GameEventType::MainMenuStabilized,
21756            GameEvent::WorldStatusChanged(_) => GameEventType::WorldStatusChanged,
21757            GameEvent::HLTVStatus(_) => GameEventType::HLTVStatus,
21758            GameEvent::HLTVCameraman(_) => GameEventType::HLTVCameraman,
21759            GameEvent::HLTVRankCamera(_) => GameEventType::HLTVRankCamera,
21760            GameEvent::HLTVRankEntity(_) => GameEventType::HLTVRankEntity,
21761            GameEvent::HLTVFixed(_) => GameEventType::HLTVFixed,
21762            GameEvent::HLTVChase(_) => GameEventType::HLTVChase,
21763            GameEvent::HLTVMessage(_) => GameEventType::HLTVMessage,
21764            GameEvent::HLTVTitle(_) => GameEventType::HLTVTitle,
21765            GameEvent::HLTVChat(_) => GameEventType::HLTVChat,
21766            GameEvent::ReplayStartRecord(_) => GameEventType::ReplayStartRecord,
21767            GameEvent::ReplaySessionInfo(_) => GameEventType::ReplaySessionInfo,
21768            GameEvent::ReplayEndRecord(_) => GameEventType::ReplayEndRecord,
21769            GameEvent::ReplayReplaysAvailable(_) => GameEventType::ReplayReplaysAvailable,
21770            GameEvent::ReplayServerError(_) => GameEventType::ReplayServerError,
21771            GameEvent::Unknown(raw) => raw.event_type.clone(),
21772        }
21773    }
21774}
21775pub fn get_sizes() -> fnv::FnvHashMap<&'static str, usize> {
21776    [
21777        ("ServerSpawn", std::mem::size_of::<ServerSpawnEvent>()),
21778        (
21779            "ServerChangeLevelFailed",
21780            std::mem::size_of::<ServerChangeLevelFailedEvent>(),
21781        ),
21782        ("ServerShutdown", std::mem::size_of::<ServerShutdownEvent>()),
21783        ("ServerCvar", std::mem::size_of::<ServerCvarEvent>()),
21784        ("ServerMessage", std::mem::size_of::<ServerMessageEvent>()),
21785        ("ServerAddBan", std::mem::size_of::<ServerAddBanEvent>()),
21786        (
21787            "ServerRemoveBan",
21788            std::mem::size_of::<ServerRemoveBanEvent>(),
21789        ),
21790        ("PlayerConnect", std::mem::size_of::<PlayerConnectEvent>()),
21791        (
21792            "PlayerConnectClient",
21793            std::mem::size_of::<PlayerConnectClientEvent>(),
21794        ),
21795        ("PlayerInfo", std::mem::size_of::<PlayerInfoEvent>()),
21796        (
21797            "PlayerDisconnect",
21798            std::mem::size_of::<PlayerDisconnectEvent>(),
21799        ),
21800        ("PlayerActivate", std::mem::size_of::<PlayerActivateEvent>()),
21801        ("PlayerSay", std::mem::size_of::<PlayerSayEvent>()),
21802        (
21803            "ClientDisconnect",
21804            std::mem::size_of::<ClientDisconnectEvent>(),
21805        ),
21806        (
21807            "ClientBeginConnect",
21808            std::mem::size_of::<ClientBeginConnectEvent>(),
21809        ),
21810        (
21811            "ClientConnected",
21812            std::mem::size_of::<ClientConnectedEvent>(),
21813        ),
21814        (
21815            "ClientFullConnect",
21816            std::mem::size_of::<ClientFullConnectEvent>(),
21817        ),
21818        ("HostQuit", std::mem::size_of::<HostQuitEvent>()),
21819        ("TeamInfo", std::mem::size_of::<TeamInfoEvent>()),
21820        ("TeamScore", std::mem::size_of::<TeamScoreEvent>()),
21821        (
21822            "TeamPlayBroadcastAudio",
21823            std::mem::size_of::<TeamPlayBroadcastAudioEvent>(),
21824        ),
21825        ("PlayerTeam", std::mem::size_of::<PlayerTeamEvent>()),
21826        ("PlayerClass", std::mem::size_of::<PlayerClassEvent>()),
21827        ("PlayerDeath", std::mem::size_of::<PlayerDeathEvent>()),
21828        ("PlayerHurt", std::mem::size_of::<PlayerHurtEvent>()),
21829        ("PlayerChat", std::mem::size_of::<PlayerChatEvent>()),
21830        ("PlayerScore", std::mem::size_of::<PlayerScoreEvent>()),
21831        ("PlayerSpawn", std::mem::size_of::<PlayerSpawnEvent>()),
21832        ("PlayerShoot", std::mem::size_of::<PlayerShootEvent>()),
21833        ("PlayerUse", std::mem::size_of::<PlayerUseEvent>()),
21834        (
21835            "PlayerChangeName",
21836            std::mem::size_of::<PlayerChangeNameEvent>(),
21837        ),
21838        (
21839            "PlayerHintMessage",
21840            std::mem::size_of::<PlayerHintMessageEvent>(),
21841        ),
21842        (
21843            "BasePlayerTeleported",
21844            std::mem::size_of::<BasePlayerTeleportedEvent>(),
21845        ),
21846        ("GameInit", std::mem::size_of::<GameInitEvent>()),
21847        ("GameNewMap", std::mem::size_of::<GameNewMapEvent>()),
21848        ("GameStart", std::mem::size_of::<GameStartEvent>()),
21849        ("GameEnd", std::mem::size_of::<GameEndEvent>()),
21850        ("RoundStart", std::mem::size_of::<RoundStartEvent>()),
21851        ("RoundEnd", std::mem::size_of::<RoundEndEvent>()),
21852        ("GameMessage", std::mem::size_of::<GameMessageEvent>()),
21853        ("BreakBreakable", std::mem::size_of::<BreakBreakableEvent>()),
21854        ("BreakProp", std::mem::size_of::<BreakPropEvent>()),
21855        ("EntityKilled", std::mem::size_of::<EntityKilledEvent>()),
21856        ("BonusUpdated", std::mem::size_of::<BonusUpdatedEvent>()),
21857        (
21858            "AchievementEvent",
21859            std::mem::size_of::<AchievementEventEvent>(),
21860        ),
21861        (
21862            "AchievementIncrement",
21863            std::mem::size_of::<AchievementIncrementEvent>(),
21864        ),
21865        ("PhysgunPickup", std::mem::size_of::<PhysgunPickupEvent>()),
21866        ("FlareIgniteNpc", std::mem::size_of::<FlareIgniteNpcEvent>()),
21867        (
21868            "HelicopterGrenadePuntMiss",
21869            std::mem::size_of::<HelicopterGrenadePuntMissEvent>(),
21870        ),
21871        (
21872            "UserDataDownloaded",
21873            std::mem::size_of::<UserDataDownloadedEvent>(),
21874        ),
21875        (
21876            "RagdollDissolved",
21877            std::mem::size_of::<RagdollDissolvedEvent>(),
21878        ),
21879        (
21880            "HLTVChangedMode",
21881            std::mem::size_of::<HLTVChangedModeEvent>(),
21882        ),
21883        (
21884            "HLTVChangedTarget",
21885            std::mem::size_of::<HLTVChangedTargetEvent>(),
21886        ),
21887        ("VoteEnded", std::mem::size_of::<VoteEndedEvent>()),
21888        ("VoteStarted", std::mem::size_of::<VoteStartedEvent>()),
21889        ("VoteChanged", std::mem::size_of::<VoteChangedEvent>()),
21890        ("VotePassed", std::mem::size_of::<VotePassedEvent>()),
21891        ("VoteFailed", std::mem::size_of::<VoteFailedEvent>()),
21892        ("VoteCast", std::mem::size_of::<VoteCastEvent>()),
21893        ("VoteOptions", std::mem::size_of::<VoteOptionsEvent>()),
21894        ("ReplaySaved", std::mem::size_of::<ReplaySavedEvent>()),
21895        (
21896            "EnteredPerformanceMode",
21897            std::mem::size_of::<EnteredPerformanceModeEvent>(),
21898        ),
21899        ("BrowseReplays", std::mem::size_of::<BrowseReplaysEvent>()),
21900        (
21901            "ReplayYoutubeStats",
21902            std::mem::size_of::<ReplayYoutubeStatsEvent>(),
21903        ),
21904        (
21905            "InventoryUpdated",
21906            std::mem::size_of::<InventoryUpdatedEvent>(),
21907        ),
21908        ("CartUpdated", std::mem::size_of::<CartUpdatedEvent>()),
21909        (
21910            "StorePriceSheetUpdated",
21911            std::mem::size_of::<StorePriceSheetUpdatedEvent>(),
21912        ),
21913        (
21914            "EconInventoryConnected",
21915            std::mem::size_of::<EconInventoryConnectedEvent>(),
21916        ),
21917        (
21918            "ItemSchemaInitialized",
21919            std::mem::size_of::<ItemSchemaInitializedEvent>(),
21920        ),
21921        ("GcNewSession", std::mem::size_of::<GcNewSessionEvent>()),
21922        ("GcLostSession", std::mem::size_of::<GcLostSessionEvent>()),
21923        ("IntroFinish", std::mem::size_of::<IntroFinishEvent>()),
21924        (
21925            "IntroNextCamera",
21926            std::mem::size_of::<IntroNextCameraEvent>(),
21927        ),
21928        (
21929            "PlayerChangeClass",
21930            std::mem::size_of::<PlayerChangeClassEvent>(),
21931        ),
21932        (
21933            "TfMapTimeRemaining",
21934            std::mem::size_of::<TfMapTimeRemainingEvent>(),
21935        ),
21936        ("TfGameOver", std::mem::size_of::<TfGameOverEvent>()),
21937        (
21938            "CtfFlagCaptured",
21939            std::mem::size_of::<CtfFlagCapturedEvent>(),
21940        ),
21941        (
21942            "ControlPointInitialized",
21943            std::mem::size_of::<ControlPointInitializedEvent>(),
21944        ),
21945        (
21946            "ControlPointUpdateImages",
21947            std::mem::size_of::<ControlPointUpdateImagesEvent>(),
21948        ),
21949        (
21950            "ControlPointUpdateLayout",
21951            std::mem::size_of::<ControlPointUpdateLayoutEvent>(),
21952        ),
21953        (
21954            "ControlPointUpdateCapping",
21955            std::mem::size_of::<ControlPointUpdateCappingEvent>(),
21956        ),
21957        (
21958            "ControlPointUpdateOwner",
21959            std::mem::size_of::<ControlPointUpdateOwnerEvent>(),
21960        ),
21961        (
21962            "ControlPointStartTouch",
21963            std::mem::size_of::<ControlPointStartTouchEvent>(),
21964        ),
21965        (
21966            "ControlPointEndTouch",
21967            std::mem::size_of::<ControlPointEndTouchEvent>(),
21968        ),
21969        (
21970            "ControlPointPulseElement",
21971            std::mem::size_of::<ControlPointPulseElementEvent>(),
21972        ),
21973        (
21974            "ControlPointFakeCapture",
21975            std::mem::size_of::<ControlPointFakeCaptureEvent>(),
21976        ),
21977        (
21978            "ControlPointFakeCaptureMultiplier",
21979            std::mem::size_of::<ControlPointFakeCaptureMultiplierEvent>(),
21980        ),
21981        (
21982            "TeamPlayRoundSelected",
21983            std::mem::size_of::<TeamPlayRoundSelectedEvent>(),
21984        ),
21985        (
21986            "TeamPlayRoundStart",
21987            std::mem::size_of::<TeamPlayRoundStartEvent>(),
21988        ),
21989        (
21990            "TeamPlayRoundActive",
21991            std::mem::size_of::<TeamPlayRoundActiveEvent>(),
21992        ),
21993        (
21994            "TeamPlayWaitingBegins",
21995            std::mem::size_of::<TeamPlayWaitingBeginsEvent>(),
21996        ),
21997        (
21998            "TeamPlayWaitingEnds",
21999            std::mem::size_of::<TeamPlayWaitingEndsEvent>(),
22000        ),
22001        (
22002            "TeamPlayWaitingAboutToEnd",
22003            std::mem::size_of::<TeamPlayWaitingAboutToEndEvent>(),
22004        ),
22005        (
22006            "TeamPlayRestartRound",
22007            std::mem::size_of::<TeamPlayRestartRoundEvent>(),
22008        ),
22009        (
22010            "TeamPlayReadyRestart",
22011            std::mem::size_of::<TeamPlayReadyRestartEvent>(),
22012        ),
22013        (
22014            "TeamPlayRoundRestartSeconds",
22015            std::mem::size_of::<TeamPlayRoundRestartSecondsEvent>(),
22016        ),
22017        (
22018            "TeamPlayTeamReady",
22019            std::mem::size_of::<TeamPlayTeamReadyEvent>(),
22020        ),
22021        (
22022            "TeamPlayRoundWin",
22023            std::mem::size_of::<TeamPlayRoundWinEvent>(),
22024        ),
22025        (
22026            "TeamPlayUpdateTimer",
22027            std::mem::size_of::<TeamPlayUpdateTimerEvent>(),
22028        ),
22029        (
22030            "TeamPlayRoundStalemate",
22031            std::mem::size_of::<TeamPlayRoundStalemateEvent>(),
22032        ),
22033        (
22034            "TeamPlayOvertimeBegin",
22035            std::mem::size_of::<TeamPlayOvertimeBeginEvent>(),
22036        ),
22037        (
22038            "TeamPlayOvertimeEnd",
22039            std::mem::size_of::<TeamPlayOvertimeEndEvent>(),
22040        ),
22041        (
22042            "TeamPlaySuddenDeathBegin",
22043            std::mem::size_of::<TeamPlaySuddenDeathBeginEvent>(),
22044        ),
22045        (
22046            "TeamPlaySuddenDeathEnd",
22047            std::mem::size_of::<TeamPlaySuddenDeathEndEvent>(),
22048        ),
22049        (
22050            "TeamPlayGameOver",
22051            std::mem::size_of::<TeamPlayGameOverEvent>(),
22052        ),
22053        (
22054            "TeamPlayMapTimeRemaining",
22055            std::mem::size_of::<TeamPlayMapTimeRemainingEvent>(),
22056        ),
22057        (
22058            "TeamPlayTimerFlash",
22059            std::mem::size_of::<TeamPlayTimerFlashEvent>(),
22060        ),
22061        (
22062            "TeamPlayTimerTimeAdded",
22063            std::mem::size_of::<TeamPlayTimerTimeAddedEvent>(),
22064        ),
22065        (
22066            "TeamPlayPointStartCapture",
22067            std::mem::size_of::<TeamPlayPointStartCaptureEvent>(),
22068        ),
22069        (
22070            "TeamPlayPointCaptured",
22071            std::mem::size_of::<TeamPlayPointCapturedEvent>(),
22072        ),
22073        (
22074            "TeamPlayPointLocked",
22075            std::mem::size_of::<TeamPlayPointLockedEvent>(),
22076        ),
22077        (
22078            "TeamPlayPointUnlocked",
22079            std::mem::size_of::<TeamPlayPointUnlockedEvent>(),
22080        ),
22081        (
22082            "TeamPlayCaptureBroken",
22083            std::mem::size_of::<TeamPlayCaptureBrokenEvent>(),
22084        ),
22085        (
22086            "TeamPlayCaptureBlocked",
22087            std::mem::size_of::<TeamPlayCaptureBlockedEvent>(),
22088        ),
22089        (
22090            "TeamPlayFlagEvent",
22091            std::mem::size_of::<TeamPlayFlagEventEvent>(),
22092        ),
22093        (
22094            "TeamPlayWinPanel",
22095            std::mem::size_of::<TeamPlayWinPanelEvent>(),
22096        ),
22097        (
22098            "TeamPlayTeamBalancedPlayer",
22099            std::mem::size_of::<TeamPlayTeamBalancedPlayerEvent>(),
22100        ),
22101        (
22102            "TeamPlaySetupFinished",
22103            std::mem::size_of::<TeamPlaySetupFinishedEvent>(),
22104        ),
22105        ("TeamPlayAlert", std::mem::size_of::<TeamPlayAlertEvent>()),
22106        (
22107            "TrainingComplete",
22108            std::mem::size_of::<TrainingCompleteEvent>(),
22109        ),
22110        (
22111            "ShowFreezePanel",
22112            std::mem::size_of::<ShowFreezePanelEvent>(),
22113        ),
22114        (
22115            "HideFreezePanel",
22116            std::mem::size_of::<HideFreezePanelEvent>(),
22117        ),
22118        (
22119            "FreezeCamStarted",
22120            std::mem::size_of::<FreezeCamStartedEvent>(),
22121        ),
22122        (
22123            "LocalPlayerChangeTeam",
22124            std::mem::size_of::<LocalPlayerChangeTeamEvent>(),
22125        ),
22126        (
22127            "LocalPlayerScoreChanged",
22128            std::mem::size_of::<LocalPlayerScoreChangedEvent>(),
22129        ),
22130        (
22131            "LocalPlayerChangeClass",
22132            std::mem::size_of::<LocalPlayerChangeClassEvent>(),
22133        ),
22134        (
22135            "LocalPlayerRespawn",
22136            std::mem::size_of::<LocalPlayerRespawnEvent>(),
22137        ),
22138        (
22139            "BuildingInfoChanged",
22140            std::mem::size_of::<BuildingInfoChangedEvent>(),
22141        ),
22142        (
22143            "LocalPlayerChangeDisguise",
22144            std::mem::size_of::<LocalPlayerChangeDisguiseEvent>(),
22145        ),
22146        (
22147            "PlayerAccountChanged",
22148            std::mem::size_of::<PlayerAccountChangedEvent>(),
22149        ),
22150        ("SpyPdaReset", std::mem::size_of::<SpyPdaResetEvent>()),
22151        (
22152            "FlagStatusUpdate",
22153            std::mem::size_of::<FlagStatusUpdateEvent>(),
22154        ),
22155        (
22156            "PlayerStatsUpdated",
22157            std::mem::size_of::<PlayerStatsUpdatedEvent>(),
22158        ),
22159        (
22160            "PlayingCommentary",
22161            std::mem::size_of::<PlayingCommentaryEvent>(),
22162        ),
22163        (
22164            "PlayerChargeDeployed",
22165            std::mem::size_of::<PlayerChargeDeployedEvent>(),
22166        ),
22167        (
22168            "PlayerBuiltObject",
22169            std::mem::size_of::<PlayerBuiltObjectEvent>(),
22170        ),
22171        (
22172            "PlayerUpgradedObject",
22173            std::mem::size_of::<PlayerUpgradedObjectEvent>(),
22174        ),
22175        (
22176            "PlayerCarryObject",
22177            std::mem::size_of::<PlayerCarryObjectEvent>(),
22178        ),
22179        (
22180            "PlayerDropObject",
22181            std::mem::size_of::<PlayerDropObjectEvent>(),
22182        ),
22183        ("ObjectRemoved", std::mem::size_of::<ObjectRemovedEvent>()),
22184        (
22185            "ObjectDestroyed",
22186            std::mem::size_of::<ObjectDestroyedEvent>(),
22187        ),
22188        (
22189            "ObjectDetonated",
22190            std::mem::size_of::<ObjectDetonatedEvent>(),
22191        ),
22192        (
22193            "AchievementEarned",
22194            std::mem::size_of::<AchievementEarnedEvent>(),
22195        ),
22196        (
22197            "SpecTargetUpdated",
22198            std::mem::size_of::<SpecTargetUpdatedEvent>(),
22199        ),
22200        (
22201            "TournamentStateUpdate",
22202            std::mem::size_of::<TournamentStateUpdateEvent>(),
22203        ),
22204        (
22205            "TournamentEnableCountdown",
22206            std::mem::size_of::<TournamentEnableCountdownEvent>(),
22207        ),
22208        (
22209            "PlayerCalledForMedic",
22210            std::mem::size_of::<PlayerCalledForMedicEvent>(),
22211        ),
22212        (
22213            "PlayerAskedForBall",
22214            std::mem::size_of::<PlayerAskedForBallEvent>(),
22215        ),
22216        (
22217            "LocalPlayerBecameObserver",
22218            std::mem::size_of::<LocalPlayerBecameObserverEvent>(),
22219        ),
22220        (
22221            "PlayerIgnitedInv",
22222            std::mem::size_of::<PlayerIgnitedInvEvent>(),
22223        ),
22224        ("PlayerIgnited", std::mem::size_of::<PlayerIgnitedEvent>()),
22225        (
22226            "PlayerExtinguished",
22227            std::mem::size_of::<PlayerExtinguishedEvent>(),
22228        ),
22229        (
22230            "PlayerTeleported",
22231            std::mem::size_of::<PlayerTeleportedEvent>(),
22232        ),
22233        (
22234            "PlayerHealedMedicCall",
22235            std::mem::size_of::<PlayerHealedMedicCallEvent>(),
22236        ),
22237        (
22238            "LocalPlayerChargeReady",
22239            std::mem::size_of::<LocalPlayerChargeReadyEvent>(),
22240        ),
22241        (
22242            "LocalPlayerWindDown",
22243            std::mem::size_of::<LocalPlayerWindDownEvent>(),
22244        ),
22245        ("PlayerInvulned", std::mem::size_of::<PlayerInvulnedEvent>()),
22246        ("EscortSpeed", std::mem::size_of::<EscortSpeedEvent>()),
22247        ("EscortProgress", std::mem::size_of::<EscortProgressEvent>()),
22248        ("EscortRecede", std::mem::size_of::<EscortRecedeEvent>()),
22249        (
22250            "GameUIActivated",
22251            std::mem::size_of::<GameUIActivatedEvent>(),
22252        ),
22253        ("GameUIHidden", std::mem::size_of::<GameUIHiddenEvent>()),
22254        (
22255            "PlayerEscortScore",
22256            std::mem::size_of::<PlayerEscortScoreEvent>(),
22257        ),
22258        (
22259            "PlayerHealOnHit",
22260            std::mem::size_of::<PlayerHealOnHitEvent>(),
22261        ),
22262        (
22263            "PlayerStealSandvich",
22264            std::mem::size_of::<PlayerStealSandvichEvent>(),
22265        ),
22266        (
22267            "ShowClassLayout",
22268            std::mem::size_of::<ShowClassLayoutEvent>(),
22269        ),
22270        ("ShowVsPanel", std::mem::size_of::<ShowVsPanelEvent>()),
22271        ("PlayerDamaged", std::mem::size_of::<PlayerDamagedEvent>()),
22272        (
22273            "ArenaPlayerNotification",
22274            std::mem::size_of::<ArenaPlayerNotificationEvent>(),
22275        ),
22276        (
22277            "ArenaMatchMaxStreak",
22278            std::mem::size_of::<ArenaMatchMaxStreakEvent>(),
22279        ),
22280        (
22281            "ArenaRoundStart",
22282            std::mem::size_of::<ArenaRoundStartEvent>(),
22283        ),
22284        ("ArenaWinPanel", std::mem::size_of::<ArenaWinPanelEvent>()),
22285        ("PveWinPanel", std::mem::size_of::<PveWinPanelEvent>()),
22286        ("AirDash", std::mem::size_of::<AirDashEvent>()),
22287        ("Landed", std::mem::size_of::<LandedEvent>()),
22288        (
22289            "PlayerDamageDodged",
22290            std::mem::size_of::<PlayerDamageDodgedEvent>(),
22291        ),
22292        ("PlayerStunned", std::mem::size_of::<PlayerStunnedEvent>()),
22293        ("ScoutGrandSlam", std::mem::size_of::<ScoutGrandSlamEvent>()),
22294        (
22295            "ScoutSlamdollLanded",
22296            std::mem::size_of::<ScoutSlamdollLandedEvent>(),
22297        ),
22298        ("ArrowImpact", std::mem::size_of::<ArrowImpactEvent>()),
22299        ("PlayerJarated", std::mem::size_of::<PlayerJaratedEvent>()),
22300        (
22301            "PlayerJaratedFade",
22302            std::mem::size_of::<PlayerJaratedFadeEvent>(),
22303        ),
22304        (
22305            "PlayerShieldBlocked",
22306            std::mem::size_of::<PlayerShieldBlockedEvent>(),
22307        ),
22308        ("PlayerPinned", std::mem::size_of::<PlayerPinnedEvent>()),
22309        (
22310            "PlayerHealedByMedic",
22311            std::mem::size_of::<PlayerHealedByMedicEvent>(),
22312        ),
22313        (
22314            "PlayerSappedObject",
22315            std::mem::size_of::<PlayerSappedObjectEvent>(),
22316        ),
22317        ("ItemFound", std::mem::size_of::<ItemFoundEvent>()),
22318        ("ShowAnnotation", std::mem::size_of::<ShowAnnotationEvent>()),
22319        ("HideAnnotation", std::mem::size_of::<HideAnnotationEvent>()),
22320        (
22321            "PostInventoryApplication",
22322            std::mem::size_of::<PostInventoryApplicationEvent>(),
22323        ),
22324        (
22325            "ControlPointUnlockUpdated",
22326            std::mem::size_of::<ControlPointUnlockUpdatedEvent>(),
22327        ),
22328        (
22329            "DeployBuffBanner",
22330            std::mem::size_of::<DeployBuffBannerEvent>(),
22331        ),
22332        ("PlayerBuff", std::mem::size_of::<PlayerBuffEvent>()),
22333        ("MedicDeath", std::mem::size_of::<MedicDeathEvent>()),
22334        ("OvertimeNag", std::mem::size_of::<OvertimeNagEvent>()),
22335        ("TeamsChanged", std::mem::size_of::<TeamsChangedEvent>()),
22336        (
22337            "HalloweenPumpkinGrab",
22338            std::mem::size_of::<HalloweenPumpkinGrabEvent>(),
22339        ),
22340        ("RocketJump", std::mem::size_of::<RocketJumpEvent>()),
22341        (
22342            "RocketJumpLanded",
22343            std::mem::size_of::<RocketJumpLandedEvent>(),
22344        ),
22345        ("StickyJump", std::mem::size_of::<StickyJumpEvent>()),
22346        (
22347            "StickyJumpLanded",
22348            std::mem::size_of::<StickyJumpLandedEvent>(),
22349        ),
22350        (
22351            "RocketPackLaunch",
22352            std::mem::size_of::<RocketPackLaunchEvent>(),
22353        ),
22354        (
22355            "RocketPackLanded",
22356            std::mem::size_of::<RocketPackLandedEvent>(),
22357        ),
22358        ("MedicDefended", std::mem::size_of::<MedicDefendedEvent>()),
22359        (
22360            "LocalPlayerHealed",
22361            std::mem::size_of::<LocalPlayerHealedEvent>(),
22362        ),
22363        (
22364            "PlayerDestroyedPipeBomb",
22365            std::mem::size_of::<PlayerDestroyedPipeBombEvent>(),
22366        ),
22367        (
22368            "ObjectDeflected",
22369            std::mem::size_of::<ObjectDeflectedEvent>(),
22370        ),
22371        ("PlayerMvp", std::mem::size_of::<PlayerMvpEvent>()),
22372        ("RaidSpawnMob", std::mem::size_of::<RaidSpawnMobEvent>()),
22373        ("RaidSpawnSquad", std::mem::size_of::<RaidSpawnSquadEvent>()),
22374        ("NavBlocked", std::mem::size_of::<NavBlockedEvent>()),
22375        (
22376            "PathTrackPassed",
22377            std::mem::size_of::<PathTrackPassedEvent>(),
22378        ),
22379        (
22380            "NumCappersChanged",
22381            std::mem::size_of::<NumCappersChangedEvent>(),
22382        ),
22383        (
22384            "PlayerRegenerate",
22385            std::mem::size_of::<PlayerRegenerateEvent>(),
22386        ),
22387        (
22388            "UpdateStatusItem",
22389            std::mem::size_of::<UpdateStatusItemEvent>(),
22390        ),
22391        (
22392            "StatsResetRound",
22393            std::mem::size_of::<StatsResetRoundEvent>(),
22394        ),
22395        (
22396            "ScoreStatsAccumulatedUpdate",
22397            std::mem::size_of::<ScoreStatsAccumulatedUpdateEvent>(),
22398        ),
22399        (
22400            "ScoreStatsAccumulatedReset",
22401            std::mem::size_of::<ScoreStatsAccumulatedResetEvent>(),
22402        ),
22403        (
22404            "AchievementEarnedLocal",
22405            std::mem::size_of::<AchievementEarnedLocalEvent>(),
22406        ),
22407        ("PlayerHealed", std::mem::size_of::<PlayerHealedEvent>()),
22408        ("BuildingHealed", std::mem::size_of::<BuildingHealedEvent>()),
22409        ("ItemPickup", std::mem::size_of::<ItemPickupEvent>()),
22410        ("DuelStatus", std::mem::size_of::<DuelStatusEvent>()),
22411        ("FishNotice", std::mem::size_of::<FishNoticeEvent>()),
22412        ("FishNoticeArm", std::mem::size_of::<FishNoticeArmEvent>()),
22413        ("SlapNotice", std::mem::size_of::<SlapNoticeEvent>()),
22414        ("ThrowableHit", std::mem::size_of::<ThrowableHitEvent>()),
22415        (
22416            "PumpkinLordSummoned",
22417            std::mem::size_of::<PumpkinLordSummonedEvent>(),
22418        ),
22419        (
22420            "PumpkinLordKilled",
22421            std::mem::size_of::<PumpkinLordKilledEvent>(),
22422        ),
22423        (
22424            "MerasmusSummoned",
22425            std::mem::size_of::<MerasmusSummonedEvent>(),
22426        ),
22427        ("MerasmusKilled", std::mem::size_of::<MerasmusKilledEvent>()),
22428        (
22429            "MerasmusEscapeWarning",
22430            std::mem::size_of::<MerasmusEscapeWarningEvent>(),
22431        ),
22432        (
22433            "MerasmusEscaped",
22434            std::mem::size_of::<MerasmusEscapedEvent>(),
22435        ),
22436        (
22437            "EyeballBossSummoned",
22438            std::mem::size_of::<EyeballBossSummonedEvent>(),
22439        ),
22440        (
22441            "EyeballBossStunned",
22442            std::mem::size_of::<EyeballBossStunnedEvent>(),
22443        ),
22444        (
22445            "EyeballBossKilled",
22446            std::mem::size_of::<EyeballBossKilledEvent>(),
22447        ),
22448        (
22449            "EyeballBossKiller",
22450            std::mem::size_of::<EyeballBossKillerEvent>(),
22451        ),
22452        (
22453            "EyeballBossEscapeImminent",
22454            std::mem::size_of::<EyeballBossEscapeImminentEvent>(),
22455        ),
22456        (
22457            "EyeballBossEscaped",
22458            std::mem::size_of::<EyeballBossEscapedEvent>(),
22459        ),
22460        ("NpcHurt", std::mem::size_of::<NpcHurtEvent>()),
22461        (
22462            "ControlPointTimerUpdated",
22463            std::mem::size_of::<ControlPointTimerUpdatedEvent>(),
22464        ),
22465        (
22466            "PlayerHighFiveStart",
22467            std::mem::size_of::<PlayerHighFiveStartEvent>(),
22468        ),
22469        (
22470            "PlayerHighFiveCancel",
22471            std::mem::size_of::<PlayerHighFiveCancelEvent>(),
22472        ),
22473        (
22474            "PlayerHighFiveSuccess",
22475            std::mem::size_of::<PlayerHighFiveSuccessEvent>(),
22476        ),
22477        (
22478            "PlayerBonusPoints",
22479            std::mem::size_of::<PlayerBonusPointsEvent>(),
22480        ),
22481        ("PlayerUpgraded", std::mem::size_of::<PlayerUpgradedEvent>()),
22482        ("PlayerBuyback", std::mem::size_of::<PlayerBuybackEvent>()),
22483        (
22484            "PlayerUsedPowerUpBottle",
22485            std::mem::size_of::<PlayerUsedPowerUpBottleEvent>(),
22486        ),
22487        (
22488            "ChristmasGiftGrab",
22489            std::mem::size_of::<ChristmasGiftGrabEvent>(),
22490        ),
22491        (
22492            "PlayerKilledAchievementZone",
22493            std::mem::size_of::<PlayerKilledAchievementZoneEvent>(),
22494        ),
22495        ("PartyUpdated", std::mem::size_of::<PartyUpdatedEvent>()),
22496        (
22497            "PartyPrefChanged",
22498            std::mem::size_of::<PartyPrefChangedEvent>(),
22499        ),
22500        (
22501            "PartyCriteriaChanged",
22502            std::mem::size_of::<PartyCriteriaChangedEvent>(),
22503        ),
22504        (
22505            "PartyInvitesChanged",
22506            std::mem::size_of::<PartyInvitesChangedEvent>(),
22507        ),
22508        (
22509            "PartyQueueStateChanged",
22510            std::mem::size_of::<PartyQueueStateChangedEvent>(),
22511        ),
22512        ("PartyChat", std::mem::size_of::<PartyChatEvent>()),
22513        (
22514            "PartyMemberJoin",
22515            std::mem::size_of::<PartyMemberJoinEvent>(),
22516        ),
22517        (
22518            "PartyMemberLeave",
22519            std::mem::size_of::<PartyMemberLeaveEvent>(),
22520        ),
22521        (
22522            "MatchInvitesUpdated",
22523            std::mem::size_of::<MatchInvitesUpdatedEvent>(),
22524        ),
22525        ("LobbyUpdated", std::mem::size_of::<LobbyUpdatedEvent>()),
22526        (
22527            "MvmMissionUpdate",
22528            std::mem::size_of::<MvmMissionUpdateEvent>(),
22529        ),
22530        (
22531            "RecalculateHolidays",
22532            std::mem::size_of::<RecalculateHolidaysEvent>(),
22533        ),
22534        (
22535            "PlayerCurrencyChanged",
22536            std::mem::size_of::<PlayerCurrencyChangedEvent>(),
22537        ),
22538        (
22539            "DoomsdayRocketOpen",
22540            std::mem::size_of::<DoomsdayRocketOpenEvent>(),
22541        ),
22542        (
22543            "RemoveNemesisRelationships",
22544            std::mem::size_of::<RemoveNemesisRelationshipsEvent>(),
22545        ),
22546        (
22547            "MvmCreditBonusWave",
22548            std::mem::size_of::<MvmCreditBonusWaveEvent>(),
22549        ),
22550        (
22551            "MvmCreditBonusAll",
22552            std::mem::size_of::<MvmCreditBonusAllEvent>(),
22553        ),
22554        (
22555            "MvmCreditBonusAllAdvanced",
22556            std::mem::size_of::<MvmCreditBonusAllAdvancedEvent>(),
22557        ),
22558        (
22559            "MvmQuickSentryUpgrade",
22560            std::mem::size_of::<MvmQuickSentryUpgradeEvent>(),
22561        ),
22562        (
22563            "MvmTankDestroyedByPlayers",
22564            std::mem::size_of::<MvmTankDestroyedByPlayersEvent>(),
22565        ),
22566        (
22567            "MvmKillRobotDeliveringBomb",
22568            std::mem::size_of::<MvmKillRobotDeliveringBombEvent>(),
22569        ),
22570        (
22571            "MvmPickupCurrency",
22572            std::mem::size_of::<MvmPickupCurrencyEvent>(),
22573        ),
22574        (
22575            "MvmBombCarrierKilled",
22576            std::mem::size_of::<MvmBombCarrierKilledEvent>(),
22577        ),
22578        (
22579            "MvmSentryBusterDetonate",
22580            std::mem::size_of::<MvmSentryBusterDetonateEvent>(),
22581        ),
22582        (
22583            "MvmScoutMarkedForDeath",
22584            std::mem::size_of::<MvmScoutMarkedForDeathEvent>(),
22585        ),
22586        (
22587            "MvmMedicPowerUpShared",
22588            std::mem::size_of::<MvmMedicPowerUpSharedEvent>(),
22589        ),
22590        ("MvmBeginWave", std::mem::size_of::<MvmBeginWaveEvent>()),
22591        (
22592            "MvmWaveComplete",
22593            std::mem::size_of::<MvmWaveCompleteEvent>(),
22594        ),
22595        (
22596            "MvmMissionComplete",
22597            std::mem::size_of::<MvmMissionCompleteEvent>(),
22598        ),
22599        (
22600            "MvmBombResetByPlayer",
22601            std::mem::size_of::<MvmBombResetByPlayerEvent>(),
22602        ),
22603        (
22604            "MvmBombAlarmTriggered",
22605            std::mem::size_of::<MvmBombAlarmTriggeredEvent>(),
22606        ),
22607        (
22608            "MvmBombDeployResetByPlayer",
22609            std::mem::size_of::<MvmBombDeployResetByPlayerEvent>(),
22610        ),
22611        ("MvmWaveFailed", std::mem::size_of::<MvmWaveFailedEvent>()),
22612        ("MvmResetStats", std::mem::size_of::<MvmResetStatsEvent>()),
22613        ("DamageResisted", std::mem::size_of::<DamageResistedEvent>()),
22614        (
22615            "RevivePlayerNotify",
22616            std::mem::size_of::<RevivePlayerNotifyEvent>(),
22617        ),
22618        (
22619            "RevivePlayerStopped",
22620            std::mem::size_of::<RevivePlayerStoppedEvent>(),
22621        ),
22622        (
22623            "RevivePlayerComplete",
22624            std::mem::size_of::<RevivePlayerCompleteEvent>(),
22625        ),
22626        (
22627            "PlayerTurnedToGhost",
22628            std::mem::size_of::<PlayerTurnedToGhostEvent>(),
22629        ),
22630        (
22631            "MedigunShieldBlockedDamage",
22632            std::mem::size_of::<MedigunShieldBlockedDamageEvent>(),
22633        ),
22634        (
22635            "MvmAdvWaveCompleteNoGates",
22636            std::mem::size_of::<MvmAdvWaveCompleteNoGatesEvent>(),
22637        ),
22638        (
22639            "MvmSniperHeadshotCurrency",
22640            std::mem::size_of::<MvmSniperHeadshotCurrencyEvent>(),
22641        ),
22642        (
22643            "MvmMannhattanPit",
22644            std::mem::size_of::<MvmMannhattanPitEvent>(),
22645        ),
22646        (
22647            "FlagCarriedInDetectionZone",
22648            std::mem::size_of::<FlagCarriedInDetectionZoneEvent>(),
22649        ),
22650        (
22651            "MvmAdvWaveKilledStunRadio",
22652            std::mem::size_of::<MvmAdvWaveKilledStunRadioEvent>(),
22653        ),
22654        (
22655            "PlayerDirectHitStun",
22656            std::mem::size_of::<PlayerDirectHitStunEvent>(),
22657        ),
22658        (
22659            "MvmSentryBusterKilled",
22660            std::mem::size_of::<MvmSentryBusterKilledEvent>(),
22661        ),
22662        (
22663            "UpgradesFileChanged",
22664            std::mem::size_of::<UpgradesFileChangedEvent>(),
22665        ),
22666        (
22667            "RdTeamPointsChanged",
22668            std::mem::size_of::<RdTeamPointsChangedEvent>(),
22669        ),
22670        (
22671            "RdRulesStateChanged",
22672            std::mem::size_of::<RdRulesStateChangedEvent>(),
22673        ),
22674        ("RdRobotKilled", std::mem::size_of::<RdRobotKilledEvent>()),
22675        ("RdRobotImpact", std::mem::size_of::<RdRobotImpactEvent>()),
22676        (
22677            "TeamPlayPreRoundTimeLeft",
22678            std::mem::size_of::<TeamPlayPreRoundTimeLeftEvent>(),
22679        ),
22680        (
22681            "ParachuteDeploy",
22682            std::mem::size_of::<ParachuteDeployEvent>(),
22683        ),
22684        (
22685            "ParachuteHolster",
22686            std::mem::size_of::<ParachuteHolsterEvent>(),
22687        ),
22688        (
22689            "KillRefillsMeter",
22690            std::mem::size_of::<KillRefillsMeterEvent>(),
22691        ),
22692        ("RpsTauntEvent", std::mem::size_of::<RpsTauntEventEvent>()),
22693        ("CongaKill", std::mem::size_of::<CongaKillEvent>()),
22694        (
22695            "PlayerInitialSpawn",
22696            std::mem::size_of::<PlayerInitialSpawnEvent>(),
22697        ),
22698        (
22699            "CompetitiveVictory",
22700            std::mem::size_of::<CompetitiveVictoryEvent>(),
22701        ),
22702        (
22703            "CompetitiveStatsUpdate",
22704            std::mem::size_of::<CompetitiveStatsUpdateEvent>(),
22705        ),
22706        ("MiniGameWin", std::mem::size_of::<MiniGameWinEvent>()),
22707        (
22708            "SentryOnGoActive",
22709            std::mem::size_of::<SentryOnGoActiveEvent>(),
22710        ),
22711        ("DuckXpLevelUp", std::mem::size_of::<DuckXpLevelUpEvent>()),
22712        ("QuestLogOpened", std::mem::size_of::<QuestLogOpenedEvent>()),
22713        ("SchemaUpdated", std::mem::size_of::<SchemaUpdatedEvent>()),
22714        (
22715            "LocalPlayerPickupWeapon",
22716            std::mem::size_of::<LocalPlayerPickupWeaponEvent>(),
22717        ),
22718        (
22719            "RdPlayerScorePoints",
22720            std::mem::size_of::<RdPlayerScorePointsEvent>(),
22721        ),
22722        (
22723            "DemomanDetStickies",
22724            std::mem::size_of::<DemomanDetStickiesEvent>(),
22725        ),
22726        (
22727            "QuestObjectiveCompleted",
22728            std::mem::size_of::<QuestObjectiveCompletedEvent>(),
22729        ),
22730        (
22731            "PlayerScoreChanged",
22732            std::mem::size_of::<PlayerScoreChangedEvent>(),
22733        ),
22734        (
22735            "KilledCappingPlayer",
22736            std::mem::size_of::<KilledCappingPlayerEvent>(),
22737        ),
22738        (
22739            "EnvironmentalDeath",
22740            std::mem::size_of::<EnvironmentalDeathEvent>(),
22741        ),
22742        (
22743            "ProjectileDirectHit",
22744            std::mem::size_of::<ProjectileDirectHitEvent>(),
22745        ),
22746        ("PassGet", std::mem::size_of::<PassGetEvent>()),
22747        ("PassScore", std::mem::size_of::<PassScoreEvent>()),
22748        ("PassFree", std::mem::size_of::<PassFreeEvent>()),
22749        ("PassPassCaught", std::mem::size_of::<PassPassCaughtEvent>()),
22750        ("PassBallStolen", std::mem::size_of::<PassBallStolenEvent>()),
22751        (
22752            "PassBallBlocked",
22753            std::mem::size_of::<PassBallBlockedEvent>(),
22754        ),
22755        (
22756            "DamagePrevented",
22757            std::mem::size_of::<DamagePreventedEvent>(),
22758        ),
22759        (
22760            "HalloweenBossKilled",
22761            std::mem::size_of::<HalloweenBossKilledEvent>(),
22762        ),
22763        (
22764            "EscapedLootIsland",
22765            std::mem::size_of::<EscapedLootIslandEvent>(),
22766        ),
22767        (
22768            "TaggedPlayerAsIt",
22769            std::mem::size_of::<TaggedPlayerAsItEvent>(),
22770        ),
22771        (
22772            "MerasmusStunned",
22773            std::mem::size_of::<MerasmusStunnedEvent>(),
22774        ),
22775        (
22776            "MerasmusPropFound",
22777            std::mem::size_of::<MerasmusPropFoundEvent>(),
22778        ),
22779        (
22780            "HalloweenSkeletonKilled",
22781            std::mem::size_of::<HalloweenSkeletonKilledEvent>(),
22782        ),
22783        (
22784            "SkeletonKilledQuest",
22785            std::mem::size_of::<SkeletonKilledQuestEvent>(),
22786        ),
22787        (
22788            "SkeletonKingKilledQuest",
22789            std::mem::size_of::<SkeletonKingKilledQuestEvent>(),
22790        ),
22791        ("EscapeHell", std::mem::size_of::<EscapeHellEvent>()),
22792        (
22793            "CrossSpectralBridge",
22794            std::mem::size_of::<CrossSpectralBridgeEvent>(),
22795        ),
22796        ("MiniGameWon", std::mem::size_of::<MiniGameWonEvent>()),
22797        ("RespawnGhost", std::mem::size_of::<RespawnGhostEvent>()),
22798        ("KillInHell", std::mem::size_of::<KillInHellEvent>()),
22799        (
22800            "HalloweenDuckCollected",
22801            std::mem::size_of::<HalloweenDuckCollectedEvent>(),
22802        ),
22803        ("SpecialScore", std::mem::size_of::<SpecialScoreEvent>()),
22804        (
22805            "TeamLeaderKilled",
22806            std::mem::size_of::<TeamLeaderKilledEvent>(),
22807        ),
22808        (
22809            "HalloweenSoulCollected",
22810            std::mem::size_of::<HalloweenSoulCollectedEvent>(),
22811        ),
22812        (
22813            "RecalculateTruce",
22814            std::mem::size_of::<RecalculateTruceEvent>(),
22815        ),
22816        (
22817            "DeadRingerCheatDeath",
22818            std::mem::size_of::<DeadRingerCheatDeathEvent>(),
22819        ),
22820        ("CrossbowHeal", std::mem::size_of::<CrossbowHealEvent>()),
22821        (
22822            "DamageMitigated",
22823            std::mem::size_of::<DamageMitigatedEvent>(),
22824        ),
22825        ("PayloadPushed", std::mem::size_of::<PayloadPushedEvent>()),
22826        (
22827            "PlayerAbandonedMatch",
22828            std::mem::size_of::<PlayerAbandonedMatchEvent>(),
22829        ),
22830        ("ClDrawline", std::mem::size_of::<ClDrawlineEvent>()),
22831        (
22832            "RestartTimerTime",
22833            std::mem::size_of::<RestartTimerTimeEvent>(),
22834        ),
22835        (
22836            "WinLimitChanged",
22837            std::mem::size_of::<WinLimitChangedEvent>(),
22838        ),
22839        (
22840            "WinPanelShowScores",
22841            std::mem::size_of::<WinPanelShowScoresEvent>(),
22842        ),
22843        (
22844            "TopStreamsRequestFinished",
22845            std::mem::size_of::<TopStreamsRequestFinishedEvent>(),
22846        ),
22847        (
22848            "CompetitiveStateChanged",
22849            std::mem::size_of::<CompetitiveStateChangedEvent>(),
22850        ),
22851        (
22852            "GlobalWarDataUpdated",
22853            std::mem::size_of::<GlobalWarDataUpdatedEvent>(),
22854        ),
22855        (
22856            "StopWatchChanged",
22857            std::mem::size_of::<StopWatchChangedEvent>(),
22858        ),
22859        ("DsStop", std::mem::size_of::<DsStopEvent>()),
22860        ("DsScreenshot", std::mem::size_of::<DsScreenshotEvent>()),
22861        (
22862            "ShowMatchSummary",
22863            std::mem::size_of::<ShowMatchSummaryEvent>(),
22864        ),
22865        (
22866            "ExperienceChanged",
22867            std::mem::size_of::<ExperienceChangedEvent>(),
22868        ),
22869        ("BeginXpLerp", std::mem::size_of::<BeginXpLerpEvent>()),
22870        (
22871            "MatchmakerStatsUpdated",
22872            std::mem::size_of::<MatchmakerStatsUpdatedEvent>(),
22873        ),
22874        (
22875            "RematchVotePeriodOver",
22876            std::mem::size_of::<RematchVotePeriodOverEvent>(),
22877        ),
22878        (
22879            "RematchFailedToCreate",
22880            std::mem::size_of::<RematchFailedToCreateEvent>(),
22881        ),
22882        (
22883            "PlayerRematchChange",
22884            std::mem::size_of::<PlayerRematchChangeEvent>(),
22885        ),
22886        ("PingUpdated", std::mem::size_of::<PingUpdatedEvent>()),
22887        ("MMStatsUpdated", std::mem::size_of::<MMStatsUpdatedEvent>()),
22888        (
22889            "PlayerNextMapVoteChange",
22890            std::mem::size_of::<PlayerNextMapVoteChangeEvent>(),
22891        ),
22892        (
22893            "VoteMapsChanged",
22894            std::mem::size_of::<VoteMapsChangedEvent>(),
22895        ),
22896        (
22897            "ProtoDefChanged",
22898            std::mem::size_of::<ProtoDefChangedEvent>(),
22899        ),
22900        (
22901            "PlayerDomination",
22902            std::mem::size_of::<PlayerDominationEvent>(),
22903        ),
22904        (
22905            "PlayerRocketPackPushed",
22906            std::mem::size_of::<PlayerRocketPackPushedEvent>(),
22907        ),
22908        ("QuestRequest", std::mem::size_of::<QuestRequestEvent>()),
22909        ("QuestResponse", std::mem::size_of::<QuestResponseEvent>()),
22910        ("QuestProgress", std::mem::size_of::<QuestProgressEvent>()),
22911        (
22912            "ProjectileRemoved",
22913            std::mem::size_of::<ProjectileRemovedEvent>(),
22914        ),
22915        (
22916            "QuestMapDataChanged",
22917            std::mem::size_of::<QuestMapDataChangedEvent>(),
22918        ),
22919        (
22920            "GasDousedPlayerIgnited",
22921            std::mem::size_of::<GasDousedPlayerIgnitedEvent>(),
22922        ),
22923        (
22924            "QuestTurnInState",
22925            std::mem::size_of::<QuestTurnInStateEvent>(),
22926        ),
22927        (
22928            "ItemsAcknowledged",
22929            std::mem::size_of::<ItemsAcknowledgedEvent>(),
22930        ),
22931        ("CapperKilled", std::mem::size_of::<CapperKilledEvent>()),
22932        (
22933            "MainMenuStabilized",
22934            std::mem::size_of::<MainMenuStabilizedEvent>(),
22935        ),
22936        (
22937            "WorldStatusChanged",
22938            std::mem::size_of::<WorldStatusChangedEvent>(),
22939        ),
22940        ("HLTVStatus", std::mem::size_of::<HLTVStatusEvent>()),
22941        ("HLTVCameraman", std::mem::size_of::<HLTVCameramanEvent>()),
22942        ("HLTVRankCamera", std::mem::size_of::<HLTVRankCameraEvent>()),
22943        ("HLTVRankEntity", std::mem::size_of::<HLTVRankEntityEvent>()),
22944        ("HLTVFixed", std::mem::size_of::<HLTVFixedEvent>()),
22945        ("HLTVChase", std::mem::size_of::<HLTVChaseEvent>()),
22946        ("HLTVMessage", std::mem::size_of::<HLTVMessageEvent>()),
22947        ("HLTVTitle", std::mem::size_of::<HLTVTitleEvent>()),
22948        ("HLTVChat", std::mem::size_of::<HLTVChatEvent>()),
22949        (
22950            "ReplayStartRecord",
22951            std::mem::size_of::<ReplayStartRecordEvent>(),
22952        ),
22953        (
22954            "ReplaySessionInfo",
22955            std::mem::size_of::<ReplaySessionInfoEvent>(),
22956        ),
22957        (
22958            "ReplayEndRecord",
22959            std::mem::size_of::<ReplayEndRecordEvent>(),
22960        ),
22961        (
22962            "ReplayReplaysAvailable",
22963            std::mem::size_of::<ReplayReplaysAvailableEvent>(),
22964        ),
22965        (
22966            "ReplayServerError",
22967            std::mem::size_of::<ReplayServerErrorEvent>(),
22968        ),
22969    ]
22970    .iter()
22971    .copied()
22972    .collect()
22973}