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

fix schema for GameEventType

This commit is contained in:
Robin Appelman 2024-02-02 19:31:12 +01:00
commit 042481b3ab
3 changed files with 816 additions and 446 deletions

View file

@ -10894,409 +10894,409 @@
{
"type": "string",
"enum": [
"ServerSpawn",
"ServerChangeLevelFailed",
"ServerShutdown",
"ServerCvar",
"ServerMessage",
"ServerAddBan",
"ServerRemoveBan",
"PlayerConnect",
"PlayerConnectClient",
"PlayerInfo",
"PlayerDisconnect",
"PlayerActivate",
"PlayerSay",
"ClientDisconnect",
"ClientBeginConnect",
"ClientConnected",
"ClientFullConnect",
"HostQuit",
"TeamInfo",
"TeamScore",
"TeamPlayBroadcastAudio",
"PlayerTeam",
"PlayerClass",
"PlayerDeath",
"PlayerHurt",
"PlayerChat",
"PlayerScore",
"PlayerSpawn",
"PlayerShoot",
"PlayerUse",
"PlayerChangeName",
"PlayerHintMessage",
"BasePlayerTeleported",
"GameInit",
"GameNewMap",
"GameStart",
"GameEnd",
"RoundStart",
"RoundEnd",
"GameMessage",
"BreakBreakable",
"BreakProp",
"EntityKilled",
"BonusUpdated",
"AchievementEvent",
"AchievementIncrement",
"PhysgunPickup",
"FlareIgniteNpc",
"HelicopterGrenadePuntMiss",
"UserDataDownloaded",
"RagdollDissolved",
"HLTVChangedMode",
"HLTVChangedTarget",
"VoteEnded",
"VoteStarted",
"VoteChanged",
"VotePassed",
"VoteFailed",
"VoteCast",
"VoteOptions",
"ReplaySaved",
"EnteredPerformanceMode",
"BrowseReplays",
"ReplayYoutubeStats",
"InventoryUpdated",
"CartUpdated",
"StorePriceSheetUpdated",
"EconInventoryConnected",
"ItemSchemaInitialized",
"GcNewSession",
"GcLostSession",
"IntroFinish",
"IntroNextCamera",
"PlayerChangeClass",
"TfMapTimeRemaining",
"TfGameOver",
"CtfFlagCaptured",
"ControlPointInitialized",
"ControlPointUpdateImages",
"ControlPointUpdateLayout",
"ControlPointUpdateCapping",
"ControlPointUpdateOwner",
"ControlPointStartTouch",
"ControlPointEndTouch",
"ControlPointPulseElement",
"ControlPointFakeCapture",
"ControlPointFakeCaptureMultiplier",
"TeamPlayRoundSelected",
"TeamPlayRoundStart",
"TeamPlayRoundActive",
"TeamPlayWaitingBegins",
"TeamPlayWaitingEnds",
"TeamPlayWaitingAboutToEnd",
"TeamPlayRestartRound",
"TeamPlayReadyRestart",
"TeamPlayRoundRestartSeconds",
"TeamPlayTeamReady",
"TeamPlayRoundWin",
"TeamPlayUpdateTimer",
"TeamPlayRoundStalemate",
"TeamPlayOvertimeBegin",
"TeamPlayOvertimeEnd",
"TeamPlaySuddenDeathBegin",
"TeamPlaySuddenDeathEnd",
"TeamPlayGameOver",
"TeamPlayMapTimeRemaining",
"TeamPlayTimerFlash",
"TeamPlayTimerTimeAdded",
"TeamPlayPointStartCapture",
"TeamPlayPointCaptured",
"TeamPlayPointLocked",
"TeamPlayPointUnlocked",
"TeamPlayCaptureBroken",
"TeamPlayCaptureBlocked",
"TeamPlayFlagEvent",
"TeamPlayWinPanel",
"TeamPlayTeamBalancedPlayer",
"TeamPlaySetupFinished",
"TeamPlayAlert",
"TrainingComplete",
"ShowFreezePanel",
"HideFreezePanel",
"FreezeCamStarted",
"LocalPlayerChangeTeam",
"LocalPlayerScoreChanged",
"LocalPlayerChangeClass",
"LocalPlayerRespawn",
"BuildingInfoChanged",
"LocalPlayerChangeDisguise",
"PlayerAccountChanged",
"SpyPdaReset",
"FlagStatusUpdate",
"PlayerStatsUpdated",
"PlayingCommentary",
"PlayerChargeDeployed",
"PlayerBuiltObject",
"PlayerUpgradedObject",
"PlayerCarryObject",
"PlayerDropObject",
"ObjectRemoved",
"ObjectDestroyed",
"ObjectDetonated",
"AchievementEarned",
"SpecTargetUpdated",
"TournamentStateUpdate",
"TournamentEnableCountdown",
"PlayerCalledForMedic",
"PlayerAskedForBall",
"LocalPlayerBecameObserver",
"PlayerIgnitedInv",
"PlayerIgnited",
"PlayerExtinguished",
"PlayerTeleported",
"PlayerHealedMedicCall",
"LocalPlayerChargeReady",
"LocalPlayerWindDown",
"PlayerInvulned",
"EscortSpeed",
"EscortProgress",
"EscortRecede",
"GameUIActivated",
"GameUIHidden",
"PlayerEscortScore",
"PlayerHealOnHit",
"PlayerStealSandvich",
"ShowClassLayout",
"ShowVsPanel",
"PlayerDamaged",
"ArenaPlayerNotification",
"ArenaMatchMaxStreak",
"ArenaRoundStart",
"ArenaWinPanel",
"PveWinPanel",
"AirDash",
"Landed",
"PlayerDamageDodged",
"PlayerStunned",
"ScoutGrandSlam",
"ScoutSlamdollLanded",
"ArrowImpact",
"PlayerJarated",
"PlayerJaratedFade",
"PlayerShieldBlocked",
"PlayerPinned",
"PlayerHealedByMedic",
"PlayerSappedObject",
"ItemFound",
"ShowAnnotation",
"HideAnnotation",
"PostInventoryApplication",
"ControlPointUnlockUpdated",
"DeployBuffBanner",
"PlayerBuff",
"MedicDeath",
"OvertimeNag",
"TeamsChanged",
"HalloweenPumpkinGrab",
"RocketJump",
"RocketJumpLanded",
"StickyJump",
"StickyJumpLanded",
"RocketPackLaunch",
"RocketPackLanded",
"MedicDefended",
"LocalPlayerHealed",
"PlayerDestroyedPipeBomb",
"ObjectDeflected",
"PlayerMvp",
"RaidSpawnMob",
"RaidSpawnSquad",
"NavBlocked",
"PathTrackPassed",
"NumCappersChanged",
"PlayerRegenerate",
"UpdateStatusItem",
"StatsResetRound",
"ScoreStatsAccumulatedUpdate",
"ScoreStatsAccumulatedReset",
"AchievementEarnedLocal",
"PlayerHealed",
"BuildingHealed",
"ItemPickup",
"DuelStatus",
"FishNotice",
"FishNoticeArm",
"SlapNotice",
"ThrowableHit",
"PumpkinLordSummoned",
"PumpkinLordKilled",
"MerasmusSummoned",
"MerasmusKilled",
"MerasmusEscapeWarning",
"MerasmusEscaped",
"EyeballBossSummoned",
"EyeballBossStunned",
"EyeballBossKilled",
"EyeballBossKiller",
"EyeballBossEscapeImminent",
"EyeballBossEscaped",
"NpcHurt",
"ControlPointTimerUpdated",
"PlayerHighFiveStart",
"PlayerHighFiveCancel",
"PlayerHighFiveSuccess",
"PlayerBonusPoints",
"PlayerUpgraded",
"PlayerBuyback",
"PlayerUsedPowerUpBottle",
"ChristmasGiftGrab",
"PlayerKilledAchievementZone",
"PartyUpdated",
"PartyPrefChanged",
"PartyCriteriaChanged",
"PartyInvitesChanged",
"PartyQueueStateChanged",
"PartyChat",
"PartyMemberJoin",
"PartyMemberLeave",
"MatchInvitesUpdated",
"LobbyUpdated",
"MvmMissionUpdate",
"RecalculateHolidays",
"PlayerCurrencyChanged",
"DoomsdayRocketOpen",
"RemoveNemesisRelationships",
"MvmCreditBonusWave",
"MvmCreditBonusAll",
"MvmCreditBonusAllAdvanced",
"MvmQuickSentryUpgrade",
"MvmTankDestroyedByPlayers",
"MvmKillRobotDeliveringBomb",
"MvmPickupCurrency",
"MvmBombCarrierKilled",
"MvmSentryBusterDetonate",
"MvmScoutMarkedForDeath",
"MvmMedicPowerUpShared",
"MvmBeginWave",
"MvmWaveComplete",
"MvmMissionComplete",
"MvmBombResetByPlayer",
"MvmBombAlarmTriggered",
"MvmBombDeployResetByPlayer",
"MvmWaveFailed",
"MvmResetStats",
"DamageResisted",
"RevivePlayerNotify",
"RevivePlayerStopped",
"RevivePlayerComplete",
"PlayerTurnedToGhost",
"MedigunShieldBlockedDamage",
"MvmAdvWaveCompleteNoGates",
"MvmSniperHeadshotCurrency",
"MvmMannhattanPit",
"FlagCarriedInDetectionZone",
"MvmAdvWaveKilledStunRadio",
"PlayerDirectHitStun",
"MvmSentryBusterKilled",
"UpgradesFileChanged",
"RdTeamPointsChanged",
"RdRulesStateChanged",
"RdRobotKilled",
"RdRobotImpact",
"TeamPlayPreRoundTimeLeft",
"ParachuteDeploy",
"ParachuteHolster",
"KillRefillsMeter",
"RpsTauntEvent",
"CongaKill",
"PlayerInitialSpawn",
"CompetitiveVictory",
"CompetitiveStatsUpdate",
"MiniGameWin",
"SentryOnGoActive",
"DuckXpLevelUp",
"QuestLogOpened",
"SchemaUpdated",
"LocalPlayerPickupWeapon",
"RdPlayerScorePoints",
"DemomanDetStickies",
"QuestObjectiveCompleted",
"PlayerScoreChanged",
"KilledCappingPlayer",
"EnvironmentalDeath",
"ProjectileDirectHit",
"PassGet",
"PassScore",
"PassFree",
"PassPassCaught",
"PassBallStolen",
"PassBallBlocked",
"DamagePrevented",
"HalloweenBossKilled",
"EscapedLootIsland",
"TaggedPlayerAsIt",
"MerasmusStunned",
"MerasmusPropFound",
"HalloweenSkeletonKilled",
"SkeletonKilledQuest",
"SkeletonKingKilledQuest",
"EscapeHell",
"CrossSpectralBridge",
"MiniGameWon",
"RespawnGhost",
"KillInHell",
"HalloweenDuckCollected",
"SpecialScore",
"TeamLeaderKilled",
"HalloweenSoulCollected",
"RecalculateTruce",
"DeadRingerCheatDeath",
"CrossbowHeal",
"DamageMitigated",
"PayloadPushed",
"PlayerAbandonedMatch",
"ClDrawline",
"RestartTimerTime",
"WinLimitChanged",
"WinPanelShowScores",
"TopStreamsRequestFinished",
"CompetitiveStateChanged",
"GlobalWarDataUpdated",
"StopWatchChanged",
"DsStop",
"DsScreenshot",
"ShowMatchSummary",
"ExperienceChanged",
"BeginXpLerp",
"MatchmakerStatsUpdated",
"RematchVotePeriodOver",
"RematchFailedToCreate",
"PlayerRematchChange",
"PingUpdated",
"MMStatsUpdated",
"PlayerNextMapVoteChange",
"VoteMapsChanged",
"ProtoDefChanged",
"PlayerDomination",
"PlayerRocketPackPushed",
"QuestRequest",
"QuestResponse",
"QuestProgress",
"ProjectileRemoved",
"QuestMapDataChanged",
"GasDousedPlayerIgnited",
"QuestTurnInState",
"ItemsAcknowledged",
"CapperKilled",
"MainMenuStabilized",
"WorldStatusChanged",
"HLTVStatus",
"HLTVCameraman",
"HLTVRankCamera",
"HLTVRankEntity",
"HLTVFixed",
"HLTVChase",
"HLTVMessage",
"HLTVTitle",
"HLTVChat",
"ReplayStartRecord",
"ReplaySessionInfo",
"ReplayEndRecord",
"ReplayReplaysAvailable",
"ReplayServerError"
"server_spawn",
"server_changelevel_failed",
"server_shutdown",
"server_cvar",
"server_message",
"server_addban",
"server_removeban",
"player_connect",
"player_connect_client",
"player_info",
"player_disconnect",
"player_activate",
"player_say",
"client_disconnect",
"client_beginconnect",
"client_connected",
"client_fullconnect",
"host_quit",
"team_info",
"team_score",
"teamplay_broadcast_audio",
"player_team",
"player_class",
"player_death",
"player_hurt",
"player_chat",
"player_score",
"player_spawn",
"player_shoot",
"player_use",
"player_changename",
"player_hintmessage",
"base_player_teleported",
"game_init",
"game_newmap",
"game_start",
"game_end",
"round_start",
"round_end",
"game_message",
"break_breakable",
"break_prop",
"entity_killed",
"bonus_updated",
"achievement_event",
"achievement_increment",
"physgun_pickup",
"flare_ignite_npc",
"helicopter_grenade_punt_miss",
"user_data_downloaded",
"ragdoll_dissolved",
"hltv_changed_mode",
"hltv_changed_target",
"vote_ended",
"vote_started",
"vote_changed",
"vote_passed",
"vote_failed",
"vote_cast",
"vote_options",
"replay_saved",
"entered_performance_mode",
"browse_replays",
"replay_youtube_stats",
"inventory_updated",
"cart_updated",
"store_pricesheet_updated",
"econ_inventory_connected",
"item_schema_initialized",
"gc_new_session",
"gc_lost_session",
"intro_finish",
"intro_nextcamera",
"player_changeclass",
"tf_map_time_remaining",
"tf_game_over",
"ctf_flag_captured",
"controlpoint_initialized",
"controlpoint_updateimages",
"controlpoint_updatelayout",
"controlpoint_updatecapping",
"controlpoint_updateowner",
"controlpoint_starttouch",
"controlpoint_endtouch",
"controlpoint_pulse_element",
"controlpoint_fake_capture",
"controlpoint_fake_capture_mult",
"teamplay_round_selected",
"teamplay_round_start",
"teamplay_round_active",
"teamplay_waiting_begins",
"teamplay_waiting_ends",
"teamplay_waiting_abouttoend",
"teamplay_restart_round",
"teamplay_ready_restart",
"teamplay_round_restart_seconds",
"teamplay_team_ready",
"teamplay_round_win",
"teamplay_update_timer",
"teamplay_round_stalemate",
"teamplay_overtime_begin",
"teamplay_overtime_end",
"teamplay_suddendeath_begin",
"teamplay_suddendeath_end",
"teamplay_game_over",
"teamplay_map_time_remaining",
"teamplay_timer_flash",
"teamplay_timer_time_added",
"teamplay_point_startcapture",
"teamplay_point_captured",
"teamplay_point_locked",
"teamplay_point_unlocked",
"teamplay_capture_broken",
"teamplay_capture_blocked",
"teamplay_flag_event",
"teamplay_win_panel",
"teamplay_teambalanced_player",
"teamplay_setup_finished",
"teamplay_alert",
"training_complete",
"show_freezepanel",
"hide_freezepanel",
"freezecam_started",
"localplayer_changeteam",
"localplayer_score_changed",
"localplayer_changeclass",
"localplayer_respawn",
"building_info_changed",
"localplayer_changedisguise",
"player_account_changed",
"spy_pda_reset",
"flagstatus_update",
"player_stats_updated",
"playing_commentary",
"player_chargedeployed",
"player_builtobject",
"player_upgradedobject",
"player_carryobject",
"player_dropobject",
"object_removed",
"object_destroyed",
"object_detonated",
"achievement_earned",
"spec_target_updated",
"tournament_stateupdate",
"tournament_enablecountdown",
"player_calledformedic",
"player_askedforball",
"localplayer_becameobserver",
"player_ignited_inv",
"player_ignited",
"player_extinguished",
"player_teleported",
"player_healedmediccall",
"localplayer_chargeready",
"localplayer_winddown",
"player_invulned",
"escort_speed",
"escort_progress",
"escort_recede",
"gameui_activated",
"gameui_hidden",
"player_escort_score",
"player_healonhit",
"player_stealsandvich",
"show_class_layout",
"show_vs_panel",
"player_damaged",
"arena_player_notification",
"arena_match_maxstreak",
"arena_round_start",
"arena_win_panel",
"pve_win_panel",
"air_dash",
"landed",
"player_damage_dodged",
"player_stunned",
"scout_grand_slam",
"scout_slamdoll_landed",
"arrow_impact",
"player_jarated",
"player_jarated_fade",
"player_shield_blocked",
"player_pinned",
"player_healedbymedic",
"player_sapped_object",
"item_found",
"show_annotation",
"hide_annotation",
"post_inventory_application",
"controlpoint_unlock_updated",
"deploy_buff_banner",
"player_buff",
"medic_death",
"overtime_nag",
"teams_changed",
"halloween_pumpkin_grab",
"rocket_jump",
"rocket_jump_landed",
"sticky_jump",
"sticky_jump_landed",
"rocketpack_launch",
"rocketpack_landed",
"medic_defended",
"localplayer_healed",
"player_destroyed_pipebomb",
"object_deflected",
"player_mvp",
"raid_spawn_mob",
"raid_spawn_squad",
"nav_blocked",
"path_track_passed",
"num_cappers_changed",
"player_regenerate",
"update_status_item",
"stats_resetround",
"scorestats_accumulated_update",
"scorestats_accumulated_reset",
"achievement_earned_local",
"player_healed",
"building_healed",
"item_pickup",
"duel_status",
"fish_notice",
"fish_notice__arm",
"slap_notice",
"throwable_hit",
"pumpkin_lord_summoned",
"pumpkin_lord_killed",
"merasmus_summoned",
"merasmus_killed",
"merasmus_escape_warning",
"merasmus_escaped",
"eyeball_boss_summoned",
"eyeball_boss_stunned",
"eyeball_boss_killed",
"eyeball_boss_killer",
"eyeball_boss_escape_imminent",
"eyeball_boss_escaped",
"npc_hurt",
"controlpoint_timer_updated",
"player_highfive_start",
"player_highfive_cancel",
"player_highfive_success",
"player_bonuspoints",
"player_upgraded",
"player_buyback",
"player_used_powerup_bottle",
"christmas_gift_grab",
"player_killed_achievement_zone",
"party_updated",
"party_pref_changed",
"party_criteria_changed",
"party_invites_changed",
"party_queue_state_changed",
"party_chat",
"party_member_join",
"party_member_leave",
"match_invites_updated",
"lobby_updated",
"mvm_mission_update",
"recalculate_holidays",
"player_currency_changed",
"doomsday_rocket_open",
"remove_nemesis_relationships",
"mvm_creditbonus_wave",
"mvm_creditbonus_all",
"mvm_creditbonus_all_advanced",
"mvm_quick_sentry_upgrade",
"mvm_tank_destroyed_by_players",
"mvm_kill_robot_delivering_bomb",
"mvm_pickup_currency",
"mvm_bomb_carrier_killed",
"mvm_sentrybuster_detonate",
"mvm_scout_marked_for_death",
"mvm_medic_powerup_shared",
"mvm_begin_wave",
"mvm_wave_complete",
"mvm_mission_complete",
"mvm_bomb_reset_by_player",
"mvm_bomb_alarm_triggered",
"mvm_bomb_deploy_reset_by_player",
"mvm_wave_failed",
"mvm_reset_stats",
"damage_resisted",
"revive_player_notify",
"revive_player_stopped",
"revive_player_complete",
"player_turned_to_ghost",
"medigun_shield_blocked_damage",
"mvm_adv_wave_complete_no_gates",
"mvm_sniper_headshot_currency",
"mvm_mannhattan_pit",
"flag_carried_in_detection_zone",
"mvm_adv_wave_killed_stun_radio",
"player_directhit_stun",
"mvm_sentrybuster_killed",
"upgrades_file_changed",
"rd_team_points_changed",
"rd_rules_state_changed",
"rd_robot_killed",
"rd_robot_impact",
"teamplay_pre_round_time_left",
"parachute_deploy",
"parachute_holster",
"kill_refills_meter",
"rps_taunt_event",
"conga_kill",
"player_initial_spawn",
"competitive_victory",
"competitive_stats_update",
"minigame_win",
"sentry_on_go_active",
"duck_xp_level_up",
"questlog_opened",
"schema_updated",
"localplayer_pickup_weapon",
"rd_player_score_points",
"demoman_det_stickies",
"quest_objective_completed",
"player_score_changed",
"killed_capping_player",
"environmental_death",
"projectile_direct_hit",
"pass_get",
"pass_score",
"pass_free",
"pass_pass_caught",
"pass_ball_stolen",
"pass_ball_blocked",
"damage_prevented",
"halloween_boss_killed",
"escaped_loot_island",
"tagged_player_as_it",
"merasmus_stunned",
"merasmus_prop_found",
"halloween_skeleton_killed",
"skeleton_killed_quest",
"skeleton_king_killed_quest",
"escape_hell",
"cross_spectral_bridge",
"minigame_won",
"respawn_ghost",
"kill_in_hell",
"halloween_duck_collected",
"special_score",
"team_leader_killed",
"halloween_soul_collected",
"recalculate_truce",
"deadringer_cheat_death",
"crossbow_heal",
"damage_mitigated",
"payload_pushed",
"player_abandoned_match",
"cl_drawline",
"restart_timer_time",
"winlimit_changed",
"winpanel_show_scores",
"top_streams_request_finished",
"competitive_state_changed",
"global_war_data_updated",
"stop_watch_changed",
"ds_stop",
"ds_screenshot",
"show_match_summary",
"experience_changed",
"begin_xp_lerp",
"matchmaker_stats_updated",
"rematch_vote_period_over",
"rematch_failed_to_create",
"player_rematch_change",
"ping_updated",
"mmstats_updated",
"player_next_map_vote_change",
"vote_maps_changed",
"proto_def_changed",
"player_domination",
"player_rocketpack_pushed",
"quest_request",
"quest_response",
"quest_progress",
"projectile_removed",
"quest_map_data_changed",
"gas_doused_player_ignited",
"quest_turn_in_state",
"items_acknowledged",
"capper_killed",
"mainmenu_stabilized",
"world_status_changed",
"hltv_status",
"hltv_cameraman",
"hltv_rank_camera",
"hltv_rank_entity",
"hltv_fixed",
"hltv_chase",
"hltv_message",
"hltv_title",
"hltv_chat",
"replay_startrecord",
"replay_sessioninfo",
"replay_endrecord",
"replay_replaysavailable",
"replay_servererror"
]
},
{

View file

@ -229,7 +229,7 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
use crate::demo::Stream;
use crate::{ParseError, Result};
use bitbuffer::{BitRead, LittleEndian, BitWrite, BitWriteStream};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde::{Deserialize, Serialize};
use crate::demo::data::MaybeUtf8String;
);
@ -297,10 +297,14 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
});
let event_types = events.iter().map(|event| {
let name_str = get_event_name(event.event_type.as_str());
let type_name = event.event_type.as_str();
let name_str = get_event_name(type_name);
let name = Ident::new(&name_str, span);
quote!(#name,)
quote!(
#[serde(rename = #type_name)]
#name,
)
});
let type_from_names = events.iter().map(|event| {
@ -398,32 +402,12 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
}
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GameEventType {
#(#event_types)*
Unknown(String),
}
impl Serialize for GameEventType {
fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for GameEventType {
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let str = <&str>::deserialize(deserializer)?;
Ok(GameEventType::from_type_name(str))
}
}
impl GameEventType {
pub fn from_type_name(name: &str) -> Self {
match name {

View file

@ -3,7 +3,7 @@ use crate::demo::data::MaybeUtf8String;
use crate::demo::Stream;
use crate::{ParseError, Result};
use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde::{Deserialize, Serialize};
fn read_value<'a, T: EventValue + BitRead<'a, LittleEndian> + Default>(
stream: &mut Stream<'a>,
entry: Option<&GameEventEntry>,
@ -6756,430 +6756,816 @@ pub enum GameEvent {
Unknown(RawGameEvent),
}
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GameEventType {
#[serde(rename = "server_spawn")]
ServerSpawn,
#[serde(rename = "server_changelevel_failed")]
ServerChangeLevelFailed,
#[serde(rename = "server_shutdown")]
ServerShutdown,
#[serde(rename = "server_cvar")]
ServerCvar,
#[serde(rename = "server_message")]
ServerMessage,
#[serde(rename = "server_addban")]
ServerAddBan,
#[serde(rename = "server_removeban")]
ServerRemoveBan,
#[serde(rename = "player_connect")]
PlayerConnect,
#[serde(rename = "player_connect_client")]
PlayerConnectClient,
#[serde(rename = "player_info")]
PlayerInfo,
#[serde(rename = "player_disconnect")]
PlayerDisconnect,
#[serde(rename = "player_activate")]
PlayerActivate,
#[serde(rename = "player_say")]
PlayerSay,
#[serde(rename = "client_disconnect")]
ClientDisconnect,
#[serde(rename = "client_beginconnect")]
ClientBeginConnect,
#[serde(rename = "client_connected")]
ClientConnected,
#[serde(rename = "client_fullconnect")]
ClientFullConnect,
#[serde(rename = "host_quit")]
HostQuit,
#[serde(rename = "team_info")]
TeamInfo,
#[serde(rename = "team_score")]
TeamScore,
#[serde(rename = "teamplay_broadcast_audio")]
TeamPlayBroadcastAudio,
#[serde(rename = "player_team")]
PlayerTeam,
#[serde(rename = "player_class")]
PlayerClass,
#[serde(rename = "player_death")]
PlayerDeath,
#[serde(rename = "player_hurt")]
PlayerHurt,
#[serde(rename = "player_chat")]
PlayerChat,
#[serde(rename = "player_score")]
PlayerScore,
#[serde(rename = "player_spawn")]
PlayerSpawn,
#[serde(rename = "player_shoot")]
PlayerShoot,
#[serde(rename = "player_use")]
PlayerUse,
#[serde(rename = "player_changename")]
PlayerChangeName,
#[serde(rename = "player_hintmessage")]
PlayerHintMessage,
#[serde(rename = "base_player_teleported")]
BasePlayerTeleported,
#[serde(rename = "game_init")]
GameInit,
#[serde(rename = "game_newmap")]
GameNewMap,
#[serde(rename = "game_start")]
GameStart,
#[serde(rename = "game_end")]
GameEnd,
#[serde(rename = "round_start")]
RoundStart,
#[serde(rename = "round_end")]
RoundEnd,
#[serde(rename = "game_message")]
GameMessage,
#[serde(rename = "break_breakable")]
BreakBreakable,
#[serde(rename = "break_prop")]
BreakProp,
#[serde(rename = "entity_killed")]
EntityKilled,
#[serde(rename = "bonus_updated")]
BonusUpdated,
#[serde(rename = "achievement_event")]
AchievementEvent,
#[serde(rename = "achievement_increment")]
AchievementIncrement,
#[serde(rename = "physgun_pickup")]
PhysgunPickup,
#[serde(rename = "flare_ignite_npc")]
FlareIgniteNpc,
#[serde(rename = "helicopter_grenade_punt_miss")]
HelicopterGrenadePuntMiss,
#[serde(rename = "user_data_downloaded")]
UserDataDownloaded,
#[serde(rename = "ragdoll_dissolved")]
RagdollDissolved,
#[serde(rename = "hltv_changed_mode")]
HLTVChangedMode,
#[serde(rename = "hltv_changed_target")]
HLTVChangedTarget,
#[serde(rename = "vote_ended")]
VoteEnded,
#[serde(rename = "vote_started")]
VoteStarted,
#[serde(rename = "vote_changed")]
VoteChanged,
#[serde(rename = "vote_passed")]
VotePassed,
#[serde(rename = "vote_failed")]
VoteFailed,
#[serde(rename = "vote_cast")]
VoteCast,
#[serde(rename = "vote_options")]
VoteOptions,
#[serde(rename = "replay_saved")]
ReplaySaved,
#[serde(rename = "entered_performance_mode")]
EnteredPerformanceMode,
#[serde(rename = "browse_replays")]
BrowseReplays,
#[serde(rename = "replay_youtube_stats")]
ReplayYoutubeStats,
#[serde(rename = "inventory_updated")]
InventoryUpdated,
#[serde(rename = "cart_updated")]
CartUpdated,
#[serde(rename = "store_pricesheet_updated")]
StorePriceSheetUpdated,
#[serde(rename = "econ_inventory_connected")]
EconInventoryConnected,
#[serde(rename = "item_schema_initialized")]
ItemSchemaInitialized,
#[serde(rename = "gc_new_session")]
GcNewSession,
#[serde(rename = "gc_lost_session")]
GcLostSession,
#[serde(rename = "intro_finish")]
IntroFinish,
#[serde(rename = "intro_nextcamera")]
IntroNextCamera,
#[serde(rename = "player_changeclass")]
PlayerChangeClass,
#[serde(rename = "tf_map_time_remaining")]
TfMapTimeRemaining,
#[serde(rename = "tf_game_over")]
TfGameOver,
#[serde(rename = "ctf_flag_captured")]
CtfFlagCaptured,
#[serde(rename = "controlpoint_initialized")]
ControlPointInitialized,
#[serde(rename = "controlpoint_updateimages")]
ControlPointUpdateImages,
#[serde(rename = "controlpoint_updatelayout")]
ControlPointUpdateLayout,
#[serde(rename = "controlpoint_updatecapping")]
ControlPointUpdateCapping,
#[serde(rename = "controlpoint_updateowner")]
ControlPointUpdateOwner,
#[serde(rename = "controlpoint_starttouch")]
ControlPointStartTouch,
#[serde(rename = "controlpoint_endtouch")]
ControlPointEndTouch,
#[serde(rename = "controlpoint_pulse_element")]
ControlPointPulseElement,
#[serde(rename = "controlpoint_fake_capture")]
ControlPointFakeCapture,
#[serde(rename = "controlpoint_fake_capture_mult")]
ControlPointFakeCaptureMultiplier,
#[serde(rename = "teamplay_round_selected")]
TeamPlayRoundSelected,
#[serde(rename = "teamplay_round_start")]
TeamPlayRoundStart,
#[serde(rename = "teamplay_round_active")]
TeamPlayRoundActive,
#[serde(rename = "teamplay_waiting_begins")]
TeamPlayWaitingBegins,
#[serde(rename = "teamplay_waiting_ends")]
TeamPlayWaitingEnds,
#[serde(rename = "teamplay_waiting_abouttoend")]
TeamPlayWaitingAboutToEnd,
#[serde(rename = "teamplay_restart_round")]
TeamPlayRestartRound,
#[serde(rename = "teamplay_ready_restart")]
TeamPlayReadyRestart,
#[serde(rename = "teamplay_round_restart_seconds")]
TeamPlayRoundRestartSeconds,
#[serde(rename = "teamplay_team_ready")]
TeamPlayTeamReady,
#[serde(rename = "teamplay_round_win")]
TeamPlayRoundWin,
#[serde(rename = "teamplay_update_timer")]
TeamPlayUpdateTimer,
#[serde(rename = "teamplay_round_stalemate")]
TeamPlayRoundStalemate,
#[serde(rename = "teamplay_overtime_begin")]
TeamPlayOvertimeBegin,
#[serde(rename = "teamplay_overtime_end")]
TeamPlayOvertimeEnd,
#[serde(rename = "teamplay_suddendeath_begin")]
TeamPlaySuddenDeathBegin,
#[serde(rename = "teamplay_suddendeath_end")]
TeamPlaySuddenDeathEnd,
#[serde(rename = "teamplay_game_over")]
TeamPlayGameOver,
#[serde(rename = "teamplay_map_time_remaining")]
TeamPlayMapTimeRemaining,
#[serde(rename = "teamplay_timer_flash")]
TeamPlayTimerFlash,
#[serde(rename = "teamplay_timer_time_added")]
TeamPlayTimerTimeAdded,
#[serde(rename = "teamplay_point_startcapture")]
TeamPlayPointStartCapture,
#[serde(rename = "teamplay_point_captured")]
TeamPlayPointCaptured,
#[serde(rename = "teamplay_point_locked")]
TeamPlayPointLocked,
#[serde(rename = "teamplay_point_unlocked")]
TeamPlayPointUnlocked,
#[serde(rename = "teamplay_capture_broken")]
TeamPlayCaptureBroken,
#[serde(rename = "teamplay_capture_blocked")]
TeamPlayCaptureBlocked,
#[serde(rename = "teamplay_flag_event")]
TeamPlayFlagEvent,
#[serde(rename = "teamplay_win_panel")]
TeamPlayWinPanel,
#[serde(rename = "teamplay_teambalanced_player")]
TeamPlayTeamBalancedPlayer,
#[serde(rename = "teamplay_setup_finished")]
TeamPlaySetupFinished,
#[serde(rename = "teamplay_alert")]
TeamPlayAlert,
#[serde(rename = "training_complete")]
TrainingComplete,
#[serde(rename = "show_freezepanel")]
ShowFreezePanel,
#[serde(rename = "hide_freezepanel")]
HideFreezePanel,
#[serde(rename = "freezecam_started")]
FreezeCamStarted,
#[serde(rename = "localplayer_changeteam")]
LocalPlayerChangeTeam,
#[serde(rename = "localplayer_score_changed")]
LocalPlayerScoreChanged,
#[serde(rename = "localplayer_changeclass")]
LocalPlayerChangeClass,
#[serde(rename = "localplayer_respawn")]
LocalPlayerRespawn,
#[serde(rename = "building_info_changed")]
BuildingInfoChanged,
#[serde(rename = "localplayer_changedisguise")]
LocalPlayerChangeDisguise,
#[serde(rename = "player_account_changed")]
PlayerAccountChanged,
#[serde(rename = "spy_pda_reset")]
SpyPdaReset,
#[serde(rename = "flagstatus_update")]
FlagStatusUpdate,
#[serde(rename = "player_stats_updated")]
PlayerStatsUpdated,
#[serde(rename = "playing_commentary")]
PlayingCommentary,
#[serde(rename = "player_chargedeployed")]
PlayerChargeDeployed,
#[serde(rename = "player_builtobject")]
PlayerBuiltObject,
#[serde(rename = "player_upgradedobject")]
PlayerUpgradedObject,
#[serde(rename = "player_carryobject")]
PlayerCarryObject,
#[serde(rename = "player_dropobject")]
PlayerDropObject,
#[serde(rename = "object_removed")]
ObjectRemoved,
#[serde(rename = "object_destroyed")]
ObjectDestroyed,
#[serde(rename = "object_detonated")]
ObjectDetonated,
#[serde(rename = "achievement_earned")]
AchievementEarned,
#[serde(rename = "spec_target_updated")]
SpecTargetUpdated,
#[serde(rename = "tournament_stateupdate")]
TournamentStateUpdate,
#[serde(rename = "tournament_enablecountdown")]
TournamentEnableCountdown,
#[serde(rename = "player_calledformedic")]
PlayerCalledForMedic,
#[serde(rename = "player_askedforball")]
PlayerAskedForBall,
#[serde(rename = "localplayer_becameobserver")]
LocalPlayerBecameObserver,
#[serde(rename = "player_ignited_inv")]
PlayerIgnitedInv,
#[serde(rename = "player_ignited")]
PlayerIgnited,
#[serde(rename = "player_extinguished")]
PlayerExtinguished,
#[serde(rename = "player_teleported")]
PlayerTeleported,
#[serde(rename = "player_healedmediccall")]
PlayerHealedMedicCall,
#[serde(rename = "localplayer_chargeready")]
LocalPlayerChargeReady,
#[serde(rename = "localplayer_winddown")]
LocalPlayerWindDown,
#[serde(rename = "player_invulned")]
PlayerInvulned,
#[serde(rename = "escort_speed")]
EscortSpeed,
#[serde(rename = "escort_progress")]
EscortProgress,
#[serde(rename = "escort_recede")]
EscortRecede,
#[serde(rename = "gameui_activated")]
GameUIActivated,
#[serde(rename = "gameui_hidden")]
GameUIHidden,
#[serde(rename = "player_escort_score")]
PlayerEscortScore,
#[serde(rename = "player_healonhit")]
PlayerHealOnHit,
#[serde(rename = "player_stealsandvich")]
PlayerStealSandvich,
#[serde(rename = "show_class_layout")]
ShowClassLayout,
#[serde(rename = "show_vs_panel")]
ShowVsPanel,
#[serde(rename = "player_damaged")]
PlayerDamaged,
#[serde(rename = "arena_player_notification")]
ArenaPlayerNotification,
#[serde(rename = "arena_match_maxstreak")]
ArenaMatchMaxStreak,
#[serde(rename = "arena_round_start")]
ArenaRoundStart,
#[serde(rename = "arena_win_panel")]
ArenaWinPanel,
#[serde(rename = "pve_win_panel")]
PveWinPanel,
#[serde(rename = "air_dash")]
AirDash,
#[serde(rename = "landed")]
Landed,
#[serde(rename = "player_damage_dodged")]
PlayerDamageDodged,
#[serde(rename = "player_stunned")]
PlayerStunned,
#[serde(rename = "scout_grand_slam")]
ScoutGrandSlam,
#[serde(rename = "scout_slamdoll_landed")]
ScoutSlamdollLanded,
#[serde(rename = "arrow_impact")]
ArrowImpact,
#[serde(rename = "player_jarated")]
PlayerJarated,
#[serde(rename = "player_jarated_fade")]
PlayerJaratedFade,
#[serde(rename = "player_shield_blocked")]
PlayerShieldBlocked,
#[serde(rename = "player_pinned")]
PlayerPinned,
#[serde(rename = "player_healedbymedic")]
PlayerHealedByMedic,
#[serde(rename = "player_sapped_object")]
PlayerSappedObject,
#[serde(rename = "item_found")]
ItemFound,
#[serde(rename = "show_annotation")]
ShowAnnotation,
#[serde(rename = "hide_annotation")]
HideAnnotation,
#[serde(rename = "post_inventory_application")]
PostInventoryApplication,
#[serde(rename = "controlpoint_unlock_updated")]
ControlPointUnlockUpdated,
#[serde(rename = "deploy_buff_banner")]
DeployBuffBanner,
#[serde(rename = "player_buff")]
PlayerBuff,
#[serde(rename = "medic_death")]
MedicDeath,
#[serde(rename = "overtime_nag")]
OvertimeNag,
#[serde(rename = "teams_changed")]
TeamsChanged,
#[serde(rename = "halloween_pumpkin_grab")]
HalloweenPumpkinGrab,
#[serde(rename = "rocket_jump")]
RocketJump,
#[serde(rename = "rocket_jump_landed")]
RocketJumpLanded,
#[serde(rename = "sticky_jump")]
StickyJump,
#[serde(rename = "sticky_jump_landed")]
StickyJumpLanded,
#[serde(rename = "rocketpack_launch")]
RocketPackLaunch,
#[serde(rename = "rocketpack_landed")]
RocketPackLanded,
#[serde(rename = "medic_defended")]
MedicDefended,
#[serde(rename = "localplayer_healed")]
LocalPlayerHealed,
#[serde(rename = "player_destroyed_pipebomb")]
PlayerDestroyedPipeBomb,
#[serde(rename = "object_deflected")]
ObjectDeflected,
#[serde(rename = "player_mvp")]
PlayerMvp,
#[serde(rename = "raid_spawn_mob")]
RaidSpawnMob,
#[serde(rename = "raid_spawn_squad")]
RaidSpawnSquad,
#[serde(rename = "nav_blocked")]
NavBlocked,
#[serde(rename = "path_track_passed")]
PathTrackPassed,
#[serde(rename = "num_cappers_changed")]
NumCappersChanged,
#[serde(rename = "player_regenerate")]
PlayerRegenerate,
#[serde(rename = "update_status_item")]
UpdateStatusItem,
#[serde(rename = "stats_resetround")]
StatsResetRound,
#[serde(rename = "scorestats_accumulated_update")]
ScoreStatsAccumulatedUpdate,
#[serde(rename = "scorestats_accumulated_reset")]
ScoreStatsAccumulatedReset,
#[serde(rename = "achievement_earned_local")]
AchievementEarnedLocal,
#[serde(rename = "player_healed")]
PlayerHealed,
#[serde(rename = "building_healed")]
BuildingHealed,
#[serde(rename = "item_pickup")]
ItemPickup,
#[serde(rename = "duel_status")]
DuelStatus,
#[serde(rename = "fish_notice")]
FishNotice,
#[serde(rename = "fish_notice__arm")]
FishNoticeArm,
#[serde(rename = "slap_notice")]
SlapNotice,
#[serde(rename = "throwable_hit")]
ThrowableHit,
#[serde(rename = "pumpkin_lord_summoned")]
PumpkinLordSummoned,
#[serde(rename = "pumpkin_lord_killed")]
PumpkinLordKilled,
#[serde(rename = "merasmus_summoned")]
MerasmusSummoned,
#[serde(rename = "merasmus_killed")]
MerasmusKilled,
#[serde(rename = "merasmus_escape_warning")]
MerasmusEscapeWarning,
#[serde(rename = "merasmus_escaped")]
MerasmusEscaped,
#[serde(rename = "eyeball_boss_summoned")]
EyeballBossSummoned,
#[serde(rename = "eyeball_boss_stunned")]
EyeballBossStunned,
#[serde(rename = "eyeball_boss_killed")]
EyeballBossKilled,
#[serde(rename = "eyeball_boss_killer")]
EyeballBossKiller,
#[serde(rename = "eyeball_boss_escape_imminent")]
EyeballBossEscapeImminent,
#[serde(rename = "eyeball_boss_escaped")]
EyeballBossEscaped,
#[serde(rename = "npc_hurt")]
NpcHurt,
#[serde(rename = "controlpoint_timer_updated")]
ControlPointTimerUpdated,
#[serde(rename = "player_highfive_start")]
PlayerHighFiveStart,
#[serde(rename = "player_highfive_cancel")]
PlayerHighFiveCancel,
#[serde(rename = "player_highfive_success")]
PlayerHighFiveSuccess,
#[serde(rename = "player_bonuspoints")]
PlayerBonusPoints,
#[serde(rename = "player_upgraded")]
PlayerUpgraded,
#[serde(rename = "player_buyback")]
PlayerBuyback,
#[serde(rename = "player_used_powerup_bottle")]
PlayerUsedPowerUpBottle,
#[serde(rename = "christmas_gift_grab")]
ChristmasGiftGrab,
#[serde(rename = "player_killed_achievement_zone")]
PlayerKilledAchievementZone,
#[serde(rename = "party_updated")]
PartyUpdated,
#[serde(rename = "party_pref_changed")]
PartyPrefChanged,
#[serde(rename = "party_criteria_changed")]
PartyCriteriaChanged,
#[serde(rename = "party_invites_changed")]
PartyInvitesChanged,
#[serde(rename = "party_queue_state_changed")]
PartyQueueStateChanged,
#[serde(rename = "party_chat")]
PartyChat,
#[serde(rename = "party_member_join")]
PartyMemberJoin,
#[serde(rename = "party_member_leave")]
PartyMemberLeave,
#[serde(rename = "match_invites_updated")]
MatchInvitesUpdated,
#[serde(rename = "lobby_updated")]
LobbyUpdated,
#[serde(rename = "mvm_mission_update")]
MvmMissionUpdate,
#[serde(rename = "recalculate_holidays")]
RecalculateHolidays,
#[serde(rename = "player_currency_changed")]
PlayerCurrencyChanged,
#[serde(rename = "doomsday_rocket_open")]
DoomsdayRocketOpen,
#[serde(rename = "remove_nemesis_relationships")]
RemoveNemesisRelationships,
#[serde(rename = "mvm_creditbonus_wave")]
MvmCreditBonusWave,
#[serde(rename = "mvm_creditbonus_all")]
MvmCreditBonusAll,
#[serde(rename = "mvm_creditbonus_all_advanced")]
MvmCreditBonusAllAdvanced,
#[serde(rename = "mvm_quick_sentry_upgrade")]
MvmQuickSentryUpgrade,
#[serde(rename = "mvm_tank_destroyed_by_players")]
MvmTankDestroyedByPlayers,
#[serde(rename = "mvm_kill_robot_delivering_bomb")]
MvmKillRobotDeliveringBomb,
#[serde(rename = "mvm_pickup_currency")]
MvmPickupCurrency,
#[serde(rename = "mvm_bomb_carrier_killed")]
MvmBombCarrierKilled,
#[serde(rename = "mvm_sentrybuster_detonate")]
MvmSentryBusterDetonate,
#[serde(rename = "mvm_scout_marked_for_death")]
MvmScoutMarkedForDeath,
#[serde(rename = "mvm_medic_powerup_shared")]
MvmMedicPowerUpShared,
#[serde(rename = "mvm_begin_wave")]
MvmBeginWave,
#[serde(rename = "mvm_wave_complete")]
MvmWaveComplete,
#[serde(rename = "mvm_mission_complete")]
MvmMissionComplete,
#[serde(rename = "mvm_bomb_reset_by_player")]
MvmBombResetByPlayer,
#[serde(rename = "mvm_bomb_alarm_triggered")]
MvmBombAlarmTriggered,
#[serde(rename = "mvm_bomb_deploy_reset_by_player")]
MvmBombDeployResetByPlayer,
#[serde(rename = "mvm_wave_failed")]
MvmWaveFailed,
#[serde(rename = "mvm_reset_stats")]
MvmResetStats,
#[serde(rename = "damage_resisted")]
DamageResisted,
#[serde(rename = "revive_player_notify")]
RevivePlayerNotify,
#[serde(rename = "revive_player_stopped")]
RevivePlayerStopped,
#[serde(rename = "revive_player_complete")]
RevivePlayerComplete,
#[serde(rename = "player_turned_to_ghost")]
PlayerTurnedToGhost,
#[serde(rename = "medigun_shield_blocked_damage")]
MedigunShieldBlockedDamage,
#[serde(rename = "mvm_adv_wave_complete_no_gates")]
MvmAdvWaveCompleteNoGates,
#[serde(rename = "mvm_sniper_headshot_currency")]
MvmSniperHeadshotCurrency,
#[serde(rename = "mvm_mannhattan_pit")]
MvmMannhattanPit,
#[serde(rename = "flag_carried_in_detection_zone")]
FlagCarriedInDetectionZone,
#[serde(rename = "mvm_adv_wave_killed_stun_radio")]
MvmAdvWaveKilledStunRadio,
#[serde(rename = "player_directhit_stun")]
PlayerDirectHitStun,
#[serde(rename = "mvm_sentrybuster_killed")]
MvmSentryBusterKilled,
#[serde(rename = "upgrades_file_changed")]
UpgradesFileChanged,
#[serde(rename = "rd_team_points_changed")]
RdTeamPointsChanged,
#[serde(rename = "rd_rules_state_changed")]
RdRulesStateChanged,
#[serde(rename = "rd_robot_killed")]
RdRobotKilled,
#[serde(rename = "rd_robot_impact")]
RdRobotImpact,
#[serde(rename = "teamplay_pre_round_time_left")]
TeamPlayPreRoundTimeLeft,
#[serde(rename = "parachute_deploy")]
ParachuteDeploy,
#[serde(rename = "parachute_holster")]
ParachuteHolster,
#[serde(rename = "kill_refills_meter")]
KillRefillsMeter,
#[serde(rename = "rps_taunt_event")]
RpsTauntEvent,
#[serde(rename = "conga_kill")]
CongaKill,
#[serde(rename = "player_initial_spawn")]
PlayerInitialSpawn,
#[serde(rename = "competitive_victory")]
CompetitiveVictory,
#[serde(rename = "competitive_stats_update")]
CompetitiveStatsUpdate,
#[serde(rename = "minigame_win")]
MiniGameWin,
#[serde(rename = "sentry_on_go_active")]
SentryOnGoActive,
#[serde(rename = "duck_xp_level_up")]
DuckXpLevelUp,
#[serde(rename = "questlog_opened")]
QuestLogOpened,
#[serde(rename = "schema_updated")]
SchemaUpdated,
#[serde(rename = "localplayer_pickup_weapon")]
LocalPlayerPickupWeapon,
#[serde(rename = "rd_player_score_points")]
RdPlayerScorePoints,
#[serde(rename = "demoman_det_stickies")]
DemomanDetStickies,
#[serde(rename = "quest_objective_completed")]
QuestObjectiveCompleted,
#[serde(rename = "player_score_changed")]
PlayerScoreChanged,
#[serde(rename = "killed_capping_player")]
KilledCappingPlayer,
#[serde(rename = "environmental_death")]
EnvironmentalDeath,
#[serde(rename = "projectile_direct_hit")]
ProjectileDirectHit,
#[serde(rename = "pass_get")]
PassGet,
#[serde(rename = "pass_score")]
PassScore,
#[serde(rename = "pass_free")]
PassFree,
#[serde(rename = "pass_pass_caught")]
PassPassCaught,
#[serde(rename = "pass_ball_stolen")]
PassBallStolen,
#[serde(rename = "pass_ball_blocked")]
PassBallBlocked,
#[serde(rename = "damage_prevented")]
DamagePrevented,
#[serde(rename = "halloween_boss_killed")]
HalloweenBossKilled,
#[serde(rename = "escaped_loot_island")]
EscapedLootIsland,
#[serde(rename = "tagged_player_as_it")]
TaggedPlayerAsIt,
#[serde(rename = "merasmus_stunned")]
MerasmusStunned,
#[serde(rename = "merasmus_prop_found")]
MerasmusPropFound,
#[serde(rename = "halloween_skeleton_killed")]
HalloweenSkeletonKilled,
#[serde(rename = "skeleton_killed_quest")]
SkeletonKilledQuest,
#[serde(rename = "skeleton_king_killed_quest")]
SkeletonKingKilledQuest,
#[serde(rename = "escape_hell")]
EscapeHell,
#[serde(rename = "cross_spectral_bridge")]
CrossSpectralBridge,
#[serde(rename = "minigame_won")]
MiniGameWon,
#[serde(rename = "respawn_ghost")]
RespawnGhost,
#[serde(rename = "kill_in_hell")]
KillInHell,
#[serde(rename = "halloween_duck_collected")]
HalloweenDuckCollected,
#[serde(rename = "special_score")]
SpecialScore,
#[serde(rename = "team_leader_killed")]
TeamLeaderKilled,
#[serde(rename = "halloween_soul_collected")]
HalloweenSoulCollected,
#[serde(rename = "recalculate_truce")]
RecalculateTruce,
#[serde(rename = "deadringer_cheat_death")]
DeadRingerCheatDeath,
#[serde(rename = "crossbow_heal")]
CrossbowHeal,
#[serde(rename = "damage_mitigated")]
DamageMitigated,
#[serde(rename = "payload_pushed")]
PayloadPushed,
#[serde(rename = "player_abandoned_match")]
PlayerAbandonedMatch,
#[serde(rename = "cl_drawline")]
ClDrawline,
#[serde(rename = "restart_timer_time")]
RestartTimerTime,
#[serde(rename = "winlimit_changed")]
WinLimitChanged,
#[serde(rename = "winpanel_show_scores")]
WinPanelShowScores,
#[serde(rename = "top_streams_request_finished")]
TopStreamsRequestFinished,
#[serde(rename = "competitive_state_changed")]
CompetitiveStateChanged,
#[serde(rename = "global_war_data_updated")]
GlobalWarDataUpdated,
#[serde(rename = "stop_watch_changed")]
StopWatchChanged,
#[serde(rename = "ds_stop")]
DsStop,
#[serde(rename = "ds_screenshot")]
DsScreenshot,
#[serde(rename = "show_match_summary")]
ShowMatchSummary,
#[serde(rename = "experience_changed")]
ExperienceChanged,
#[serde(rename = "begin_xp_lerp")]
BeginXpLerp,
#[serde(rename = "matchmaker_stats_updated")]
MatchmakerStatsUpdated,
#[serde(rename = "rematch_vote_period_over")]
RematchVotePeriodOver,
#[serde(rename = "rematch_failed_to_create")]
RematchFailedToCreate,
#[serde(rename = "player_rematch_change")]
PlayerRematchChange,
#[serde(rename = "ping_updated")]
PingUpdated,
#[serde(rename = "mmstats_updated")]
MMStatsUpdated,
#[serde(rename = "player_next_map_vote_change")]
PlayerNextMapVoteChange,
#[serde(rename = "vote_maps_changed")]
VoteMapsChanged,
#[serde(rename = "proto_def_changed")]
ProtoDefChanged,
#[serde(rename = "player_domination")]
PlayerDomination,
#[serde(rename = "player_rocketpack_pushed")]
PlayerRocketPackPushed,
#[serde(rename = "quest_request")]
QuestRequest,
#[serde(rename = "quest_response")]
QuestResponse,
#[serde(rename = "quest_progress")]
QuestProgress,
#[serde(rename = "projectile_removed")]
ProjectileRemoved,
#[serde(rename = "quest_map_data_changed")]
QuestMapDataChanged,
#[serde(rename = "gas_doused_player_ignited")]
GasDousedPlayerIgnited,
#[serde(rename = "quest_turn_in_state")]
QuestTurnInState,
#[serde(rename = "items_acknowledged")]
ItemsAcknowledged,
#[serde(rename = "capper_killed")]
CapperKilled,
#[serde(rename = "mainmenu_stabilized")]
MainMenuStabilized,
#[serde(rename = "world_status_changed")]
WorldStatusChanged,
#[serde(rename = "hltv_status")]
HLTVStatus,
#[serde(rename = "hltv_cameraman")]
HLTVCameraman,
#[serde(rename = "hltv_rank_camera")]
HLTVRankCamera,
#[serde(rename = "hltv_rank_entity")]
HLTVRankEntity,
#[serde(rename = "hltv_fixed")]
HLTVFixed,
#[serde(rename = "hltv_chase")]
HLTVChase,
#[serde(rename = "hltv_message")]
HLTVMessage,
#[serde(rename = "hltv_title")]
HLTVTitle,
#[serde(rename = "hltv_chat")]
HLTVChat,
#[serde(rename = "replay_startrecord")]
ReplayStartRecord,
#[serde(rename = "replay_sessioninfo")]
ReplaySessionInfo,
#[serde(rename = "replay_endrecord")]
ReplayEndRecord,
#[serde(rename = "replay_replaysavailable")]
ReplayReplaysAvailable,
#[serde(rename = "replay_servererror")]
ReplayServerError,
Unknown(String),
}
impl Serialize for GameEventType {
fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for GameEventType {
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let str = <&str>::deserialize(deserializer)?;
Ok(GameEventType::from_type_name(str))
}
}
impl GameEventType {
pub fn from_type_name(name: &str) -> Self {
match name {