mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
readme
This commit is contained in:
parent
c295c95c28
commit
804b70a48f
1 changed files with 46 additions and 1 deletions
45
README.md
45
README.md
|
|
@ -20,3 +20,48 @@ which will place the binary at `target/release/parse_demo`
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Basic usage is as simple as `parse_demo demofile.dem` which will output a "summary" of the demo file in JSON format.
|
Basic usage is as simple as `parse_demo demofile.dem` which will output a "summary" of the demo file in JSON format.
|
||||||
|
|
||||||
|
## Advanced usage
|
||||||
|
|
||||||
|
### Loop trough every packet
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use bitbuffer::BitRead;
|
||||||
|
use main_error::MainError;
|
||||||
|
use std::fs;
|
||||||
|
use tf_demo_parser::demo::header::Header;
|
||||||
|
use tf_demo_parser::demo::parser::{DemoHandler, RawPacketStream};
|
||||||
|
use tf_demo_parser::Demo;
|
||||||
|
|
||||||
|
fn main() -> Result<(), MainError> {
|
||||||
|
let file = fs::read("demofile.dem")?;
|
||||||
|
|
||||||
|
let demo = Demo::new(&file);
|
||||||
|
let mut handler = DemoHandler::default();
|
||||||
|
|
||||||
|
let mut stream = demo.get_stream();
|
||||||
|
let header = Header::read(&mut stream)?;
|
||||||
|
handler.handle_header(&header);
|
||||||
|
|
||||||
|
let mut packets = RawPacketStream::new(stream);
|
||||||
|
|
||||||
|
while let Some(packet) = packets.next(&handler.state_handler)? {
|
||||||
|
handler.handle_packet(packet).unwrap();
|
||||||
|
}
|
||||||
|
assert_eq!(false, packets.incomplete);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Handle demo data with a custom analyser
|
||||||
|
|
||||||
|
Sometimes it's easier to create a custom `Analyser` to handle the demo data as it comes along.
|
||||||
|
|
||||||
|
See `src/demo/parser/analyser.rs` for an example.
|
||||||
|
Once you have a custom analyser you can use it with:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
DemoParser::new_all_with_analyser(demo.get_stream(), CustomAnalyser::new());
|
||||||
|
let (header, state) = parser.parse()?;
|
||||||
|
```
|
||||||
Loading…
Add table
Add a link
Reference in a new issue