Crate hltas

source ·
Expand description

A crate for reading and writing Half-Life TAS scripts (.hltas).

Examples

use hltas::{HLTAS, types::{JumpBug, Line, Times}};

let contents = "\
version 1
demo test
frames
------b---|------|------|0.001|-|-|5";

match HLTAS::from_str(&contents) {
    Ok(hltas) => {
        assert_eq!(hltas.properties.demo.as_deref(), Some("test"));

        if let Line::FrameBulk(frame_bulk) = &hltas.lines[0] {
            assert_eq!(
                frame_bulk.auto_actions.jump_bug,
                Some(JumpBug { times: Times::UnlimitedWithinFrameBulk })
            );
            assert_eq!(&frame_bulk.frame_time, "0.001");
            assert_eq!(frame_bulk.frame_count.get(), 5);
        } else {
            unreachable!()
        }
    }

    // The errors are pretty-printed with context.
    Err(error) => println!("{}", error),
}

Features

  • serde1: implements serde’s Serialize and Deserialize traits for all types.

  • proptest1: implements proptest’s Arbitrary trait for all types. Only “valid” contents are generated, as in, writing to string and parsing back will work and give you the same result.

Re-exports

Modules

  • Reading .hltas files.
  • Types representing various parts of .hltas scripts.
  • Writing .hltas files.