mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-04 10:34:11 +02:00
format
This commit is contained in:
parent
8183ac5b65
commit
f2650dc32f
19 changed files with 3614 additions and 2210 deletions
|
|
@ -3,9 +3,12 @@ use std::iter::FromIterator;
|
|||
|
||||
use bitstream_reader::{BitRead, BitReadSized, LittleEndian};
|
||||
|
||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||
use crate::demo::gameevent_gen::GameEventType;
|
||||
use crate::demo::gamevent::{GameEvent, GameEventDefinition, GameEventEntry, GameEventValue, GameEventValueType, RawGameEvent};
|
||||
use crate::demo::gamevent::{
|
||||
GameEvent, GameEventDefinition, GameEventEntry, GameEventValue, GameEventValueType,
|
||||
RawGameEvent,
|
||||
};
|
||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||
|
||||
fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<GameEventValue> {
|
||||
Ok(match definition.kind {
|
||||
|
|
@ -16,13 +19,13 @@ fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<
|
|||
GameEventValueType::Byte => GameEventValue::Byte(stream.read()?),
|
||||
GameEventValueType::Boolean => GameEventValue::Boolean(stream.read()?),
|
||||
GameEventValueType::Local => GameEventValue::Local,
|
||||
GameEventValueType::None => unreachable!()
|
||||
GameEventValueType::None => unreachable!(),
|
||||
})
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct GameEventMessage {
|
||||
pub event: GameEvent
|
||||
pub event: GameEvent,
|
||||
}
|
||||
|
||||
impl Parse for GameEventMessage {
|
||||
|
|
@ -37,17 +40,12 @@ impl Parse for GameEventMessage {
|
|||
values.push(read_event_value(&mut data, &entry)?);
|
||||
}
|
||||
|
||||
RawGameEvent {
|
||||
event_type,
|
||||
values,
|
||||
}
|
||||
RawGameEvent { event_type, values }
|
||||
}
|
||||
None => unreachable!()
|
||||
None => unreachable!(),
|
||||
};
|
||||
let event = GameEvent::from_raw_event(raw_event)?;
|
||||
Ok(GameEventMessage {
|
||||
event
|
||||
})
|
||||
Ok(GameEventMessage { event })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -86,12 +84,8 @@ impl BitRead<LittleEndian> for GameEventListMessage {
|
|||
let length: u32 = stream.read_sized(20)?;
|
||||
let mut data = stream.read_bits(length as usize)?;
|
||||
let event_list_vec: Vec<GameEventDefinition> = data.read_sized(count as usize)?;
|
||||
let event_list = HashMap::from_iter(
|
||||
event_list_vec.into_iter().map(|def| (def.id, def))
|
||||
);
|
||||
let event_list = HashMap::from_iter(event_list_vec.into_iter().map(|def| (def.id, def)));
|
||||
|
||||
Ok(GameEventListMessage {
|
||||
event_list
|
||||
})
|
||||
Ok(GameEventListMessage { event_list })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue