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

GameEvent::event_type

This commit is contained in:
Robin Appelman 2022-09-03 16:17:59 +02:00
commit 50db542080
4 changed files with 583 additions and 45 deletions

View file

@ -317,6 +317,13 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
quote!(GameEventType::#variant_name => #name_str,)
});
let to_types = events.iter().map(|event| {
let name = get_event_name(event.event_type.as_str());
let variant_name = Ident::new(&name, span);
quote!(GameEvent::#variant_name(_) => GameEventType::#variant_name,)
});
let read_events = events.iter().map(|event| {
let name = get_event_name(event.event_type.as_str());
let variant_name = Ident::new(&name, span);
@ -425,6 +432,12 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
GameEvent::Unknown(raw) => raw.write(stream),
}
}
pub fn event_type(&self) -> GameEventType {
match &self {
#(#to_types)*
GameEvent::Unknown(raw) => raw.event_type.clone(),
}
}
}
pub fn get_sizes() -> fnv::FnvHashMap<&'static str, usize> {

View file

@ -29,6 +29,7 @@ impl MessageHandler for PropAnalyzer {
&mut self,
parse_tables: &[ParseSendTable],
_server_classes: &[ServerClass],
_state: &ParserState,
) {
let mut numeric_tables: FnvHashMap<String, usize> = HashMap::default();
for table in parse_tables {