From 62b096c8287aba980273da869d1ace02909adcb9 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 2 Feb 2024 19:31:12 +0100 Subject: [PATCH] fix schema for GameEventType --- schema.json | 806 +++++++++++++++++++------------------- src/codegen/gameevent.rs | 32 +- src/demo/gameevent_gen.rs | 424 +++++++++++++++++++- 3 files changed, 816 insertions(+), 446 deletions(-) diff --git a/schema.json b/schema.json index 9a99d99..f55b02e 100644 --- a/schema.json +++ b/schema.json @@ -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" ] }, { diff --git a/src/codegen/gameevent.rs b/src/codegen/gameevent.rs index af6bb89..1c72232 100644 --- a/src/codegen/gameevent.rs +++ b/src/codegen/gameevent.rs @@ -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(&self, serializer: S) -> std::result::Result - where - S: Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - - impl<'de> Deserialize<'de> for GameEventType { - fn deserialize(deserializer: D) -> std::result::Result - 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 { diff --git a/src/demo/gameevent_gen.rs b/src/demo/gameevent_gen.rs index b2799f5..f9a3aa9 100644 --- a/src/demo/gameevent_gen.rs +++ b/src/demo/gameevent_gen.rs @@ -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(&self, serializer: S) -> std::result::Result - where - S: Serializer, - { - serializer.serialize_str(self.as_str()) - } -} -impl<'de> Deserialize<'de> for GameEventType { - fn deserialize(deserializer: D) -> std::result::Result - 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 {