mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
minor cleanup
This commit is contained in:
parent
50f3690e3a
commit
65d55c9a26
5 changed files with 24 additions and 27 deletions
|
|
@ -9,7 +9,7 @@ use crate::demo::gamevent::{
|
||||||
RawGameEvent,
|
RawGameEvent,
|
||||||
};
|
};
|
||||||
use crate::demo::parser::ParseBitSkip;
|
use crate::demo::parser::ParseBitSkip;
|
||||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||||
|
|
||||||
fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<GameEventValue> {
|
fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<GameEventValue> {
|
||||||
Ok(match definition.kind {
|
Ok(match definition.kind {
|
||||||
|
|
@ -20,7 +20,9 @@ fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<
|
||||||
GameEventValueType::Byte => GameEventValue::Byte(stream.read()?),
|
GameEventValueType::Byte => GameEventValue::Byte(stream.read()?),
|
||||||
GameEventValueType::Boolean => GameEventValue::Boolean(stream.read()?),
|
GameEventValueType::Boolean => GameEventValue::Boolean(stream.read()?),
|
||||||
GameEventValueType::Local => GameEventValue::Local,
|
GameEventValueType::Local => GameEventValue::Local,
|
||||||
GameEventValueType::None => unreachable!(),
|
GameEventValueType::None => {
|
||||||
|
return Err(ParseError::MalformedGameEvent(GameEventError::NoneValue))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,7 +48,7 @@ impl Parse for GameEventMessage {
|
||||||
values,
|
values,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => unreachable!(),
|
None => return Err(ParseError::MalformedGameEvent(GameEventError::UnknownType)),
|
||||||
};
|
};
|
||||||
let event = GameEvent::from_raw_event(raw_event)?;
|
let event = GameEvent::from_raw_event(raw_event)?;
|
||||||
Ok(GameEventMessage { event })
|
Ok(GameEventMessage { event })
|
||||||
|
|
|
||||||
|
|
@ -198,16 +198,14 @@ impl MessageHandler for Analyser {
|
||||||
|
|
||||||
fn handle_string_entry(&mut self, table: &String, _index: usize, entry: &StringTableEntry) {
|
fn handle_string_entry(&mut self, table: &String, _index: usize, entry: &StringTableEntry) {
|
||||||
match table.as_str() {
|
match table.as_str() {
|
||||||
"userinfo" => {
|
"userinfo" => match (&entry.text, &entry.extra_data) {
|
||||||
match (&entry.text, &entry.extra_data) {
|
(Some(text), Some(data)) => {
|
||||||
(Some(text), Some(data)) => {
|
if data.byte_len > 32 {
|
||||||
if data.byte_len > 32 {
|
let _ = self.parse_user_info(text, data.data.clone());
|
||||||
let _ = self.parse_user_info(text, data.data.clone());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_ => {} //unreachable!("no userdata {}, {}", table, &entry.text)
|
|
||||||
}
|
}
|
||||||
}
|
_ => {}
|
||||||
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,20 +76,21 @@ impl<T: MessageHandler> DemoHandler<T> {
|
||||||
self.state_handler
|
self.state_handler
|
||||||
.handle_string_table_meta(table.get_table_meta());
|
.handle_string_table_meta(table.get_table_meta());
|
||||||
for (entry_index, entry) in table.entries.into_iter().enumerate() {
|
for (entry_index, entry) in table.entries.into_iter().enumerate() {
|
||||||
self.handle_string_entry(&table.name, entry_index, entry);
|
self.state_handler
|
||||||
|
.handle_string_entry(&table.name, entry_index, &entry);
|
||||||
|
self.analyser
|
||||||
|
.handle_string_entry(&table.name, entry_index, &entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_table_update(&mut self, table_id: u8, entries: Vec<(u16, StringTableEntry)>) {
|
fn handle_table_update(&mut self, table_id: u8, entries: Vec<(u16, StringTableEntry)>) {
|
||||||
let table_name = self.string_table_names.get(table_id as usize);
|
if let Some(table_name) = self.string_table_names.get(table_id as usize) {
|
||||||
match table_name {
|
for (index, entry) in entries {
|
||||||
Some(table_name) => {
|
let index = index as usize;
|
||||||
let table_name = table_name.clone();
|
self.state_handler
|
||||||
for (index, entry) in entries {
|
.handle_string_entry(table_name, index, &entry);
|
||||||
self.handle_string_entry(&table_name, index as usize, entry);
|
self.analyser.handle_string_entry(table_name, index, &entry);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_ => unreachable!("trying to update non existing table"),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,12 +99,6 @@ impl<T: MessageHandler> DemoHandler<T> {
|
||||||
.handle_data_table(send_tables, server_classes);
|
.handle_data_table(send_tables, server_classes);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_string_entry(&mut self, table: &String, index: usize, entries: StringTableEntry) {
|
|
||||||
self.state_handler
|
|
||||||
.handle_string_entry(table, index, &entries);
|
|
||||||
self.analyser.handle_string_entry(table, index, &entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_message(&mut self, message: Message) {
|
fn handle_message(&mut self, message: Message) {
|
||||||
let message_type = message.get_message_type();
|
let message_type = message.get_message_type();
|
||||||
if ParserState::does_handle(message_type) {
|
if ParserState::does_handle(message_type) {
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@ pub enum ParseError {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum GameEventError {
|
pub enum GameEventError {
|
||||||
IncorrectValueCount,
|
IncorrectValueCount,
|
||||||
|
NoneValue,
|
||||||
|
UnknownType,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<ReadError> for ParseError {
|
impl From<ReadError> for ParseError {
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ impl MessageHandler for ParserState {
|
||||||
}
|
}
|
||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
},
|
},
|
||||||
_ => unreachable!("missing baseline"),
|
_ => {}
|
||||||
},
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue