1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

gameevent parsing

This commit is contained in:
Robin Appelman 2019-03-02 03:49:57 +01:00
commit bac1159e39
5 changed files with 694 additions and 713 deletions

View file

@ -1,6 +1,7 @@
use std::collections::HashMap;
use crate::{Result, ParseError};
use super::gamevent::{FromGameEventValue, GameEventValue, FromRawGameEvent, RawGameEvent};
use bitstream_reader::BitRead;
/// auto generated
pub struct ServerSpawnEvent {
@ -7643,326 +7644,646 @@ pub enum GameEvent {
ReplayServerError(ReplayServerErrorEvent)
}
#[derive(BitRead, Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[discriminant_bits = 9]
pub enum GameEventType {
ServerSpawn = 0,
ServerShutdown = 1,
ServerCvar = 2,
ServerMessage = 3,
ServerAddBan = 4,
ServerRemoveBan = 5,
PlayerConnect = 6,
PlayerConnectClient = 7,
PlayerInfo = 8,
PlayerDisconnect = 9,
PlayerActivate = 10,
PlayerSay = 11,
ClientDisconnect = 12,
ClientBeginConnect = 13,
ClientConnected = 14,
ClientFullConnect = 15,
HostQuit = 16,
TeamInfo = 17,
TeamScore = 18,
TeamPlayBroadcastAudio = 19,
PlayerTeam = 20,
PlayerClass = 21,
PlayerDeath = 22,
PlayerHurt = 23,
PlayerChat = 24,
PlayerScore = 25,
PlayerSpawn = 26,
PlayerShoot = 27,
PlayerUse = 28,
PlayerChangeName = 29,
PlayerHintMessage = 30,
BasePlayerTeleported = 31,
GameInit = 32,
GameNewMap = 33,
GameStart = 34,
GameEnd = 35,
RoundStart = 36,
RoundEnd = 37,
GameMessage = 38,
BreakBreakable = 39,
BreakProp = 40,
EntityKilled = 41,
BonusUpdated = 42,
AchievementEvent = 43,
AchievementIncrement = 44,
PhysgunPickup = 45,
FlareIgniteNpc = 46,
HelicopterGrenadePuntMiss = 47,
UserDataDownloaded = 48,
RagdollDissolved = 49,
HLTVChangedMode = 50,
HLTVChangedTarget = 51,
VoteEnded = 52,
VoteStarted = 53,
VoteChanged = 54,
VotePassed = 55,
VoteFailed = 56,
VoteCast = 57,
VoteOptions = 58,
ReplaySaved = 59,
EnteredPerformanceMode = 60,
BrowseReplays = 61,
ReplayYoutubeStats = 62,
InventoryUpdated = 63,
CartUpdated = 64,
StorePricesheetUpdated = 65,
GcConnected = 66,
ItemSchemaInitialized = 67,
IntroFinish = 68,
IntroNextCamera = 69,
MmLobbyChat = 70,
MmLobbyMemberJoin = 71,
MmLobbyMemberLeave = 72,
PlayerChangeClass = 73,
TfMapTimeRemaining = 74,
TfGameOver = 75,
CtfFlagCaptured = 76,
ControlPointInitialized = 77,
ControlPointUpdateImages = 78,
ControlPointUpdateLayout = 79,
ControlPointUpdateCapping = 80,
ControlPointUpdateOwner = 81,
ControlPointStartTouch = 82,
ControlPointEndTouch = 83,
ControlPointPulseElement = 84,
ControlPointFakeCapture = 85,
ControlPointFakeCaptureMult = 86,
TeamPlayRoundSelected = 87,
TeamPlayRoundStart = 88,
TeamPlayRoundActive = 89,
TeamPlayWaitingBegins = 90,
TeamPlayWaitingEnds = 91,
TeamPlayWaitingAboutToEnd = 92,
TeamPlayRestartRound = 93,
TeamPlayReadyRestart = 94,
TeamPlayRoundRestartSeconds = 95,
TeamPlayTeamReady = 96,
TeamPlayRoundWin = 97,
TeamPlayUpdateTimer = 98,
TeamPlayRoundStalemate = 99,
TeamPlayOvertimeBegin = 100,
TeamPlayOvertimeEnd = 101,
TeamPlaySuddenDeathBegin = 102,
TeamPlaySuddenDeathEnd = 103,
TeamPlayGameOver = 104,
TeamPlayMapTimeRemaining = 105,
TeamPlayTimerFlash = 106,
TeamPlayTimerTimeAdded = 107,
TeamPlayPointStartCapture = 108,
TeamPlayPointCaptured = 109,
TeamPlayPointLocked = 110,
TeamPlayPointUnlocked = 111,
TeamPlayCaptureBroken = 112,
TeamPlayCaptureBlocked = 113,
TeamPlayFlagEvent = 114,
TeamPlayWinPanel = 115,
TeamPlayTeambalancedPlayer = 116,
TeamPlaySetupFinished = 117,
TeamPlayAlert = 118,
TrainingComplete = 119,
ShowFreezePanel = 120,
HideFreezePanel = 121,
FreezeCamStarted = 122,
LocalPlayerChangeTeam = 123,
LocalPlayerScoreChanged = 124,
LocalPlayerChangeClass = 125,
LocalPlayerRespawn = 126,
BuildingInfoChanged = 127,
LocalPlayerChangeDisguise = 128,
PlayerAccountChanged = 129,
SpyPdaReset = 130,
FlagStatusUpdate = 131,
PlayerStatsUpdated = 132,
PlayingCommentary = 133,
PlayerChargedeployed = 134,
PlayerBuiltObject = 135,
PlayerUpgradedObject = 136,
PlayerCarryObject = 137,
PlayerDropObject = 138,
ObjectRemoved = 139,
ObjectDestroyed = 140,
ObjectDetonated = 141,
AchievementEarned = 142,
SpecTargetUpdated = 143,
TournamentStateUpdate = 144,
TournamentEnableCountdown = 145,
PlayerCalledForMedic = 146,
LocalPlayerBecameObserver = 147,
PlayerIgnitedInv = 148,
PlayerIgnited = 149,
PlayerExtinguished = 150,
PlayerTeleported = 151,
PlayerHealedMedicCall = 152,
LocalPlayerChargeReady = 153,
LocalPlayerWinddown = 154,
PlayerInvulned = 155,
EscortSpeed = 156,
EscortProgress = 157,
EscortRecede = 158,
GameUIActivated = 159,
GameUIHidden = 160,
PlayerEscortScore = 161,
PlayerHealOnHit = 162,
PlayerStealsandvich = 163,
ShowClassLayout = 164,
ShowVsPanel = 165,
PlayerDamaged = 166,
ArenaPlayerNotification = 167,
ArenaMatchMaxStreak = 168,
ArenaRoundStart = 169,
ArenaWinPanel = 170,
PveWinPanel = 171,
AirDash = 172,
Landed = 173,
PlayerDamageDodged = 174,
PlayerStunned = 175,
ScoutGrandSlam = 176,
ScoutSlamdollLanded = 177,
ArrowImpact = 178,
PlayerJarated = 179,
PlayerJaratedFade = 180,
PlayerShieldBlocked = 181,
PlayerPinned = 182,
PlayerHealedByMedic = 183,
PlayerSappedObject = 184,
ItemFound = 185,
ShowAnnotation = 186,
HideAnnotation = 187,
PostInventoryApplication = 188,
ControlPointUnlockUpdated = 189,
DeployBuffBanner = 190,
PlayerBuff = 191,
MedicDeath = 192,
OvertimeNag = 193,
TeamsChanged = 194,
HalloweenPumpkinGrab = 195,
RocketJump = 196,
RocketJumpLanded = 197,
StickyJump = 198,
StickyJumpLanded = 199,
MedicDefended = 200,
LocalPlayerHealed = 201,
PlayerDestroyedPipeBomb = 202,
ObjectDeflected = 203,
PlayerMvp = 204,
RaidSpawnMob = 205,
RaidSpawnSquad = 206,
NavBlocked = 207,
PathTrackPassed = 208,
NumCappersChanged = 209,
PlayerRegenerate = 210,
UpdateStatusItem = 211,
StatsResetRound = 212,
ScoreStatsAccumulatedUpdate = 213,
ScoreStatsAccumulatedReset = 214,
AchievementEarnedLocal = 215,
PlayerHealed = 216,
BuildingHealed = 217,
ItemPickup = 218,
DuelStatus = 219,
FishNotice = 220,
FishNoticeArm = 221,
ThrowableHit = 222,
PumpkinLordSummoned = 223,
PumpkinLordKilled = 224,
MerasmusSummoned = 225,
MerasmusKilled = 226,
MerasmusEscapeWarning = 227,
MerasmusEscaped = 228,
EyeballBossSummoned = 229,
EyeballBossStunned = 230,
EyeballBossKilled = 231,
EyeballBossKiller = 232,
EyeballBossEscapeImminent = 233,
EyeballBossEscaped = 234,
NpcHurt = 235,
ControlPointTimerUpdated = 236,
PlayerHighfiveStart = 237,
PlayerHighfiveCancel = 238,
PlayerHighfiveSuccess = 239,
PlayerBonusPoints = 240,
PlayerUpgraded = 241,
PlayerBuyback = 242,
PlayerUsedPowerUpBottle = 243,
ChristmasGiftGrab = 244,
PlayerKilledAchievementZone = 245,
PartyUpdated = 246,
LobbyUpdated = 247,
MvmMissionUpdate = 248,
RecalculateHolidays = 249,
PlayerCurrencyChanged = 250,
DoomsdayRocketOpen = 251,
RemoveNemesisRelationships = 252,
MvmCreditBonusWave = 253,
MvmCreditBonusAll = 254,
MvmCreditBonusAllAdvanced = 255,
MvmQuickSentryUpgrade = 256,
MvmTankDestroyedByPlayers = 257,
MvmKillRobotDeliveringBomb = 258,
MvmPickupCurrency = 259,
MvmBombCarrierKilled = 260,
MvmSentryBusterDetonate = 261,
MvmScoutMarkedForDeath = 262,
MvmMedicPowerupShared = 263,
MvmBeginWave = 264,
MvmWaveComplete = 265,
MvmMissionComplete = 266,
MvmBombResetByPlayer = 267,
MvmBombAlarmTriggered = 268,
MvmBombDeployResetByPlayer = 269,
MvmWaveFailed = 270,
MvmResetStats = 271,
DamageResisted = 272,
RevivePlayerNotify = 273,
RevivePlayerStopped = 274,
RevivePlayerComplete = 275,
PlayerTurnedToGhost = 276,
MedigunShieldBlockedDamage = 277,
MvmAdvWaveCompleteNoGates = 278,
MvmSniperHeadshotCurrency = 279,
MvmMannhattanPit = 280,
FlagCarriedInDetectionZone = 281,
MvmAdvWaveKilledStunRadio = 282,
PlayerDirecthitStun = 283,
MvmSentryBusterKilled = 284,
UpgradesFileChanged = 285,
RdTeamPointsChanged = 286,
RdRulesStateChanged = 287,
RdRobotKilled = 288,
RdRobotImpact = 289,
TeamPlayPreRoundTimeLeft = 290,
ParachuteDeploy = 291,
ParachuteHolster = 292,
KillRefillsMeter = 293,
RpsTauntEvent = 294,
CongaKill = 295,
PlayerInitialSpawn = 296,
CompetitiveVictory = 297,
CompetitiveSkillratingUpdate = 298,
MiniGameWin = 299,
SentryOnGoActive = 300,
DuckXpLevelUp = 301,
HLTVStatus = 302,
HLTVCameraman = 303,
HLTVRankCamera = 304,
HLTVRankEntity = 305,
HLTVFixed = 306,
HLTVChase = 307,
HLTVMessage = 308,
HLTVTitle = 309,
HLTVChat = 310,
ReplayStartRecord = 311,
ReplaySessionInfo = 312,
ReplayEndRecord = 313,
ReplayReplaysAvailable = 314,
ReplayServerError = 315
}
impl GameEvent {
fn from_raw_event(event: RawGameEvent) -> Result<Self> {
Ok(match event.name.as_str() {
"server_spawn" => GameEvent::ServerSpawn(ServerSpawnEvent::from_raw_event(event.values)?),
"server_shutdown" => GameEvent::ServerShutdown(ServerShutdownEvent::from_raw_event(event.values)?),
"server_cvar" => GameEvent::ServerCvar(ServerCvarEvent::from_raw_event(event.values)?),
"server_message" => GameEvent::ServerMessage(ServerMessageEvent::from_raw_event(event.values)?),
"server_addban" => GameEvent::ServerAddBan(ServerAddBanEvent::from_raw_event(event.values)?),
"server_removeban" => GameEvent::ServerRemoveBan(ServerRemoveBanEvent::from_raw_event(event.values)?),
"player_connect" => GameEvent::PlayerConnect(PlayerConnectEvent::from_raw_event(event.values)?),
"player_connect_client" => GameEvent::PlayerConnectClient(PlayerConnectClientEvent::from_raw_event(event.values)?),
"player_info" => GameEvent::PlayerInfo(PlayerInfoEvent::from_raw_event(event.values)?),
"player_disconnect" => GameEvent::PlayerDisconnect(PlayerDisconnectEvent::from_raw_event(event.values)?),
"player_activate" => GameEvent::PlayerActivate(PlayerActivateEvent::from_raw_event(event.values)?),
"player_say" => GameEvent::PlayerSay(PlayerSayEvent::from_raw_event(event.values)?),
"client_disconnect" => GameEvent::ClientDisconnect(ClientDisconnectEvent::from_raw_event(event.values)?),
"client_beginconnect" => GameEvent::ClientBeginConnect(ClientBeginConnectEvent::from_raw_event(event.values)?),
"client_connected" => GameEvent::ClientConnected(ClientConnectedEvent::from_raw_event(event.values)?),
"client_fullconnect" => GameEvent::ClientFullConnect(ClientFullConnectEvent::from_raw_event(event.values)?),
"host_quit" => GameEvent::HostQuit(HostQuitEvent::from_raw_event(event.values)?),
"team_info" => GameEvent::TeamInfo(TeamInfoEvent::from_raw_event(event.values)?),
"team_score" => GameEvent::TeamScore(TeamScoreEvent::from_raw_event(event.values)?),
"teamplay_broadcast_audio" => GameEvent::TeamPlayBroadcastAudio(TeamPlayBroadcastAudioEvent::from_raw_event(event.values)?),
"player_team" => GameEvent::PlayerTeam(PlayerTeamEvent::from_raw_event(event.values)?),
"player_class" => GameEvent::PlayerClass(PlayerClassEvent::from_raw_event(event.values)?),
"player_death" => GameEvent::PlayerDeath(PlayerDeathEvent::from_raw_event(event.values)?),
"player_hurt" => GameEvent::PlayerHurt(PlayerHurtEvent::from_raw_event(event.values)?),
"player_chat" => GameEvent::PlayerChat(PlayerChatEvent::from_raw_event(event.values)?),
"player_score" => GameEvent::PlayerScore(PlayerScoreEvent::from_raw_event(event.values)?),
"player_spawn" => GameEvent::PlayerSpawn(PlayerSpawnEvent::from_raw_event(event.values)?),
"player_shoot" => GameEvent::PlayerShoot(PlayerShootEvent::from_raw_event(event.values)?),
"player_use" => GameEvent::PlayerUse(PlayerUseEvent::from_raw_event(event.values)?),
"player_changename" => GameEvent::PlayerChangeName(PlayerChangeNameEvent::from_raw_event(event.values)?),
"player_hintmessage" => GameEvent::PlayerHintMessage(PlayerHintMessageEvent::from_raw_event(event.values)?),
"base_player_teleported" => GameEvent::BasePlayerTeleported(BasePlayerTeleportedEvent::from_raw_event(event.values)?),
"game_init" => GameEvent::GameInit(GameInitEvent::from_raw_event(event.values)?),
"game_newmap" => GameEvent::GameNewMap(GameNewMapEvent::from_raw_event(event.values)?),
"game_start" => GameEvent::GameStart(GameStartEvent::from_raw_event(event.values)?),
"game_end" => GameEvent::GameEnd(GameEndEvent::from_raw_event(event.values)?),
"round_start" => GameEvent::RoundStart(RoundStartEvent::from_raw_event(event.values)?),
"round_end" => GameEvent::RoundEnd(RoundEndEvent::from_raw_event(event.values)?),
"game_message" => GameEvent::GameMessage(GameMessageEvent::from_raw_event(event.values)?),
"break_breakable" => GameEvent::BreakBreakable(BreakBreakableEvent::from_raw_event(event.values)?),
"break_prop" => GameEvent::BreakProp(BreakPropEvent::from_raw_event(event.values)?),
"entity_killed" => GameEvent::EntityKilled(EntityKilledEvent::from_raw_event(event.values)?),
"bonus_updated" => GameEvent::BonusUpdated(BonusUpdatedEvent::from_raw_event(event.values)?),
"achievement_event" => GameEvent::AchievementEvent(AchievementEventEvent::from_raw_event(event.values)?),
"achievement_increment" => GameEvent::AchievementIncrement(AchievementIncrementEvent::from_raw_event(event.values)?),
"physgun_pickup" => GameEvent::PhysgunPickup(PhysgunPickupEvent::from_raw_event(event.values)?),
"flare_ignite_npc" => GameEvent::FlareIgniteNpc(FlareIgniteNpcEvent::from_raw_event(event.values)?),
"helicopter_grenade_punt_miss" => GameEvent::HelicopterGrenadePuntMiss(HelicopterGrenadePuntMissEvent::from_raw_event(event.values)?),
"user_data_downloaded" => GameEvent::UserDataDownloaded(UserDataDownloadedEvent::from_raw_event(event.values)?),
"ragdoll_dissolved" => GameEvent::RagdollDissolved(RagdollDissolvedEvent::from_raw_event(event.values)?),
"hltv_changed_mode" => GameEvent::HLTVChangedMode(HLTVChangedModeEvent::from_raw_event(event.values)?),
"hltv_changed_target" => GameEvent::HLTVChangedTarget(HLTVChangedTargetEvent::from_raw_event(event.values)?),
"vote_ended" => GameEvent::VoteEnded(VoteEndedEvent::from_raw_event(event.values)?),
"vote_started" => GameEvent::VoteStarted(VoteStartedEvent::from_raw_event(event.values)?),
"vote_changed" => GameEvent::VoteChanged(VoteChangedEvent::from_raw_event(event.values)?),
"vote_passed" => GameEvent::VotePassed(VotePassedEvent::from_raw_event(event.values)?),
"vote_failed" => GameEvent::VoteFailed(VoteFailedEvent::from_raw_event(event.values)?),
"vote_cast" => GameEvent::VoteCast(VoteCastEvent::from_raw_event(event.values)?),
"vote_options" => GameEvent::VoteOptions(VoteOptionsEvent::from_raw_event(event.values)?),
"replay_saved" => GameEvent::ReplaySaved(ReplaySavedEvent::from_raw_event(event.values)?),
"entered_performance_mode" => GameEvent::EnteredPerformanceMode(EnteredPerformanceModeEvent::from_raw_event(event.values)?),
"browse_replays" => GameEvent::BrowseReplays(BrowseReplaysEvent::from_raw_event(event.values)?),
"replay_youtube_stats" => GameEvent::ReplayYoutubeStats(ReplayYoutubeStatsEvent::from_raw_event(event.values)?),
"inventory_updated" => GameEvent::InventoryUpdated(InventoryUpdatedEvent::from_raw_event(event.values)?),
"cart_updated" => GameEvent::CartUpdated(CartUpdatedEvent::from_raw_event(event.values)?),
"store_pricesheet_updated" => GameEvent::StorePricesheetUpdated(StorePricesheetUpdatedEvent::from_raw_event(event.values)?),
"gc_connected" => GameEvent::GcConnected(GcConnectedEvent::from_raw_event(event.values)?),
"item_schema_initialized" => GameEvent::ItemSchemaInitialized(ItemSchemaInitializedEvent::from_raw_event(event.values)?),
"intro_finish" => GameEvent::IntroFinish(IntroFinishEvent::from_raw_event(event.values)?),
"intro_nextcamera" => GameEvent::IntroNextCamera(IntroNextCameraEvent::from_raw_event(event.values)?),
"mm_lobby_chat" => GameEvent::MmLobbyChat(MmLobbyChatEvent::from_raw_event(event.values)?),
"mm_lobby_member_join" => GameEvent::MmLobbyMemberJoin(MmLobbyMemberJoinEvent::from_raw_event(event.values)?),
"mm_lobby_member_leave" => GameEvent::MmLobbyMemberLeave(MmLobbyMemberLeaveEvent::from_raw_event(event.values)?),
"player_changeclass" => GameEvent::PlayerChangeClass(PlayerChangeClassEvent::from_raw_event(event.values)?),
"tf_map_time_remaining" => GameEvent::TfMapTimeRemaining(TfMapTimeRemainingEvent::from_raw_event(event.values)?),
"tf_game_over" => GameEvent::TfGameOver(TfGameOverEvent::from_raw_event(event.values)?),
"ctf_flag_captured" => GameEvent::CtfFlagCaptured(CtfFlagCapturedEvent::from_raw_event(event.values)?),
"controlpoint_initialized" => GameEvent::ControlPointInitialized(ControlPointInitializedEvent::from_raw_event(event.values)?),
"controlpoint_updateimages" => GameEvent::ControlPointUpdateImages(ControlPointUpdateImagesEvent::from_raw_event(event.values)?),
"controlpoint_updatelayout" => GameEvent::ControlPointUpdateLayout(ControlPointUpdateLayoutEvent::from_raw_event(event.values)?),
"controlpoint_updatecapping" => GameEvent::ControlPointUpdateCapping(ControlPointUpdateCappingEvent::from_raw_event(event.values)?),
"controlpoint_updateowner" => GameEvent::ControlPointUpdateOwner(ControlPointUpdateOwnerEvent::from_raw_event(event.values)?),
"controlpoint_starttouch" => GameEvent::ControlPointStartTouch(ControlPointStartTouchEvent::from_raw_event(event.values)?),
"controlpoint_endtouch" => GameEvent::ControlPointEndTouch(ControlPointEndTouchEvent::from_raw_event(event.values)?),
"controlpoint_pulse_element" => GameEvent::ControlPointPulseElement(ControlPointPulseElementEvent::from_raw_event(event.values)?),
"controlpoint_fake_capture" => GameEvent::ControlPointFakeCapture(ControlPointFakeCaptureEvent::from_raw_event(event.values)?),
"controlpoint_fake_capture_mult" => GameEvent::ControlPointFakeCaptureMult(ControlPointFakeCaptureMultEvent::from_raw_event(event.values)?),
"teamplay_round_selected" => GameEvent::TeamPlayRoundSelected(TeamPlayRoundSelectedEvent::from_raw_event(event.values)?),
"teamplay_round_start" => GameEvent::TeamPlayRoundStart(TeamPlayRoundStartEvent::from_raw_event(event.values)?),
"teamplay_round_active" => GameEvent::TeamPlayRoundActive(TeamPlayRoundActiveEvent::from_raw_event(event.values)?),
"teamplay_waiting_begins" => GameEvent::TeamPlayWaitingBegins(TeamPlayWaitingBeginsEvent::from_raw_event(event.values)?),
"teamplay_waiting_ends" => GameEvent::TeamPlayWaitingEnds(TeamPlayWaitingEndsEvent::from_raw_event(event.values)?),
"teamplay_waiting_abouttoend" => GameEvent::TeamPlayWaitingAboutToEnd(TeamPlayWaitingAboutToEndEvent::from_raw_event(event.values)?),
"teamplay_restart_round" => GameEvent::TeamPlayRestartRound(TeamPlayRestartRoundEvent::from_raw_event(event.values)?),
"teamplay_ready_restart" => GameEvent::TeamPlayReadyRestart(TeamPlayReadyRestartEvent::from_raw_event(event.values)?),
"teamplay_round_restart_seconds" => GameEvent::TeamPlayRoundRestartSeconds(TeamPlayRoundRestartSecondsEvent::from_raw_event(event.values)?),
"teamplay_team_ready" => GameEvent::TeamPlayTeamReady(TeamPlayTeamReadyEvent::from_raw_event(event.values)?),
"teamplay_round_win" => GameEvent::TeamPlayRoundWin(TeamPlayRoundWinEvent::from_raw_event(event.values)?),
"teamplay_update_timer" => GameEvent::TeamPlayUpdateTimer(TeamPlayUpdateTimerEvent::from_raw_event(event.values)?),
"teamplay_round_stalemate" => GameEvent::TeamPlayRoundStalemate(TeamPlayRoundStalemateEvent::from_raw_event(event.values)?),
"teamplay_overtime_begin" => GameEvent::TeamPlayOvertimeBegin(TeamPlayOvertimeBeginEvent::from_raw_event(event.values)?),
"teamplay_overtime_end" => GameEvent::TeamPlayOvertimeEnd(TeamPlayOvertimeEndEvent::from_raw_event(event.values)?),
"teamplay_suddendeath_begin" => GameEvent::TeamPlaySuddenDeathBegin(TeamPlaySuddenDeathBeginEvent::from_raw_event(event.values)?),
"teamplay_suddendeath_end" => GameEvent::TeamPlaySuddenDeathEnd(TeamPlaySuddenDeathEndEvent::from_raw_event(event.values)?),
"teamplay_game_over" => GameEvent::TeamPlayGameOver(TeamPlayGameOverEvent::from_raw_event(event.values)?),
"teamplay_map_time_remaining" => GameEvent::TeamPlayMapTimeRemaining(TeamPlayMapTimeRemainingEvent::from_raw_event(event.values)?),
"teamplay_timer_flash" => GameEvent::TeamPlayTimerFlash(TeamPlayTimerFlashEvent::from_raw_event(event.values)?),
"teamplay_timer_time_added" => GameEvent::TeamPlayTimerTimeAdded(TeamPlayTimerTimeAddedEvent::from_raw_event(event.values)?),
"teamplay_point_startcapture" => GameEvent::TeamPlayPointStartCapture(TeamPlayPointStartCaptureEvent::from_raw_event(event.values)?),
"teamplay_point_captured" => GameEvent::TeamPlayPointCaptured(TeamPlayPointCapturedEvent::from_raw_event(event.values)?),
"teamplay_point_locked" => GameEvent::TeamPlayPointLocked(TeamPlayPointLockedEvent::from_raw_event(event.values)?),
"teamplay_point_unlocked" => GameEvent::TeamPlayPointUnlocked(TeamPlayPointUnlockedEvent::from_raw_event(event.values)?),
"teamplay_capture_broken" => GameEvent::TeamPlayCaptureBroken(TeamPlayCaptureBrokenEvent::from_raw_event(event.values)?),
"teamplay_capture_blocked" => GameEvent::TeamPlayCaptureBlocked(TeamPlayCaptureBlockedEvent::from_raw_event(event.values)?),
"teamplay_flag_event" => GameEvent::TeamPlayFlagEvent(TeamPlayFlagEventEvent::from_raw_event(event.values)?),
"teamplay_win_panel" => GameEvent::TeamPlayWinPanel(TeamPlayWinPanelEvent::from_raw_event(event.values)?),
"teamplay_teambalanced_player" => GameEvent::TeamPlayTeambalancedPlayer(TeamPlayTeambalancedPlayerEvent::from_raw_event(event.values)?),
"teamplay_setup_finished" => GameEvent::TeamPlaySetupFinished(TeamPlaySetupFinishedEvent::from_raw_event(event.values)?),
"teamplay_alert" => GameEvent::TeamPlayAlert(TeamPlayAlertEvent::from_raw_event(event.values)?),
"training_complete" => GameEvent::TrainingComplete(TrainingCompleteEvent::from_raw_event(event.values)?),
"show_freezepanel" => GameEvent::ShowFreezePanel(ShowFreezePanelEvent::from_raw_event(event.values)?),
"hide_freezepanel" => GameEvent::HideFreezePanel(HideFreezePanelEvent::from_raw_event(event.values)?),
"freezecam_started" => GameEvent::FreezeCamStarted(FreezeCamStartedEvent::from_raw_event(event.values)?),
"localplayer_changeteam" => GameEvent::LocalPlayerChangeTeam(LocalPlayerChangeTeamEvent::from_raw_event(event.values)?),
"localplayer_score_changed" => GameEvent::LocalPlayerScoreChanged(LocalPlayerScoreChangedEvent::from_raw_event(event.values)?),
"localplayer_changeclass" => GameEvent::LocalPlayerChangeClass(LocalPlayerChangeClassEvent::from_raw_event(event.values)?),
"localplayer_respawn" => GameEvent::LocalPlayerRespawn(LocalPlayerRespawnEvent::from_raw_event(event.values)?),
"building_info_changed" => GameEvent::BuildingInfoChanged(BuildingInfoChangedEvent::from_raw_event(event.values)?),
"localplayer_changedisguise" => GameEvent::LocalPlayerChangeDisguise(LocalPlayerChangeDisguiseEvent::from_raw_event(event.values)?),
"player_account_changed" => GameEvent::PlayerAccountChanged(PlayerAccountChangedEvent::from_raw_event(event.values)?),
"spy_pda_reset" => GameEvent::SpyPdaReset(SpyPdaResetEvent::from_raw_event(event.values)?),
"flagstatus_update" => GameEvent::FlagStatusUpdate(FlagStatusUpdateEvent::from_raw_event(event.values)?),
"player_stats_updated" => GameEvent::PlayerStatsUpdated(PlayerStatsUpdatedEvent::from_raw_event(event.values)?),
"playing_commentary" => GameEvent::PlayingCommentary(PlayingCommentaryEvent::from_raw_event(event.values)?),
"player_chargedeployed" => GameEvent::PlayerChargedeployed(PlayerChargedeployedEvent::from_raw_event(event.values)?),
"player_builtobject" => GameEvent::PlayerBuiltObject(PlayerBuiltObjectEvent::from_raw_event(event.values)?),
"player_upgradedobject" => GameEvent::PlayerUpgradedObject(PlayerUpgradedObjectEvent::from_raw_event(event.values)?),
"player_carryobject" => GameEvent::PlayerCarryObject(PlayerCarryObjectEvent::from_raw_event(event.values)?),
"player_dropobject" => GameEvent::PlayerDropObject(PlayerDropObjectEvent::from_raw_event(event.values)?),
"object_removed" => GameEvent::ObjectRemoved(ObjectRemovedEvent::from_raw_event(event.values)?),
"object_destroyed" => GameEvent::ObjectDestroyed(ObjectDestroyedEvent::from_raw_event(event.values)?),
"object_detonated" => GameEvent::ObjectDetonated(ObjectDetonatedEvent::from_raw_event(event.values)?),
"achievement_earned" => GameEvent::AchievementEarned(AchievementEarnedEvent::from_raw_event(event.values)?),
"spec_target_updated" => GameEvent::SpecTargetUpdated(SpecTargetUpdatedEvent::from_raw_event(event.values)?),
"tournament_stateupdate" => GameEvent::TournamentStateUpdate(TournamentStateUpdateEvent::from_raw_event(event.values)?),
"tournament_enablecountdown" => GameEvent::TournamentEnableCountdown(TournamentEnableCountdownEvent::from_raw_event(event.values)?),
"player_calledformedic" => GameEvent::PlayerCalledForMedic(PlayerCalledForMedicEvent::from_raw_event(event.values)?),
"localplayer_becameobserver" => GameEvent::LocalPlayerBecameObserver(LocalPlayerBecameObserverEvent::from_raw_event(event.values)?),
"player_ignited_inv" => GameEvent::PlayerIgnitedInv(PlayerIgnitedInvEvent::from_raw_event(event.values)?),
"player_ignited" => GameEvent::PlayerIgnited(PlayerIgnitedEvent::from_raw_event(event.values)?),
"player_extinguished" => GameEvent::PlayerExtinguished(PlayerExtinguishedEvent::from_raw_event(event.values)?),
"player_teleported" => GameEvent::PlayerTeleported(PlayerTeleportedEvent::from_raw_event(event.values)?),
"player_healedmediccall" => GameEvent::PlayerHealedMedicCall(PlayerHealedMedicCallEvent::from_raw_event(event.values)?),
"localplayer_chargeready" => GameEvent::LocalPlayerChargeReady(LocalPlayerChargeReadyEvent::from_raw_event(event.values)?),
"localplayer_winddown" => GameEvent::LocalPlayerWinddown(LocalPlayerWinddownEvent::from_raw_event(event.values)?),
"player_invulned" => GameEvent::PlayerInvulned(PlayerInvulnedEvent::from_raw_event(event.values)?),
"escort_speed" => GameEvent::EscortSpeed(EscortSpeedEvent::from_raw_event(event.values)?),
"escort_progress" => GameEvent::EscortProgress(EscortProgressEvent::from_raw_event(event.values)?),
"escort_recede" => GameEvent::EscortRecede(EscortRecedeEvent::from_raw_event(event.values)?),
"gameui_activated" => GameEvent::GameUIActivated(GameUIActivatedEvent::from_raw_event(event.values)?),
"gameui_hidden" => GameEvent::GameUIHidden(GameUIHiddenEvent::from_raw_event(event.values)?),
"player_escort_score" => GameEvent::PlayerEscortScore(PlayerEscortScoreEvent::from_raw_event(event.values)?),
"player_healonhit" => GameEvent::PlayerHealOnHit(PlayerHealOnHitEvent::from_raw_event(event.values)?),
"player_stealsandvich" => GameEvent::PlayerStealsandvich(PlayerStealsandvichEvent::from_raw_event(event.values)?),
"show_class_layout" => GameEvent::ShowClassLayout(ShowClassLayoutEvent::from_raw_event(event.values)?),
"show_vs_panel" => GameEvent::ShowVsPanel(ShowVsPanelEvent::from_raw_event(event.values)?),
"player_damaged" => GameEvent::PlayerDamaged(PlayerDamagedEvent::from_raw_event(event.values)?),
"arena_player_notification" => GameEvent::ArenaPlayerNotification(ArenaPlayerNotificationEvent::from_raw_event(event.values)?),
"arena_match_maxstreak" => GameEvent::ArenaMatchMaxStreak(ArenaMatchMaxStreakEvent::from_raw_event(event.values)?),
"arena_round_start" => GameEvent::ArenaRoundStart(ArenaRoundStartEvent::from_raw_event(event.values)?),
"arena_win_panel" => GameEvent::ArenaWinPanel(ArenaWinPanelEvent::from_raw_event(event.values)?),
"pve_win_panel" => GameEvent::PveWinPanel(PveWinPanelEvent::from_raw_event(event.values)?),
"air_dash" => GameEvent::AirDash(AirDashEvent::from_raw_event(event.values)?),
"landed" => GameEvent::Landed(LandedEvent::from_raw_event(event.values)?),
"player_damage_dodged" => GameEvent::PlayerDamageDodged(PlayerDamageDodgedEvent::from_raw_event(event.values)?),
"player_stunned" => GameEvent::PlayerStunned(PlayerStunnedEvent::from_raw_event(event.values)?),
"scout_grand_slam" => GameEvent::ScoutGrandSlam(ScoutGrandSlamEvent::from_raw_event(event.values)?),
"scout_slamdoll_landed" => GameEvent::ScoutSlamdollLanded(ScoutSlamdollLandedEvent::from_raw_event(event.values)?),
"arrow_impact" => GameEvent::ArrowImpact(ArrowImpactEvent::from_raw_event(event.values)?),
"player_jarated" => GameEvent::PlayerJarated(PlayerJaratedEvent::from_raw_event(event.values)?),
"player_jarated_fade" => GameEvent::PlayerJaratedFade(PlayerJaratedFadeEvent::from_raw_event(event.values)?),
"player_shield_blocked" => GameEvent::PlayerShieldBlocked(PlayerShieldBlockedEvent::from_raw_event(event.values)?),
"player_pinned" => GameEvent::PlayerPinned(PlayerPinnedEvent::from_raw_event(event.values)?),
"player_healedbymedic" => GameEvent::PlayerHealedByMedic(PlayerHealedByMedicEvent::from_raw_event(event.values)?),
"player_sapped_object" => GameEvent::PlayerSappedObject(PlayerSappedObjectEvent::from_raw_event(event.values)?),
"item_found" => GameEvent::ItemFound(ItemFoundEvent::from_raw_event(event.values)?),
"show_annotation" => GameEvent::ShowAnnotation(ShowAnnotationEvent::from_raw_event(event.values)?),
"hide_annotation" => GameEvent::HideAnnotation(HideAnnotationEvent::from_raw_event(event.values)?),
"post_inventory_application" => GameEvent::PostInventoryApplication(PostInventoryApplicationEvent::from_raw_event(event.values)?),
"controlpoint_unlock_updated" => GameEvent::ControlPointUnlockUpdated(ControlPointUnlockUpdatedEvent::from_raw_event(event.values)?),
"deploy_buff_banner" => GameEvent::DeployBuffBanner(DeployBuffBannerEvent::from_raw_event(event.values)?),
"player_buff" => GameEvent::PlayerBuff(PlayerBuffEvent::from_raw_event(event.values)?),
"medic_death" => GameEvent::MedicDeath(MedicDeathEvent::from_raw_event(event.values)?),
"overtime_nag" => GameEvent::OvertimeNag(OvertimeNagEvent::from_raw_event(event.values)?),
"teams_changed" => GameEvent::TeamsChanged(TeamsChangedEvent::from_raw_event(event.values)?),
"halloween_pumpkin_grab" => GameEvent::HalloweenPumpkinGrab(HalloweenPumpkinGrabEvent::from_raw_event(event.values)?),
"rocket_jump" => GameEvent::RocketJump(RocketJumpEvent::from_raw_event(event.values)?),
"rocket_jump_landed" => GameEvent::RocketJumpLanded(RocketJumpLandedEvent::from_raw_event(event.values)?),
"sticky_jump" => GameEvent::StickyJump(StickyJumpEvent::from_raw_event(event.values)?),
"sticky_jump_landed" => GameEvent::StickyJumpLanded(StickyJumpLandedEvent::from_raw_event(event.values)?),
"medic_defended" => GameEvent::MedicDefended(MedicDefendedEvent::from_raw_event(event.values)?),
"localplayer_healed" => GameEvent::LocalPlayerHealed(LocalPlayerHealedEvent::from_raw_event(event.values)?),
"player_destroyed_pipebomb" => GameEvent::PlayerDestroyedPipeBomb(PlayerDestroyedPipeBombEvent::from_raw_event(event.values)?),
"object_deflected" => GameEvent::ObjectDeflected(ObjectDeflectedEvent::from_raw_event(event.values)?),
"player_mvp" => GameEvent::PlayerMvp(PlayerMvpEvent::from_raw_event(event.values)?),
"raid_spawn_mob" => GameEvent::RaidSpawnMob(RaidSpawnMobEvent::from_raw_event(event.values)?),
"raid_spawn_squad" => GameEvent::RaidSpawnSquad(RaidSpawnSquadEvent::from_raw_event(event.values)?),
"nav_blocked" => GameEvent::NavBlocked(NavBlockedEvent::from_raw_event(event.values)?),
"path_track_passed" => GameEvent::PathTrackPassed(PathTrackPassedEvent::from_raw_event(event.values)?),
"num_cappers_changed" => GameEvent::NumCappersChanged(NumCappersChangedEvent::from_raw_event(event.values)?),
"player_regenerate" => GameEvent::PlayerRegenerate(PlayerRegenerateEvent::from_raw_event(event.values)?),
"update_status_item" => GameEvent::UpdateStatusItem(UpdateStatusItemEvent::from_raw_event(event.values)?),
"stats_resetround" => GameEvent::StatsResetRound(StatsResetRoundEvent::from_raw_event(event.values)?),
"scorestats_accumulated_update" => GameEvent::ScoreStatsAccumulatedUpdate(ScoreStatsAccumulatedUpdateEvent::from_raw_event(event.values)?),
"scorestats_accumulated_reset" => GameEvent::ScoreStatsAccumulatedReset(ScoreStatsAccumulatedResetEvent::from_raw_event(event.values)?),
"achievement_earned_local" => GameEvent::AchievementEarnedLocal(AchievementEarnedLocalEvent::from_raw_event(event.values)?),
"player_healed" => GameEvent::PlayerHealed(PlayerHealedEvent::from_raw_event(event.values)?),
"building_healed" => GameEvent::BuildingHealed(BuildingHealedEvent::from_raw_event(event.values)?),
"item_pickup" => GameEvent::ItemPickup(ItemPickupEvent::from_raw_event(event.values)?),
"duel_status" => GameEvent::DuelStatus(DuelStatusEvent::from_raw_event(event.values)?),
"fish_notice" => GameEvent::FishNotice(FishNoticeEvent::from_raw_event(event.values)?),
"fish_notice__arm" => GameEvent::FishNoticeArm(FishNoticeArmEvent::from_raw_event(event.values)?),
"throwable_hit" => GameEvent::ThrowableHit(ThrowableHitEvent::from_raw_event(event.values)?),
"pumpkin_lord_summoned" => GameEvent::PumpkinLordSummoned(PumpkinLordSummonedEvent::from_raw_event(event.values)?),
"pumpkin_lord_killed" => GameEvent::PumpkinLordKilled(PumpkinLordKilledEvent::from_raw_event(event.values)?),
"merasmus_summoned" => GameEvent::MerasmusSummoned(MerasmusSummonedEvent::from_raw_event(event.values)?),
"merasmus_killed" => GameEvent::MerasmusKilled(MerasmusKilledEvent::from_raw_event(event.values)?),
"merasmus_escape_warning" => GameEvent::MerasmusEscapeWarning(MerasmusEscapeWarningEvent::from_raw_event(event.values)?),
"merasmus_escaped" => GameEvent::MerasmusEscaped(MerasmusEscapedEvent::from_raw_event(event.values)?),
"eyeball_boss_summoned" => GameEvent::EyeballBossSummoned(EyeballBossSummonedEvent::from_raw_event(event.values)?),
"eyeball_boss_stunned" => GameEvent::EyeballBossStunned(EyeballBossStunnedEvent::from_raw_event(event.values)?),
"eyeball_boss_killed" => GameEvent::EyeballBossKilled(EyeballBossKilledEvent::from_raw_event(event.values)?),
"eyeball_boss_killer" => GameEvent::EyeballBossKiller(EyeballBossKillerEvent::from_raw_event(event.values)?),
"eyeball_boss_escape_imminent" => GameEvent::EyeballBossEscapeImminent(EyeballBossEscapeImminentEvent::from_raw_event(event.values)?),
"eyeball_boss_escaped" => GameEvent::EyeballBossEscaped(EyeballBossEscapedEvent::from_raw_event(event.values)?),
"npc_hurt" => GameEvent::NpcHurt(NpcHurtEvent::from_raw_event(event.values)?),
"controlpoint_timer_updated" => GameEvent::ControlPointTimerUpdated(ControlPointTimerUpdatedEvent::from_raw_event(event.values)?),
"player_highfive_start" => GameEvent::PlayerHighfiveStart(PlayerHighfiveStartEvent::from_raw_event(event.values)?),
"player_highfive_cancel" => GameEvent::PlayerHighfiveCancel(PlayerHighfiveCancelEvent::from_raw_event(event.values)?),
"player_highfive_success" => GameEvent::PlayerHighfiveSuccess(PlayerHighfiveSuccessEvent::from_raw_event(event.values)?),
"player_bonuspoints" => GameEvent::PlayerBonusPoints(PlayerBonusPointsEvent::from_raw_event(event.values)?),
"player_upgraded" => GameEvent::PlayerUpgraded(PlayerUpgradedEvent::from_raw_event(event.values)?),
"player_buyback" => GameEvent::PlayerBuyback(PlayerBuybackEvent::from_raw_event(event.values)?),
"player_used_powerup_bottle" => GameEvent::PlayerUsedPowerUpBottle(PlayerUsedPowerUpBottleEvent::from_raw_event(event.values)?),
"christmas_gift_grab" => GameEvent::ChristmasGiftGrab(ChristmasGiftGrabEvent::from_raw_event(event.values)?),
"player_killed_achievement_zone" => GameEvent::PlayerKilledAchievementZone(PlayerKilledAchievementZoneEvent::from_raw_event(event.values)?),
"party_updated" => GameEvent::PartyUpdated(PartyUpdatedEvent::from_raw_event(event.values)?),
"lobby_updated" => GameEvent::LobbyUpdated(LobbyUpdatedEvent::from_raw_event(event.values)?),
"mvm_mission_update" => GameEvent::MvmMissionUpdate(MvmMissionUpdateEvent::from_raw_event(event.values)?),
"recalculate_holidays" => GameEvent::RecalculateHolidays(RecalculateHolidaysEvent::from_raw_event(event.values)?),
"player_currency_changed" => GameEvent::PlayerCurrencyChanged(PlayerCurrencyChangedEvent::from_raw_event(event.values)?),
"doomsday_rocket_open" => GameEvent::DoomsdayRocketOpen(DoomsdayRocketOpenEvent::from_raw_event(event.values)?),
"remove_nemesis_relationships" => GameEvent::RemoveNemesisRelationships(RemoveNemesisRelationshipsEvent::from_raw_event(event.values)?),
"mvm_creditbonus_wave" => GameEvent::MvmCreditBonusWave(MvmCreditBonusWaveEvent::from_raw_event(event.values)?),
"mvm_creditbonus_all" => GameEvent::MvmCreditBonusAll(MvmCreditBonusAllEvent::from_raw_event(event.values)?),
"mvm_creditbonus_all_advanced" => GameEvent::MvmCreditBonusAllAdvanced(MvmCreditBonusAllAdvancedEvent::from_raw_event(event.values)?),
"mvm_quick_sentry_upgrade" => GameEvent::MvmQuickSentryUpgrade(MvmQuickSentryUpgradeEvent::from_raw_event(event.values)?),
"mvm_tank_destroyed_by_players" => GameEvent::MvmTankDestroyedByPlayers(MvmTankDestroyedByPlayersEvent::from_raw_event(event.values)?),
"mvm_kill_robot_delivering_bomb" => GameEvent::MvmKillRobotDeliveringBomb(MvmKillRobotDeliveringBombEvent::from_raw_event(event.values)?),
"mvm_pickup_currency" => GameEvent::MvmPickupCurrency(MvmPickupCurrencyEvent::from_raw_event(event.values)?),
"mvm_bomb_carrier_killed" => GameEvent::MvmBombCarrierKilled(MvmBombCarrierKilledEvent::from_raw_event(event.values)?),
"mvm_sentrybuster_detonate" => GameEvent::MvmSentryBusterDetonate(MvmSentryBusterDetonateEvent::from_raw_event(event.values)?),
"mvm_scout_marked_for_death" => GameEvent::MvmScoutMarkedForDeath(MvmScoutMarkedForDeathEvent::from_raw_event(event.values)?),
"mvm_medic_powerup_shared" => GameEvent::MvmMedicPowerupShared(MvmMedicPowerupSharedEvent::from_raw_event(event.values)?),
"mvm_begin_wave" => GameEvent::MvmBeginWave(MvmBeginWaveEvent::from_raw_event(event.values)?),
"mvm_wave_complete" => GameEvent::MvmWaveComplete(MvmWaveCompleteEvent::from_raw_event(event.values)?),
"mvm_mission_complete" => GameEvent::MvmMissionComplete(MvmMissionCompleteEvent::from_raw_event(event.values)?),
"mvm_bomb_reset_by_player" => GameEvent::MvmBombResetByPlayer(MvmBombResetByPlayerEvent::from_raw_event(event.values)?),
"mvm_bomb_alarm_triggered" => GameEvent::MvmBombAlarmTriggered(MvmBombAlarmTriggeredEvent::from_raw_event(event.values)?),
"mvm_bomb_deploy_reset_by_player" => GameEvent::MvmBombDeployResetByPlayer(MvmBombDeployResetByPlayerEvent::from_raw_event(event.values)?),
"mvm_wave_failed" => GameEvent::MvmWaveFailed(MvmWaveFailedEvent::from_raw_event(event.values)?),
"mvm_reset_stats" => GameEvent::MvmResetStats(MvmResetStatsEvent::from_raw_event(event.values)?),
"damage_resisted" => GameEvent::DamageResisted(DamageResistedEvent::from_raw_event(event.values)?),
"revive_player_notify" => GameEvent::RevivePlayerNotify(RevivePlayerNotifyEvent::from_raw_event(event.values)?),
"revive_player_stopped" => GameEvent::RevivePlayerStopped(RevivePlayerStoppedEvent::from_raw_event(event.values)?),
"revive_player_complete" => GameEvent::RevivePlayerComplete(RevivePlayerCompleteEvent::from_raw_event(event.values)?),
"player_turned_to_ghost" => GameEvent::PlayerTurnedToGhost(PlayerTurnedToGhostEvent::from_raw_event(event.values)?),
"medigun_shield_blocked_damage" => GameEvent::MedigunShieldBlockedDamage(MedigunShieldBlockedDamageEvent::from_raw_event(event.values)?),
"mvm_adv_wave_complete_no_gates" => GameEvent::MvmAdvWaveCompleteNoGates(MvmAdvWaveCompleteNoGatesEvent::from_raw_event(event.values)?),
"mvm_sniper_headshot_currency" => GameEvent::MvmSniperHeadshotCurrency(MvmSniperHeadshotCurrencyEvent::from_raw_event(event.values)?),
"mvm_mannhattan_pit" => GameEvent::MvmMannhattanPit(MvmMannhattanPitEvent::from_raw_event(event.values)?),
"flag_carried_in_detection_zone" => GameEvent::FlagCarriedInDetectionZone(FlagCarriedInDetectionZoneEvent::from_raw_event(event.values)?),
"mvm_adv_wave_killed_stun_radio" => GameEvent::MvmAdvWaveKilledStunRadio(MvmAdvWaveKilledStunRadioEvent::from_raw_event(event.values)?),
"player_directhit_stun" => GameEvent::PlayerDirecthitStun(PlayerDirecthitStunEvent::from_raw_event(event.values)?),
"mvm_sentrybuster_killed" => GameEvent::MvmSentryBusterKilled(MvmSentryBusterKilledEvent::from_raw_event(event.values)?),
"upgrades_file_changed" => GameEvent::UpgradesFileChanged(UpgradesFileChangedEvent::from_raw_event(event.values)?),
"rd_team_points_changed" => GameEvent::RdTeamPointsChanged(RdTeamPointsChangedEvent::from_raw_event(event.values)?),
"rd_rules_state_changed" => GameEvent::RdRulesStateChanged(RdRulesStateChangedEvent::from_raw_event(event.values)?),
"rd_robot_killed" => GameEvent::RdRobotKilled(RdRobotKilledEvent::from_raw_event(event.values)?),
"rd_robot_impact" => GameEvent::RdRobotImpact(RdRobotImpactEvent::from_raw_event(event.values)?),
"teamplay_pre_round_time_left" => GameEvent::TeamPlayPreRoundTimeLeft(TeamPlayPreRoundTimeLeftEvent::from_raw_event(event.values)?),
"parachute_deploy" => GameEvent::ParachuteDeploy(ParachuteDeployEvent::from_raw_event(event.values)?),
"parachute_holster" => GameEvent::ParachuteHolster(ParachuteHolsterEvent::from_raw_event(event.values)?),
"kill_refills_meter" => GameEvent::KillRefillsMeter(KillRefillsMeterEvent::from_raw_event(event.values)?),
"rps_taunt_event" => GameEvent::RpsTauntEvent(RpsTauntEventEvent::from_raw_event(event.values)?),
"conga_kill" => GameEvent::CongaKill(CongaKillEvent::from_raw_event(event.values)?),
"player_initial_spawn" => GameEvent::PlayerInitialSpawn(PlayerInitialSpawnEvent::from_raw_event(event.values)?),
"competitive_victory" => GameEvent::CompetitiveVictory(CompetitiveVictoryEvent::from_raw_event(event.values)?),
"competitive_skillrating_update" => GameEvent::CompetitiveSkillratingUpdate(CompetitiveSkillratingUpdateEvent::from_raw_event(event.values)?),
"minigame_win" => GameEvent::MiniGameWin(MiniGameWinEvent::from_raw_event(event.values)?),
"sentry_on_go_active" => GameEvent::SentryOnGoActive(SentryOnGoActiveEvent::from_raw_event(event.values)?),
"duck_xp_level_up" => GameEvent::DuckXpLevelUp(DuckXpLevelUpEvent::from_raw_event(event.values)?),
"hltv_status" => GameEvent::HLTVStatus(HLTVStatusEvent::from_raw_event(event.values)?),
"hltv_cameraman" => GameEvent::HLTVCameraman(HLTVCameramanEvent::from_raw_event(event.values)?),
"hltv_rank_camera" => GameEvent::HLTVRankCamera(HLTVRankCameraEvent::from_raw_event(event.values)?),
"hltv_rank_entity" => GameEvent::HLTVRankEntity(HLTVRankEntityEvent::from_raw_event(event.values)?),
"hltv_fixed" => GameEvent::HLTVFixed(HLTVFixedEvent::from_raw_event(event.values)?),
"hltv_chase" => GameEvent::HLTVChase(HLTVChaseEvent::from_raw_event(event.values)?),
"hltv_message" => GameEvent::HLTVMessage(HLTVMessageEvent::from_raw_event(event.values)?),
"hltv_title" => GameEvent::HLTVTitle(HLTVTitleEvent::from_raw_event(event.values)?),
"hltv_chat" => GameEvent::HLTVChat(HLTVChatEvent::from_raw_event(event.values)?),
"replay_startrecord" => GameEvent::ReplayStartRecord(ReplayStartRecordEvent::from_raw_event(event.values)?),
"replay_sessioninfo" => GameEvent::ReplaySessionInfo(ReplaySessionInfoEvent::from_raw_event(event.values)?),
"replay_endrecord" => GameEvent::ReplayEndRecord(ReplayEndRecordEvent::from_raw_event(event.values)?),
"replay_replaysavailable" => GameEvent::ReplayReplaysAvailable(ReplayReplaysAvailableEvent::from_raw_event(event.values)?),
"replay_servererror" => GameEvent::ReplayServerError(ReplayServerErrorEvent::from_raw_event(event.values)?),
_ => return Err(ParseError::UnknownGameEvent(event.name))
pub fn from_raw_event(event: RawGameEvent) -> Result<Self> {
Ok(match event.event_type {
GameEventType::ServerSpawn => GameEvent::ServerSpawn(ServerSpawnEvent::from_raw_event(event.values)?),
GameEventType::ServerShutdown => GameEvent::ServerShutdown(ServerShutdownEvent::from_raw_event(event.values)?),
GameEventType::ServerCvar => GameEvent::ServerCvar(ServerCvarEvent::from_raw_event(event.values)?),
GameEventType::ServerMessage => GameEvent::ServerMessage(ServerMessageEvent::from_raw_event(event.values)?),
GameEventType::ServerAddBan => GameEvent::ServerAddBan(ServerAddBanEvent::from_raw_event(event.values)?),
GameEventType::ServerRemoveBan => GameEvent::ServerRemoveBan(ServerRemoveBanEvent::from_raw_event(event.values)?),
GameEventType::PlayerConnect => GameEvent::PlayerConnect(PlayerConnectEvent::from_raw_event(event.values)?),
GameEventType::PlayerConnectClient => GameEvent::PlayerConnectClient(PlayerConnectClientEvent::from_raw_event(event.values)?),
GameEventType::PlayerInfo => GameEvent::PlayerInfo(PlayerInfoEvent::from_raw_event(event.values)?),
GameEventType::PlayerDisconnect => GameEvent::PlayerDisconnect(PlayerDisconnectEvent::from_raw_event(event.values)?),
GameEventType::PlayerActivate => GameEvent::PlayerActivate(PlayerActivateEvent::from_raw_event(event.values)?),
GameEventType::PlayerSay => GameEvent::PlayerSay(PlayerSayEvent::from_raw_event(event.values)?),
GameEventType::ClientDisconnect => GameEvent::ClientDisconnect(ClientDisconnectEvent::from_raw_event(event.values)?),
GameEventType::ClientBeginConnect => GameEvent::ClientBeginConnect(ClientBeginConnectEvent::from_raw_event(event.values)?),
GameEventType::ClientConnected => GameEvent::ClientConnected(ClientConnectedEvent::from_raw_event(event.values)?),
GameEventType::ClientFullConnect => GameEvent::ClientFullConnect(ClientFullConnectEvent::from_raw_event(event.values)?),
GameEventType::HostQuit => GameEvent::HostQuit(HostQuitEvent::from_raw_event(event.values)?),
GameEventType::TeamInfo => GameEvent::TeamInfo(TeamInfoEvent::from_raw_event(event.values)?),
GameEventType::TeamScore => GameEvent::TeamScore(TeamScoreEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayBroadcastAudio => GameEvent::TeamPlayBroadcastAudio(TeamPlayBroadcastAudioEvent::from_raw_event(event.values)?),
GameEventType::PlayerTeam => GameEvent::PlayerTeam(PlayerTeamEvent::from_raw_event(event.values)?),
GameEventType::PlayerClass => GameEvent::PlayerClass(PlayerClassEvent::from_raw_event(event.values)?),
GameEventType::PlayerDeath => GameEvent::PlayerDeath(PlayerDeathEvent::from_raw_event(event.values)?),
GameEventType::PlayerHurt => GameEvent::PlayerHurt(PlayerHurtEvent::from_raw_event(event.values)?),
GameEventType::PlayerChat => GameEvent::PlayerChat(PlayerChatEvent::from_raw_event(event.values)?),
GameEventType::PlayerScore => GameEvent::PlayerScore(PlayerScoreEvent::from_raw_event(event.values)?),
GameEventType::PlayerSpawn => GameEvent::PlayerSpawn(PlayerSpawnEvent::from_raw_event(event.values)?),
GameEventType::PlayerShoot => GameEvent::PlayerShoot(PlayerShootEvent::from_raw_event(event.values)?),
GameEventType::PlayerUse => GameEvent::PlayerUse(PlayerUseEvent::from_raw_event(event.values)?),
GameEventType::PlayerChangeName => GameEvent::PlayerChangeName(PlayerChangeNameEvent::from_raw_event(event.values)?),
GameEventType::PlayerHintMessage => GameEvent::PlayerHintMessage(PlayerHintMessageEvent::from_raw_event(event.values)?),
GameEventType::BasePlayerTeleported => GameEvent::BasePlayerTeleported(BasePlayerTeleportedEvent::from_raw_event(event.values)?),
GameEventType::GameInit => GameEvent::GameInit(GameInitEvent::from_raw_event(event.values)?),
GameEventType::GameNewMap => GameEvent::GameNewMap(GameNewMapEvent::from_raw_event(event.values)?),
GameEventType::GameStart => GameEvent::GameStart(GameStartEvent::from_raw_event(event.values)?),
GameEventType::GameEnd => GameEvent::GameEnd(GameEndEvent::from_raw_event(event.values)?),
GameEventType::RoundStart => GameEvent::RoundStart(RoundStartEvent::from_raw_event(event.values)?),
GameEventType::RoundEnd => GameEvent::RoundEnd(RoundEndEvent::from_raw_event(event.values)?),
GameEventType::GameMessage => GameEvent::GameMessage(GameMessageEvent::from_raw_event(event.values)?),
GameEventType::BreakBreakable => GameEvent::BreakBreakable(BreakBreakableEvent::from_raw_event(event.values)?),
GameEventType::BreakProp => GameEvent::BreakProp(BreakPropEvent::from_raw_event(event.values)?),
GameEventType::EntityKilled => GameEvent::EntityKilled(EntityKilledEvent::from_raw_event(event.values)?),
GameEventType::BonusUpdated => GameEvent::BonusUpdated(BonusUpdatedEvent::from_raw_event(event.values)?),
GameEventType::AchievementEvent => GameEvent::AchievementEvent(AchievementEventEvent::from_raw_event(event.values)?),
GameEventType::AchievementIncrement => GameEvent::AchievementIncrement(AchievementIncrementEvent::from_raw_event(event.values)?),
GameEventType::PhysgunPickup => GameEvent::PhysgunPickup(PhysgunPickupEvent::from_raw_event(event.values)?),
GameEventType::FlareIgniteNpc => GameEvent::FlareIgniteNpc(FlareIgniteNpcEvent::from_raw_event(event.values)?),
GameEventType::HelicopterGrenadePuntMiss => GameEvent::HelicopterGrenadePuntMiss(HelicopterGrenadePuntMissEvent::from_raw_event(event.values)?),
GameEventType::UserDataDownloaded => GameEvent::UserDataDownloaded(UserDataDownloadedEvent::from_raw_event(event.values)?),
GameEventType::RagdollDissolved => GameEvent::RagdollDissolved(RagdollDissolvedEvent::from_raw_event(event.values)?),
GameEventType::HLTVChangedMode => GameEvent::HLTVChangedMode(HLTVChangedModeEvent::from_raw_event(event.values)?),
GameEventType::HLTVChangedTarget => GameEvent::HLTVChangedTarget(HLTVChangedTargetEvent::from_raw_event(event.values)?),
GameEventType::VoteEnded => GameEvent::VoteEnded(VoteEndedEvent::from_raw_event(event.values)?),
GameEventType::VoteStarted => GameEvent::VoteStarted(VoteStartedEvent::from_raw_event(event.values)?),
GameEventType::VoteChanged => GameEvent::VoteChanged(VoteChangedEvent::from_raw_event(event.values)?),
GameEventType::VotePassed => GameEvent::VotePassed(VotePassedEvent::from_raw_event(event.values)?),
GameEventType::VoteFailed => GameEvent::VoteFailed(VoteFailedEvent::from_raw_event(event.values)?),
GameEventType::VoteCast => GameEvent::VoteCast(VoteCastEvent::from_raw_event(event.values)?),
GameEventType::VoteOptions => GameEvent::VoteOptions(VoteOptionsEvent::from_raw_event(event.values)?),
GameEventType::ReplaySaved => GameEvent::ReplaySaved(ReplaySavedEvent::from_raw_event(event.values)?),
GameEventType::EnteredPerformanceMode => GameEvent::EnteredPerformanceMode(EnteredPerformanceModeEvent::from_raw_event(event.values)?),
GameEventType::BrowseReplays => GameEvent::BrowseReplays(BrowseReplaysEvent::from_raw_event(event.values)?),
GameEventType::ReplayYoutubeStats => GameEvent::ReplayYoutubeStats(ReplayYoutubeStatsEvent::from_raw_event(event.values)?),
GameEventType::InventoryUpdated => GameEvent::InventoryUpdated(InventoryUpdatedEvent::from_raw_event(event.values)?),
GameEventType::CartUpdated => GameEvent::CartUpdated(CartUpdatedEvent::from_raw_event(event.values)?),
GameEventType::StorePricesheetUpdated => GameEvent::StorePricesheetUpdated(StorePricesheetUpdatedEvent::from_raw_event(event.values)?),
GameEventType::GcConnected => GameEvent::GcConnected(GcConnectedEvent::from_raw_event(event.values)?),
GameEventType::ItemSchemaInitialized => GameEvent::ItemSchemaInitialized(ItemSchemaInitializedEvent::from_raw_event(event.values)?),
GameEventType::IntroFinish => GameEvent::IntroFinish(IntroFinishEvent::from_raw_event(event.values)?),
GameEventType::IntroNextCamera => GameEvent::IntroNextCamera(IntroNextCameraEvent::from_raw_event(event.values)?),
GameEventType::MmLobbyChat => GameEvent::MmLobbyChat(MmLobbyChatEvent::from_raw_event(event.values)?),
GameEventType::MmLobbyMemberJoin => GameEvent::MmLobbyMemberJoin(MmLobbyMemberJoinEvent::from_raw_event(event.values)?),
GameEventType::MmLobbyMemberLeave => GameEvent::MmLobbyMemberLeave(MmLobbyMemberLeaveEvent::from_raw_event(event.values)?),
GameEventType::PlayerChangeClass => GameEvent::PlayerChangeClass(PlayerChangeClassEvent::from_raw_event(event.values)?),
GameEventType::TfMapTimeRemaining => GameEvent::TfMapTimeRemaining(TfMapTimeRemainingEvent::from_raw_event(event.values)?),
GameEventType::TfGameOver => GameEvent::TfGameOver(TfGameOverEvent::from_raw_event(event.values)?),
GameEventType::CtfFlagCaptured => GameEvent::CtfFlagCaptured(CtfFlagCapturedEvent::from_raw_event(event.values)?),
GameEventType::ControlPointInitialized => GameEvent::ControlPointInitialized(ControlPointInitializedEvent::from_raw_event(event.values)?),
GameEventType::ControlPointUpdateImages => GameEvent::ControlPointUpdateImages(ControlPointUpdateImagesEvent::from_raw_event(event.values)?),
GameEventType::ControlPointUpdateLayout => GameEvent::ControlPointUpdateLayout(ControlPointUpdateLayoutEvent::from_raw_event(event.values)?),
GameEventType::ControlPointUpdateCapping => GameEvent::ControlPointUpdateCapping(ControlPointUpdateCappingEvent::from_raw_event(event.values)?),
GameEventType::ControlPointUpdateOwner => GameEvent::ControlPointUpdateOwner(ControlPointUpdateOwnerEvent::from_raw_event(event.values)?),
GameEventType::ControlPointStartTouch => GameEvent::ControlPointStartTouch(ControlPointStartTouchEvent::from_raw_event(event.values)?),
GameEventType::ControlPointEndTouch => GameEvent::ControlPointEndTouch(ControlPointEndTouchEvent::from_raw_event(event.values)?),
GameEventType::ControlPointPulseElement => GameEvent::ControlPointPulseElement(ControlPointPulseElementEvent::from_raw_event(event.values)?),
GameEventType::ControlPointFakeCapture => GameEvent::ControlPointFakeCapture(ControlPointFakeCaptureEvent::from_raw_event(event.values)?),
GameEventType::ControlPointFakeCaptureMult => GameEvent::ControlPointFakeCaptureMult(ControlPointFakeCaptureMultEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundSelected => GameEvent::TeamPlayRoundSelected(TeamPlayRoundSelectedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundStart => GameEvent::TeamPlayRoundStart(TeamPlayRoundStartEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundActive => GameEvent::TeamPlayRoundActive(TeamPlayRoundActiveEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayWaitingBegins => GameEvent::TeamPlayWaitingBegins(TeamPlayWaitingBeginsEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayWaitingEnds => GameEvent::TeamPlayWaitingEnds(TeamPlayWaitingEndsEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayWaitingAboutToEnd => GameEvent::TeamPlayWaitingAboutToEnd(TeamPlayWaitingAboutToEndEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRestartRound => GameEvent::TeamPlayRestartRound(TeamPlayRestartRoundEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayReadyRestart => GameEvent::TeamPlayReadyRestart(TeamPlayReadyRestartEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundRestartSeconds => GameEvent::TeamPlayRoundRestartSeconds(TeamPlayRoundRestartSecondsEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayTeamReady => GameEvent::TeamPlayTeamReady(TeamPlayTeamReadyEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundWin => GameEvent::TeamPlayRoundWin(TeamPlayRoundWinEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayUpdateTimer => GameEvent::TeamPlayUpdateTimer(TeamPlayUpdateTimerEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayRoundStalemate => GameEvent::TeamPlayRoundStalemate(TeamPlayRoundStalemateEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayOvertimeBegin => GameEvent::TeamPlayOvertimeBegin(TeamPlayOvertimeBeginEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayOvertimeEnd => GameEvent::TeamPlayOvertimeEnd(TeamPlayOvertimeEndEvent::from_raw_event(event.values)?),
GameEventType::TeamPlaySuddenDeathBegin => GameEvent::TeamPlaySuddenDeathBegin(TeamPlaySuddenDeathBeginEvent::from_raw_event(event.values)?),
GameEventType::TeamPlaySuddenDeathEnd => GameEvent::TeamPlaySuddenDeathEnd(TeamPlaySuddenDeathEndEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayGameOver => GameEvent::TeamPlayGameOver(TeamPlayGameOverEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayMapTimeRemaining => GameEvent::TeamPlayMapTimeRemaining(TeamPlayMapTimeRemainingEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayTimerFlash => GameEvent::TeamPlayTimerFlash(TeamPlayTimerFlashEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayTimerTimeAdded => GameEvent::TeamPlayTimerTimeAdded(TeamPlayTimerTimeAddedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayPointStartCapture => GameEvent::TeamPlayPointStartCapture(TeamPlayPointStartCaptureEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayPointCaptured => GameEvent::TeamPlayPointCaptured(TeamPlayPointCapturedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayPointLocked => GameEvent::TeamPlayPointLocked(TeamPlayPointLockedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayPointUnlocked => GameEvent::TeamPlayPointUnlocked(TeamPlayPointUnlockedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayCaptureBroken => GameEvent::TeamPlayCaptureBroken(TeamPlayCaptureBrokenEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayCaptureBlocked => GameEvent::TeamPlayCaptureBlocked(TeamPlayCaptureBlockedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayFlagEvent => GameEvent::TeamPlayFlagEvent(TeamPlayFlagEventEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayWinPanel => GameEvent::TeamPlayWinPanel(TeamPlayWinPanelEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayTeambalancedPlayer => GameEvent::TeamPlayTeambalancedPlayer(TeamPlayTeambalancedPlayerEvent::from_raw_event(event.values)?),
GameEventType::TeamPlaySetupFinished => GameEvent::TeamPlaySetupFinished(TeamPlaySetupFinishedEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayAlert => GameEvent::TeamPlayAlert(TeamPlayAlertEvent::from_raw_event(event.values)?),
GameEventType::TrainingComplete => GameEvent::TrainingComplete(TrainingCompleteEvent::from_raw_event(event.values)?),
GameEventType::ShowFreezePanel => GameEvent::ShowFreezePanel(ShowFreezePanelEvent::from_raw_event(event.values)?),
GameEventType::HideFreezePanel => GameEvent::HideFreezePanel(HideFreezePanelEvent::from_raw_event(event.values)?),
GameEventType::FreezeCamStarted => GameEvent::FreezeCamStarted(FreezeCamStartedEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerChangeTeam => GameEvent::LocalPlayerChangeTeam(LocalPlayerChangeTeamEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerScoreChanged => GameEvent::LocalPlayerScoreChanged(LocalPlayerScoreChangedEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerChangeClass => GameEvent::LocalPlayerChangeClass(LocalPlayerChangeClassEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerRespawn => GameEvent::LocalPlayerRespawn(LocalPlayerRespawnEvent::from_raw_event(event.values)?),
GameEventType::BuildingInfoChanged => GameEvent::BuildingInfoChanged(BuildingInfoChangedEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerChangeDisguise => GameEvent::LocalPlayerChangeDisguise(LocalPlayerChangeDisguiseEvent::from_raw_event(event.values)?),
GameEventType::PlayerAccountChanged => GameEvent::PlayerAccountChanged(PlayerAccountChangedEvent::from_raw_event(event.values)?),
GameEventType::SpyPdaReset => GameEvent::SpyPdaReset(SpyPdaResetEvent::from_raw_event(event.values)?),
GameEventType::FlagStatusUpdate => GameEvent::FlagStatusUpdate(FlagStatusUpdateEvent::from_raw_event(event.values)?),
GameEventType::PlayerStatsUpdated => GameEvent::PlayerStatsUpdated(PlayerStatsUpdatedEvent::from_raw_event(event.values)?),
GameEventType::PlayingCommentary => GameEvent::PlayingCommentary(PlayingCommentaryEvent::from_raw_event(event.values)?),
GameEventType::PlayerChargedeployed => GameEvent::PlayerChargedeployed(PlayerChargedeployedEvent::from_raw_event(event.values)?),
GameEventType::PlayerBuiltObject => GameEvent::PlayerBuiltObject(PlayerBuiltObjectEvent::from_raw_event(event.values)?),
GameEventType::PlayerUpgradedObject => GameEvent::PlayerUpgradedObject(PlayerUpgradedObjectEvent::from_raw_event(event.values)?),
GameEventType::PlayerCarryObject => GameEvent::PlayerCarryObject(PlayerCarryObjectEvent::from_raw_event(event.values)?),
GameEventType::PlayerDropObject => GameEvent::PlayerDropObject(PlayerDropObjectEvent::from_raw_event(event.values)?),
GameEventType::ObjectRemoved => GameEvent::ObjectRemoved(ObjectRemovedEvent::from_raw_event(event.values)?),
GameEventType::ObjectDestroyed => GameEvent::ObjectDestroyed(ObjectDestroyedEvent::from_raw_event(event.values)?),
GameEventType::ObjectDetonated => GameEvent::ObjectDetonated(ObjectDetonatedEvent::from_raw_event(event.values)?),
GameEventType::AchievementEarned => GameEvent::AchievementEarned(AchievementEarnedEvent::from_raw_event(event.values)?),
GameEventType::SpecTargetUpdated => GameEvent::SpecTargetUpdated(SpecTargetUpdatedEvent::from_raw_event(event.values)?),
GameEventType::TournamentStateUpdate => GameEvent::TournamentStateUpdate(TournamentStateUpdateEvent::from_raw_event(event.values)?),
GameEventType::TournamentEnableCountdown => GameEvent::TournamentEnableCountdown(TournamentEnableCountdownEvent::from_raw_event(event.values)?),
GameEventType::PlayerCalledForMedic => GameEvent::PlayerCalledForMedic(PlayerCalledForMedicEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerBecameObserver => GameEvent::LocalPlayerBecameObserver(LocalPlayerBecameObserverEvent::from_raw_event(event.values)?),
GameEventType::PlayerIgnitedInv => GameEvent::PlayerIgnitedInv(PlayerIgnitedInvEvent::from_raw_event(event.values)?),
GameEventType::PlayerIgnited => GameEvent::PlayerIgnited(PlayerIgnitedEvent::from_raw_event(event.values)?),
GameEventType::PlayerExtinguished => GameEvent::PlayerExtinguished(PlayerExtinguishedEvent::from_raw_event(event.values)?),
GameEventType::PlayerTeleported => GameEvent::PlayerTeleported(PlayerTeleportedEvent::from_raw_event(event.values)?),
GameEventType::PlayerHealedMedicCall => GameEvent::PlayerHealedMedicCall(PlayerHealedMedicCallEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerChargeReady => GameEvent::LocalPlayerChargeReady(LocalPlayerChargeReadyEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerWinddown => GameEvent::LocalPlayerWinddown(LocalPlayerWinddownEvent::from_raw_event(event.values)?),
GameEventType::PlayerInvulned => GameEvent::PlayerInvulned(PlayerInvulnedEvent::from_raw_event(event.values)?),
GameEventType::EscortSpeed => GameEvent::EscortSpeed(EscortSpeedEvent::from_raw_event(event.values)?),
GameEventType::EscortProgress => GameEvent::EscortProgress(EscortProgressEvent::from_raw_event(event.values)?),
GameEventType::EscortRecede => GameEvent::EscortRecede(EscortRecedeEvent::from_raw_event(event.values)?),
GameEventType::GameUIActivated => GameEvent::GameUIActivated(GameUIActivatedEvent::from_raw_event(event.values)?),
GameEventType::GameUIHidden => GameEvent::GameUIHidden(GameUIHiddenEvent::from_raw_event(event.values)?),
GameEventType::PlayerEscortScore => GameEvent::PlayerEscortScore(PlayerEscortScoreEvent::from_raw_event(event.values)?),
GameEventType::PlayerHealOnHit => GameEvent::PlayerHealOnHit(PlayerHealOnHitEvent::from_raw_event(event.values)?),
GameEventType::PlayerStealsandvich => GameEvent::PlayerStealsandvich(PlayerStealsandvichEvent::from_raw_event(event.values)?),
GameEventType::ShowClassLayout => GameEvent::ShowClassLayout(ShowClassLayoutEvent::from_raw_event(event.values)?),
GameEventType::ShowVsPanel => GameEvent::ShowVsPanel(ShowVsPanelEvent::from_raw_event(event.values)?),
GameEventType::PlayerDamaged => GameEvent::PlayerDamaged(PlayerDamagedEvent::from_raw_event(event.values)?),
GameEventType::ArenaPlayerNotification => GameEvent::ArenaPlayerNotification(ArenaPlayerNotificationEvent::from_raw_event(event.values)?),
GameEventType::ArenaMatchMaxStreak => GameEvent::ArenaMatchMaxStreak(ArenaMatchMaxStreakEvent::from_raw_event(event.values)?),
GameEventType::ArenaRoundStart => GameEvent::ArenaRoundStart(ArenaRoundStartEvent::from_raw_event(event.values)?),
GameEventType::ArenaWinPanel => GameEvent::ArenaWinPanel(ArenaWinPanelEvent::from_raw_event(event.values)?),
GameEventType::PveWinPanel => GameEvent::PveWinPanel(PveWinPanelEvent::from_raw_event(event.values)?),
GameEventType::AirDash => GameEvent::AirDash(AirDashEvent::from_raw_event(event.values)?),
GameEventType::Landed => GameEvent::Landed(LandedEvent::from_raw_event(event.values)?),
GameEventType::PlayerDamageDodged => GameEvent::PlayerDamageDodged(PlayerDamageDodgedEvent::from_raw_event(event.values)?),
GameEventType::PlayerStunned => GameEvent::PlayerStunned(PlayerStunnedEvent::from_raw_event(event.values)?),
GameEventType::ScoutGrandSlam => GameEvent::ScoutGrandSlam(ScoutGrandSlamEvent::from_raw_event(event.values)?),
GameEventType::ScoutSlamdollLanded => GameEvent::ScoutSlamdollLanded(ScoutSlamdollLandedEvent::from_raw_event(event.values)?),
GameEventType::ArrowImpact => GameEvent::ArrowImpact(ArrowImpactEvent::from_raw_event(event.values)?),
GameEventType::PlayerJarated => GameEvent::PlayerJarated(PlayerJaratedEvent::from_raw_event(event.values)?),
GameEventType::PlayerJaratedFade => GameEvent::PlayerJaratedFade(PlayerJaratedFadeEvent::from_raw_event(event.values)?),
GameEventType::PlayerShieldBlocked => GameEvent::PlayerShieldBlocked(PlayerShieldBlockedEvent::from_raw_event(event.values)?),
GameEventType::PlayerPinned => GameEvent::PlayerPinned(PlayerPinnedEvent::from_raw_event(event.values)?),
GameEventType::PlayerHealedByMedic => GameEvent::PlayerHealedByMedic(PlayerHealedByMedicEvent::from_raw_event(event.values)?),
GameEventType::PlayerSappedObject => GameEvent::PlayerSappedObject(PlayerSappedObjectEvent::from_raw_event(event.values)?),
GameEventType::ItemFound => GameEvent::ItemFound(ItemFoundEvent::from_raw_event(event.values)?),
GameEventType::ShowAnnotation => GameEvent::ShowAnnotation(ShowAnnotationEvent::from_raw_event(event.values)?),
GameEventType::HideAnnotation => GameEvent::HideAnnotation(HideAnnotationEvent::from_raw_event(event.values)?),
GameEventType::PostInventoryApplication => GameEvent::PostInventoryApplication(PostInventoryApplicationEvent::from_raw_event(event.values)?),
GameEventType::ControlPointUnlockUpdated => GameEvent::ControlPointUnlockUpdated(ControlPointUnlockUpdatedEvent::from_raw_event(event.values)?),
GameEventType::DeployBuffBanner => GameEvent::DeployBuffBanner(DeployBuffBannerEvent::from_raw_event(event.values)?),
GameEventType::PlayerBuff => GameEvent::PlayerBuff(PlayerBuffEvent::from_raw_event(event.values)?),
GameEventType::MedicDeath => GameEvent::MedicDeath(MedicDeathEvent::from_raw_event(event.values)?),
GameEventType::OvertimeNag => GameEvent::OvertimeNag(OvertimeNagEvent::from_raw_event(event.values)?),
GameEventType::TeamsChanged => GameEvent::TeamsChanged(TeamsChangedEvent::from_raw_event(event.values)?),
GameEventType::HalloweenPumpkinGrab => GameEvent::HalloweenPumpkinGrab(HalloweenPumpkinGrabEvent::from_raw_event(event.values)?),
GameEventType::RocketJump => GameEvent::RocketJump(RocketJumpEvent::from_raw_event(event.values)?),
GameEventType::RocketJumpLanded => GameEvent::RocketJumpLanded(RocketJumpLandedEvent::from_raw_event(event.values)?),
GameEventType::StickyJump => GameEvent::StickyJump(StickyJumpEvent::from_raw_event(event.values)?),
GameEventType::StickyJumpLanded => GameEvent::StickyJumpLanded(StickyJumpLandedEvent::from_raw_event(event.values)?),
GameEventType::MedicDefended => GameEvent::MedicDefended(MedicDefendedEvent::from_raw_event(event.values)?),
GameEventType::LocalPlayerHealed => GameEvent::LocalPlayerHealed(LocalPlayerHealedEvent::from_raw_event(event.values)?),
GameEventType::PlayerDestroyedPipeBomb => GameEvent::PlayerDestroyedPipeBomb(PlayerDestroyedPipeBombEvent::from_raw_event(event.values)?),
GameEventType::ObjectDeflected => GameEvent::ObjectDeflected(ObjectDeflectedEvent::from_raw_event(event.values)?),
GameEventType::PlayerMvp => GameEvent::PlayerMvp(PlayerMvpEvent::from_raw_event(event.values)?),
GameEventType::RaidSpawnMob => GameEvent::RaidSpawnMob(RaidSpawnMobEvent::from_raw_event(event.values)?),
GameEventType::RaidSpawnSquad => GameEvent::RaidSpawnSquad(RaidSpawnSquadEvent::from_raw_event(event.values)?),
GameEventType::NavBlocked => GameEvent::NavBlocked(NavBlockedEvent::from_raw_event(event.values)?),
GameEventType::PathTrackPassed => GameEvent::PathTrackPassed(PathTrackPassedEvent::from_raw_event(event.values)?),
GameEventType::NumCappersChanged => GameEvent::NumCappersChanged(NumCappersChangedEvent::from_raw_event(event.values)?),
GameEventType::PlayerRegenerate => GameEvent::PlayerRegenerate(PlayerRegenerateEvent::from_raw_event(event.values)?),
GameEventType::UpdateStatusItem => GameEvent::UpdateStatusItem(UpdateStatusItemEvent::from_raw_event(event.values)?),
GameEventType::StatsResetRound => GameEvent::StatsResetRound(StatsResetRoundEvent::from_raw_event(event.values)?),
GameEventType::ScoreStatsAccumulatedUpdate => GameEvent::ScoreStatsAccumulatedUpdate(ScoreStatsAccumulatedUpdateEvent::from_raw_event(event.values)?),
GameEventType::ScoreStatsAccumulatedReset => GameEvent::ScoreStatsAccumulatedReset(ScoreStatsAccumulatedResetEvent::from_raw_event(event.values)?),
GameEventType::AchievementEarnedLocal => GameEvent::AchievementEarnedLocal(AchievementEarnedLocalEvent::from_raw_event(event.values)?),
GameEventType::PlayerHealed => GameEvent::PlayerHealed(PlayerHealedEvent::from_raw_event(event.values)?),
GameEventType::BuildingHealed => GameEvent::BuildingHealed(BuildingHealedEvent::from_raw_event(event.values)?),
GameEventType::ItemPickup => GameEvent::ItemPickup(ItemPickupEvent::from_raw_event(event.values)?),
GameEventType::DuelStatus => GameEvent::DuelStatus(DuelStatusEvent::from_raw_event(event.values)?),
GameEventType::FishNotice => GameEvent::FishNotice(FishNoticeEvent::from_raw_event(event.values)?),
GameEventType::FishNoticeArm => GameEvent::FishNoticeArm(FishNoticeArmEvent::from_raw_event(event.values)?),
GameEventType::ThrowableHit => GameEvent::ThrowableHit(ThrowableHitEvent::from_raw_event(event.values)?),
GameEventType::PumpkinLordSummoned => GameEvent::PumpkinLordSummoned(PumpkinLordSummonedEvent::from_raw_event(event.values)?),
GameEventType::PumpkinLordKilled => GameEvent::PumpkinLordKilled(PumpkinLordKilledEvent::from_raw_event(event.values)?),
GameEventType::MerasmusSummoned => GameEvent::MerasmusSummoned(MerasmusSummonedEvent::from_raw_event(event.values)?),
GameEventType::MerasmusKilled => GameEvent::MerasmusKilled(MerasmusKilledEvent::from_raw_event(event.values)?),
GameEventType::MerasmusEscapeWarning => GameEvent::MerasmusEscapeWarning(MerasmusEscapeWarningEvent::from_raw_event(event.values)?),
GameEventType::MerasmusEscaped => GameEvent::MerasmusEscaped(MerasmusEscapedEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossSummoned => GameEvent::EyeballBossSummoned(EyeballBossSummonedEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossStunned => GameEvent::EyeballBossStunned(EyeballBossStunnedEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossKilled => GameEvent::EyeballBossKilled(EyeballBossKilledEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossKiller => GameEvent::EyeballBossKiller(EyeballBossKillerEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossEscapeImminent => GameEvent::EyeballBossEscapeImminent(EyeballBossEscapeImminentEvent::from_raw_event(event.values)?),
GameEventType::EyeballBossEscaped => GameEvent::EyeballBossEscaped(EyeballBossEscapedEvent::from_raw_event(event.values)?),
GameEventType::NpcHurt => GameEvent::NpcHurt(NpcHurtEvent::from_raw_event(event.values)?),
GameEventType::ControlPointTimerUpdated => GameEvent::ControlPointTimerUpdated(ControlPointTimerUpdatedEvent::from_raw_event(event.values)?),
GameEventType::PlayerHighfiveStart => GameEvent::PlayerHighfiveStart(PlayerHighfiveStartEvent::from_raw_event(event.values)?),
GameEventType::PlayerHighfiveCancel => GameEvent::PlayerHighfiveCancel(PlayerHighfiveCancelEvent::from_raw_event(event.values)?),
GameEventType::PlayerHighfiveSuccess => GameEvent::PlayerHighfiveSuccess(PlayerHighfiveSuccessEvent::from_raw_event(event.values)?),
GameEventType::PlayerBonusPoints => GameEvent::PlayerBonusPoints(PlayerBonusPointsEvent::from_raw_event(event.values)?),
GameEventType::PlayerUpgraded => GameEvent::PlayerUpgraded(PlayerUpgradedEvent::from_raw_event(event.values)?),
GameEventType::PlayerBuyback => GameEvent::PlayerBuyback(PlayerBuybackEvent::from_raw_event(event.values)?),
GameEventType::PlayerUsedPowerUpBottle => GameEvent::PlayerUsedPowerUpBottle(PlayerUsedPowerUpBottleEvent::from_raw_event(event.values)?),
GameEventType::ChristmasGiftGrab => GameEvent::ChristmasGiftGrab(ChristmasGiftGrabEvent::from_raw_event(event.values)?),
GameEventType::PlayerKilledAchievementZone => GameEvent::PlayerKilledAchievementZone(PlayerKilledAchievementZoneEvent::from_raw_event(event.values)?),
GameEventType::PartyUpdated => GameEvent::PartyUpdated(PartyUpdatedEvent::from_raw_event(event.values)?),
GameEventType::LobbyUpdated => GameEvent::LobbyUpdated(LobbyUpdatedEvent::from_raw_event(event.values)?),
GameEventType::MvmMissionUpdate => GameEvent::MvmMissionUpdate(MvmMissionUpdateEvent::from_raw_event(event.values)?),
GameEventType::RecalculateHolidays => GameEvent::RecalculateHolidays(RecalculateHolidaysEvent::from_raw_event(event.values)?),
GameEventType::PlayerCurrencyChanged => GameEvent::PlayerCurrencyChanged(PlayerCurrencyChangedEvent::from_raw_event(event.values)?),
GameEventType::DoomsdayRocketOpen => GameEvent::DoomsdayRocketOpen(DoomsdayRocketOpenEvent::from_raw_event(event.values)?),
GameEventType::RemoveNemesisRelationships => GameEvent::RemoveNemesisRelationships(RemoveNemesisRelationshipsEvent::from_raw_event(event.values)?),
GameEventType::MvmCreditBonusWave => GameEvent::MvmCreditBonusWave(MvmCreditBonusWaveEvent::from_raw_event(event.values)?),
GameEventType::MvmCreditBonusAll => GameEvent::MvmCreditBonusAll(MvmCreditBonusAllEvent::from_raw_event(event.values)?),
GameEventType::MvmCreditBonusAllAdvanced => GameEvent::MvmCreditBonusAllAdvanced(MvmCreditBonusAllAdvancedEvent::from_raw_event(event.values)?),
GameEventType::MvmQuickSentryUpgrade => GameEvent::MvmQuickSentryUpgrade(MvmQuickSentryUpgradeEvent::from_raw_event(event.values)?),
GameEventType::MvmTankDestroyedByPlayers => GameEvent::MvmTankDestroyedByPlayers(MvmTankDestroyedByPlayersEvent::from_raw_event(event.values)?),
GameEventType::MvmKillRobotDeliveringBomb => GameEvent::MvmKillRobotDeliveringBomb(MvmKillRobotDeliveringBombEvent::from_raw_event(event.values)?),
GameEventType::MvmPickupCurrency => GameEvent::MvmPickupCurrency(MvmPickupCurrencyEvent::from_raw_event(event.values)?),
GameEventType::MvmBombCarrierKilled => GameEvent::MvmBombCarrierKilled(MvmBombCarrierKilledEvent::from_raw_event(event.values)?),
GameEventType::MvmSentryBusterDetonate => GameEvent::MvmSentryBusterDetonate(MvmSentryBusterDetonateEvent::from_raw_event(event.values)?),
GameEventType::MvmScoutMarkedForDeath => GameEvent::MvmScoutMarkedForDeath(MvmScoutMarkedForDeathEvent::from_raw_event(event.values)?),
GameEventType::MvmMedicPowerupShared => GameEvent::MvmMedicPowerupShared(MvmMedicPowerupSharedEvent::from_raw_event(event.values)?),
GameEventType::MvmBeginWave => GameEvent::MvmBeginWave(MvmBeginWaveEvent::from_raw_event(event.values)?),
GameEventType::MvmWaveComplete => GameEvent::MvmWaveComplete(MvmWaveCompleteEvent::from_raw_event(event.values)?),
GameEventType::MvmMissionComplete => GameEvent::MvmMissionComplete(MvmMissionCompleteEvent::from_raw_event(event.values)?),
GameEventType::MvmBombResetByPlayer => GameEvent::MvmBombResetByPlayer(MvmBombResetByPlayerEvent::from_raw_event(event.values)?),
GameEventType::MvmBombAlarmTriggered => GameEvent::MvmBombAlarmTriggered(MvmBombAlarmTriggeredEvent::from_raw_event(event.values)?),
GameEventType::MvmBombDeployResetByPlayer => GameEvent::MvmBombDeployResetByPlayer(MvmBombDeployResetByPlayerEvent::from_raw_event(event.values)?),
GameEventType::MvmWaveFailed => GameEvent::MvmWaveFailed(MvmWaveFailedEvent::from_raw_event(event.values)?),
GameEventType::MvmResetStats => GameEvent::MvmResetStats(MvmResetStatsEvent::from_raw_event(event.values)?),
GameEventType::DamageResisted => GameEvent::DamageResisted(DamageResistedEvent::from_raw_event(event.values)?),
GameEventType::RevivePlayerNotify => GameEvent::RevivePlayerNotify(RevivePlayerNotifyEvent::from_raw_event(event.values)?),
GameEventType::RevivePlayerStopped => GameEvent::RevivePlayerStopped(RevivePlayerStoppedEvent::from_raw_event(event.values)?),
GameEventType::RevivePlayerComplete => GameEvent::RevivePlayerComplete(RevivePlayerCompleteEvent::from_raw_event(event.values)?),
GameEventType::PlayerTurnedToGhost => GameEvent::PlayerTurnedToGhost(PlayerTurnedToGhostEvent::from_raw_event(event.values)?),
GameEventType::MedigunShieldBlockedDamage => GameEvent::MedigunShieldBlockedDamage(MedigunShieldBlockedDamageEvent::from_raw_event(event.values)?),
GameEventType::MvmAdvWaveCompleteNoGates => GameEvent::MvmAdvWaveCompleteNoGates(MvmAdvWaveCompleteNoGatesEvent::from_raw_event(event.values)?),
GameEventType::MvmSniperHeadshotCurrency => GameEvent::MvmSniperHeadshotCurrency(MvmSniperHeadshotCurrencyEvent::from_raw_event(event.values)?),
GameEventType::MvmMannhattanPit => GameEvent::MvmMannhattanPit(MvmMannhattanPitEvent::from_raw_event(event.values)?),
GameEventType::FlagCarriedInDetectionZone => GameEvent::FlagCarriedInDetectionZone(FlagCarriedInDetectionZoneEvent::from_raw_event(event.values)?),
GameEventType::MvmAdvWaveKilledStunRadio => GameEvent::MvmAdvWaveKilledStunRadio(MvmAdvWaveKilledStunRadioEvent::from_raw_event(event.values)?),
GameEventType::PlayerDirecthitStun => GameEvent::PlayerDirecthitStun(PlayerDirecthitStunEvent::from_raw_event(event.values)?),
GameEventType::MvmSentryBusterKilled => GameEvent::MvmSentryBusterKilled(MvmSentryBusterKilledEvent::from_raw_event(event.values)?),
GameEventType::UpgradesFileChanged => GameEvent::UpgradesFileChanged(UpgradesFileChangedEvent::from_raw_event(event.values)?),
GameEventType::RdTeamPointsChanged => GameEvent::RdTeamPointsChanged(RdTeamPointsChangedEvent::from_raw_event(event.values)?),
GameEventType::RdRulesStateChanged => GameEvent::RdRulesStateChanged(RdRulesStateChangedEvent::from_raw_event(event.values)?),
GameEventType::RdRobotKilled => GameEvent::RdRobotKilled(RdRobotKilledEvent::from_raw_event(event.values)?),
GameEventType::RdRobotImpact => GameEvent::RdRobotImpact(RdRobotImpactEvent::from_raw_event(event.values)?),
GameEventType::TeamPlayPreRoundTimeLeft => GameEvent::TeamPlayPreRoundTimeLeft(TeamPlayPreRoundTimeLeftEvent::from_raw_event(event.values)?),
GameEventType::ParachuteDeploy => GameEvent::ParachuteDeploy(ParachuteDeployEvent::from_raw_event(event.values)?),
GameEventType::ParachuteHolster => GameEvent::ParachuteHolster(ParachuteHolsterEvent::from_raw_event(event.values)?),
GameEventType::KillRefillsMeter => GameEvent::KillRefillsMeter(KillRefillsMeterEvent::from_raw_event(event.values)?),
GameEventType::RpsTauntEvent => GameEvent::RpsTauntEvent(RpsTauntEventEvent::from_raw_event(event.values)?),
GameEventType::CongaKill => GameEvent::CongaKill(CongaKillEvent::from_raw_event(event.values)?),
GameEventType::PlayerInitialSpawn => GameEvent::PlayerInitialSpawn(PlayerInitialSpawnEvent::from_raw_event(event.values)?),
GameEventType::CompetitiveVictory => GameEvent::CompetitiveVictory(CompetitiveVictoryEvent::from_raw_event(event.values)?),
GameEventType::CompetitiveSkillratingUpdate => GameEvent::CompetitiveSkillratingUpdate(CompetitiveSkillratingUpdateEvent::from_raw_event(event.values)?),
GameEventType::MiniGameWin => GameEvent::MiniGameWin(MiniGameWinEvent::from_raw_event(event.values)?),
GameEventType::SentryOnGoActive => GameEvent::SentryOnGoActive(SentryOnGoActiveEvent::from_raw_event(event.values)?),
GameEventType::DuckXpLevelUp => GameEvent::DuckXpLevelUp(DuckXpLevelUpEvent::from_raw_event(event.values)?),
GameEventType::HLTVStatus => GameEvent::HLTVStatus(HLTVStatusEvent::from_raw_event(event.values)?),
GameEventType::HLTVCameraman => GameEvent::HLTVCameraman(HLTVCameramanEvent::from_raw_event(event.values)?),
GameEventType::HLTVRankCamera => GameEvent::HLTVRankCamera(HLTVRankCameraEvent::from_raw_event(event.values)?),
GameEventType::HLTVRankEntity => GameEvent::HLTVRankEntity(HLTVRankEntityEvent::from_raw_event(event.values)?),
GameEventType::HLTVFixed => GameEvent::HLTVFixed(HLTVFixedEvent::from_raw_event(event.values)?),
GameEventType::HLTVChase => GameEvent::HLTVChase(HLTVChaseEvent::from_raw_event(event.values)?),
GameEventType::HLTVMessage => GameEvent::HLTVMessage(HLTVMessageEvent::from_raw_event(event.values)?),
GameEventType::HLTVTitle => GameEvent::HLTVTitle(HLTVTitleEvent::from_raw_event(event.values)?),
GameEventType::HLTVChat => GameEvent::HLTVChat(HLTVChatEvent::from_raw_event(event.values)?),
GameEventType::ReplayStartRecord => GameEvent::ReplayStartRecord(ReplayStartRecordEvent::from_raw_event(event.values)?),
GameEventType::ReplaySessionInfo => GameEvent::ReplaySessionInfo(ReplaySessionInfoEvent::from_raw_event(event.values)?),
GameEventType::ReplayEndRecord => GameEvent::ReplayEndRecord(ReplayEndRecordEvent::from_raw_event(event.values)?),
GameEventType::ReplayReplaysAvailable => GameEvent::ReplayReplaysAvailable(ReplayReplaysAvailableEvent::from_raw_event(event.values)?),
GameEventType::ReplayServerError => GameEvent::ReplayServerError(ReplayServerErrorEvent::from_raw_event(event.values)?),
})
}
}

View file

@ -2,17 +2,19 @@ use std::collections::HashMap;
use crate::{ParseError, Result};
pub use super::gameevent_gen::{GameEvent, GameEventType};
#[derive(Debug)]
pub struct GameEventDefinition {
id: u32,
name: String,
entries: Vec<GameEventEntry>,
pub id: GameEventType,
pub name: String,
pub entries: Vec<GameEventEntry>,
}
#[derive(Debug)]
pub struct GameEventEntry {
name: String,
kind: GameEventValueType,
pub name: String,
pub kind: GameEventValueType,
}
#[derive(Debug, Clone, Copy)]
@ -26,12 +28,6 @@ pub enum GameEventValueType {
Local,
}
#[derive(Debug)]
pub struct GameEvent {
kind: GameEventType,
values: HashMap<String, GameEventValue>,
}
#[derive(Debug, Clone)]
pub enum GameEventValue {
String(String),
@ -131,388 +127,8 @@ impl FromGameEventValue for () {
}
}
#[derive(Debug, Clone, Copy)]
pub enum GameEventType {
ServerSpawnEvent,
ServerChangelevelFailedEvent,
ServerShutdownEvent,
ServerCvarEvent,
ServerMessageEvent,
ServerAddBanEvent,
ServerRemoveBanEvent,
PlayerConnectEvent,
PlayerConnectClientEvent,
PlayerInfoEvent,
PlayerDisconnectEvent,
PlayerActivateEvent,
PlayerSayEvent,
ClientDisconnectEvent,
ClientBeginConnectEvent,
ClientConnectedEvent,
ClientFullConnectEvent,
HostQuitEvent,
TeamInfoEvent,
TeamScoreEvent,
TeamPlayBroadcastAudioEvent,
PlayerTeamEvent,
PlayerClassEvent,
PlayerDeathEvent,
PlayerHurtEvent,
PlayerChatEvent,
PlayerScoreEvent,
PlayerSpawnEvent,
PlayerShootEvent,
PlayerUseEvent,
PlayerChangeNameEvent,
PlayerHintMessageEvent,
BasePlayerTeleportedEvent,
GameInitEvent,
GameNewMapEvent,
GameStartEvent,
GameEndEvent,
RoundStartEvent,
RoundEndEvent,
GameMessageEvent,
BreakBreakableEvent,
BreakPropEvent,
EntityKilledEvent,
BonusUpdatedEvent,
AchievementEventEvent,
AchievementIncrementEvent,
PhysgunPickupEvent,
FlareIgniteNpcEvent,
HelicopterGrenadePuntMissEvent,
UserDataDownloadedEvent,
RagdollDissolvedEvent,
HLTVChangedModeEvent,
HLTVChangedTargetEvent,
VoteEndedEvent,
VoteStartedEvent,
VoteChangedEvent,
VotePassedEvent,
VoteFailedEvent,
VoteCastEvent,
VoteOptionsEvent,
ReplaySavedEvent,
EnteredPerformanceModeEvent,
BrowseReplaysEvent,
ReplayYoutubeStatsEvent,
InventoryUpdatedEvent,
CartUpdatedEvent,
StorePricesheetUpdatedEvent,
GcConnectedEvent,
ItemSchemaInitializedEvent,
IntroFinishEvent,
IntroNextCameraEvent,
MmLobbyChatEvent,
MmLobbyMemberJoinEvent,
MmLobbyMemberLeaveEvent,
PlayerChangeClassEvent,
TfMapTimeRemainingEvent,
TfGameOverEvent,
CtfFlagCapturedEvent,
ControlPointInitializedEvent,
ControlPointUpdateImagesEvent,
ControlPointUpdateLayoutEvent,
ControlPointUpdateCappingEvent,
ControlPointUpdateOwnerEvent,
ControlPointStartTouchEvent,
ControlPointEndTouchEvent,
ControlPointPulseElementEvent,
ControlPointFakeCaptureEvent,
ControlPointFakeCaptureMultEvent,
TeamPlayRoundSelectedEvent,
TeamPlayRoundStartEvent,
TeamPlayRoundActiveEvent,
TeamPlayWaitingBeginsEvent,
TeamPlayWaitingEndsEvent,
TeamPlayWaitingAboutToEndEvent,
TeamPlayRestartRoundEvent,
TeamPlayReadyRestartEvent,
TeamPlayRoundRestartSecondsEvent,
TeamPlayTeamReadyEvent,
TeamPlayRoundWinEvent,
TeamPlayUpdateTimerEvent,
TeamPlayRoundStalemateEvent,
TeamPlayOvertimeBeginEvent,
TeamPlayOvertimeEndEvent,
TeamPlaySuddenDeathBeginEvent,
TeamPlaySuddenDeathEndEvent,
TeamPlayGameOverEvent,
TeamPlayMapTimeRemainingEvent,
TeamPlayTimerFlashEvent,
TeamPlayTimerTimeAddedEvent,
TeamPlayPointStartCaptureEvent,
TeamPlayPointCapturedEvent,
TeamPlayPointLockedEvent,
TeamPlayPointUnlockedEvent,
TeamPlayCaptureBrokenEvent,
TeamPlayCaptureBlockedEvent,
TeamPlayFlagEventEvent,
TeamPlayWinPanelEvent,
TeamPlayTeambalancedPlayerEvent,
TeamPlaySetupFinishedEvent,
TeamPlayAlertEvent,
TrainingCompleteEvent,
ShowFreezePanelEvent,
HideFreezePanelEvent,
FreezeCamStartedEvent,
LocalPlayerChangeTeamEvent,
LocalPlayerScoreChangedEvent,
LocalPlayerChangeClassEvent,
LocalPlayerRespawnEvent,
BuildingInfoChangedEvent,
LocalPlayerChangeDisguiseEvent,
PlayerAccountChangedEvent,
SpyPdaResetEvent,
FlagStatusUpdateEvent,
PlayerStatsUpdatedEvent,
PlayingCommentaryEvent,
PlayerChargedeployedEvent,
PlayerBuiltObjectEvent,
PlayerUpgradedObjectEvent,
PlayerCarryObjectEvent,
PlayerDropObjectEvent,
ObjectRemovedEvent,
ObjectDestroyedEvent,
ObjectDetonatedEvent,
AchievementEarnedEvent,
SpecTargetUpdatedEvent,
TournamentStateUpdateEvent,
TournamentEnableCountdownEvent,
PlayerCalledForMedicEvent,
PlayerAskedForBallEvent,
LocalPlayerBecameObserverEvent,
PlayerIgnitedInvEvent,
PlayerIgnitedEvent,
PlayerExtinguishedEvent,
PlayerTeleportedEvent,
PlayerHealedMedicCallEvent,
LocalPlayerChargeReadyEvent,
LocalPlayerWinddownEvent,
PlayerInvulnedEvent,
EscortSpeedEvent,
EscortProgressEvent,
EscortRecedeEvent,
GameUIActivatedEvent,
GameUIHiddenEvent,
PlayerEscortScoreEvent,
PlayerHealOnHitEvent,
PlayerStealsandvichEvent,
ShowClassLayoutEvent,
ShowVsPanelEvent,
PlayerDamagedEvent,
ArenaPlayerNotificationEvent,
ArenaMatchMaxStreakEvent,
ArenaRoundStartEvent,
ArenaWinPanelEvent,
PveWinPanelEvent,
AirDashEvent,
LandedEvent,
PlayerDamageDodgedEvent,
PlayerStunnedEvent,
ScoutGrandSlamEvent,
ScoutSlamdollLandedEvent,
ArrowImpactEvent,
PlayerJaratedEvent,
PlayerJaratedFadeEvent,
PlayerShieldBlockedEvent,
PlayerPinnedEvent,
PlayerHealedByMedicEvent,
PlayerSappedObjectEvent,
ItemFoundEvent,
ShowAnnotationEvent,
HideAnnotationEvent,
PostInventoryApplicationEvent,
ControlPointUnlockUpdatedEvent,
DeployBuffBannerEvent,
PlayerBuffEvent,
MedicDeathEvent,
OvertimeNagEvent,
TeamsChangedEvent,
HalloweenPumpkinGrabEvent,
RocketJumpEvent,
RocketJumpLandedEvent,
StickyJumpEvent,
StickyJumpLandedEvent,
MedicDefendedEvent,
LocalPlayerHealedEvent,
PlayerDestroyedPipeBombEvent,
ObjectDeflectedEvent,
PlayerMvpEvent,
RaidSpawnMobEvent,
RaidSpawnSquadEvent,
NavBlockedEvent,
PathTrackPassedEvent,
NumCappersChangedEvent,
PlayerRegenerateEvent,
UpdateStatusItemEvent,
StatsResetRoundEvent,
ScoreStatsAccumulatedUpdateEvent,
ScoreStatsAccumulatedResetEvent,
AchievementEarnedLocalEvent,
PlayerHealedEvent,
BuildingHealedEvent,
ItemPickupEvent,
DuelStatusEvent,
FishNoticeEvent,
FishNoticeArmEvent,
ThrowableHitEvent,
PumpkinLordSummonedEvent,
PumpkinLordKilledEvent,
MerasmusSummonedEvent,
MerasmusKilledEvent,
MerasmusEscapeWarningEvent,
MerasmusEscapedEvent,
EyeballBossSummonedEvent,
EyeballBossStunnedEvent,
EyeballBossKilledEvent,
EyeballBossKillerEvent,
EyeballBossEscapeImminentEvent,
EyeballBossEscapedEvent,
NpcHurtEvent,
ControlPointTimerUpdatedEvent,
PlayerHighfiveStartEvent,
PlayerHighfiveCancelEvent,
PlayerHighfiveSuccessEvent,
PlayerBonusPointsEvent,
PlayerUpgradedEvent,
PlayerBuybackEvent,
PlayerUsedPowerUpBottleEvent,
ChristmasGiftGrabEvent,
PlayerKilledAchievementZoneEvent,
PartyUpdatedEvent,
LobbyUpdatedEvent,
MvmMissionUpdateEvent,
RecalculateHolidaysEvent,
PlayerCurrencyChangedEvent,
DoomsdayRocketOpenEvent,
RemoveNemesisRelationshipsEvent,
MvmCreditBonusWaveEvent,
MvmCreditBonusAllEvent,
MvmCreditBonusAllAdvancedEvent,
MvmQuickSentryUpgradeEvent,
MvmTankDestroyedByPlayersEvent,
MvmKillRobotDeliveringBombEvent,
MvmPickupCurrencyEvent,
MvmBombCarrierKilledEvent,
MvmSentryBusterDetonateEvent,
MvmScoutMarkedForDeathEvent,
MvmMedicPowerupSharedEvent,
MvmBeginWaveEvent,
MvmWaveCompleteEvent,
MvmMissionCompleteEvent,
MvmBombResetByPlayerEvent,
MvmBombAlarmTriggeredEvent,
MvmBombDeployResetByPlayerEvent,
MvmWaveFailedEvent,
MvmResetStatsEvent,
DamageResistedEvent,
RevivePlayerNotifyEvent,
RevivePlayerStoppedEvent,
RevivePlayerCompleteEvent,
PlayerTurnedToGhostEvent,
MedigunShieldBlockedDamageEvent,
MvmAdvWaveCompleteNoGatesEvent,
MvmSniperHeadshotCurrencyEvent,
MvmMannhattanPitEvent,
FlagCarriedInDetectionZoneEvent,
MvmAdvWaveKilledStunRadioEvent,
PlayerDirecthitStunEvent,
MvmSentryBusterKilledEvent,
UpgradesFileChangedEvent,
RdTeamPointsChangedEvent,
RdRulesStateChangedEvent,
RdRobotKilledEvent,
RdRobotImpactEvent,
TeamPlayPreRoundTimeLeftEvent,
ParachuteDeployEvent,
ParachuteHolsterEvent,
KillRefillsMeterEvent,
RpsTauntEventEvent,
CongaKillEvent,
PlayerInitialSpawnEvent,
CompetitiveVictoryEvent,
CompetitiveStatsUpdateEvent,
MiniGameWinEvent,
SentryOnGoActiveEvent,
DuckXpLevelUpEvent,
QuestLogOpenedEvent,
SchemaUpdatedEvent,
LocalPlayerPickupWeaponEvent,
RdPlayerScorePointsEvent,
DemomanDetStickiesEvent,
QuestObjectiveCompletedEvent,
PlayerScoreChangedEvent,
KilledCappingPlayerEvent,
EnvironmentalDeathEvent,
ProjectileDirectHitEvent,
PassGetEvent,
PassScoreEvent,
PassFreeEvent,
PassPassCaughtEvent,
PassBallStolenEvent,
PassBallBlockedEvent,
DamagePreventedEvent,
HalloweenBossKilledEvent,
EscapedLootIslandEvent,
TaggedPlayerAsItEvent,
MerasmusStunnedEvent,
MerasmusPropFoundEvent,
HalloweenSkeletonKilledEvent,
EscapeHellEvent,
CrossSpectralBridgeEvent,
MiniGameWonEvent,
RespawnGhostEvent,
KillInHellEvent,
HalloweenDuckCollectedEvent,
SpecialScoreEvent,
TeamLeaderKilledEvent,
HalloweenSoulCollectedEvent,
RecalculateTruceEvent,
DeadringerCheatDeathEvent,
CrossbowHealEvent,
DamageMitigatedEvent,
PayloadPushedEvent,
PlayerAbandonedMatchEvent,
ClDrawlineEvent,
RestartTimerTimeEvent,
WinLimitChangedEvent,
WinPanelShowScoresEvent,
TopStreamsRequestFinishedEvent,
CompetitiveStateChangedEvent,
GlobalWarDataUpdatedEvent,
StopWatchChangedEvent,
DsStopEvent,
DsScreenshotEvent,
ShowMatchSummaryEvent,
ExperienceChangedEvent,
BeginXpLerpEvent,
MatchmakerStatsUpdatedEvent,
RematchVotePeriodOverEvent,
RematchFailedToCreateEvent,
PlayerRematchChangeEvent,
PingUpdatedEvent,
PlayerNextMapVoteChangeEvent,
VoteMapsChangedEvent,
HLTVStatusEvent,
HLTVCameramanEvent,
HLTVRankCameraEvent,
HLTVRankEntityEvent,
HLTVFixedEvent,
HLTVChaseEvent,
HLTVMessageEvent,
HLTVTitleEvent,
HLTVChatEvent,
ReplayStartRecordEvent,
ReplaySessionInfoEvent,
ReplayEndRecordEvent,
ReplayReplaysAvailableEvent,
ReplayServerErrorEvent,
}
pub struct RawGameEvent {
pub name: String,
pub event_type: GameEventType,
pub values: HashMap<String, GameEventValue>,
}

View file

@ -1,7 +1,49 @@
use std::collections::HashMap;
use bitstream_reader::{BitRead, BitReadSized, LittleEndian};
use crate::{ReadResult, Stream};
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
use crate::demo::gameevent_gen::GameEventType;
use crate::demo::gamevent::{GameEvent, GameEventDefinition, GameEventEntry, GameEventValue, GameEventValueType, RawGameEvent};
fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<GameEventValue> {
Ok(match definition.kind {
GameEventValueType::String => GameEventValue::String(stream.read()?),
GameEventValueType::Float => GameEventValue::Float(stream.read()?),
GameEventValueType::Long => GameEventValue::Long(stream.read()?),
GameEventValueType::Short => GameEventValue::Short(stream.read()?),
GameEventValueType::Byte => GameEventValue::Byte(stream.read()?),
GameEventValueType::Boolean => GameEventValue::Boolean(stream.read()?),
GameEventValueType::Local => GameEventValue::Local,
})
}
pub struct GameEventMessage {
pub event: GameEvent
}
impl Parse for GameEventMessage {
fn parse(stream: &mut Stream, state: &ParserState) -> Result<Self> {
let length: u16 = stream.read_sized(11)?;
let mut data = stream.read_bits(length as usize)?;
let event_type = data.read()?;
let raw_event = match state.event_definitions.get(&event_type) {
Some(definition) => {
let mut values: HashMap<String, GameEventValue> = HashMap::with_capacity(definition.entries.len());
for entry in &definition.entries {
values.insert(entry.name.clone(), read_event_value(stream, &entry)?);
}
RawGameEvent {
event_type,
values,
}
}
None => unreachable!()
};
let event = GameEvent::from_raw_event(raw_event)?;
Ok(GameEventMessage {
event
})
}
}

View file

@ -11,6 +11,7 @@ pub mod stringtable;
pub mod voice;
pub mod bspdecal;
pub mod usermessage;
pub mod gameevent;
#[derive(Primitive, Debug)]
pub enum MessageType {

View file

@ -3,12 +3,13 @@ use crate::demo::sendprop::SendProp;
use crate::Stream;
use std::collections::HashMap;
use crate::demo::packet::stringtable::StringTable;
use crate::demo::gameevent_gen::GameEventType;
#[derive(Default, Debug)]
pub struct ParserState {
pub version: u32,
pub static_baselines: HashMap<u32, StaticBaseline>,
pub event_definitions: HashMap<u32, GameEventDefinition>,
pub event_definitions: HashMap<GameEventType, GameEventDefinition>,
pub string_tables: Vec<StringTable>
}