Crates.io | hltas |
lib.rs | hltas |
version | 0.9.0 |
source | src |
created_at | 2019-12-26 14:44:05.101926 |
updated_at | 2024-07-28 08:19:18.166826 |
description | Reading and writing Half-Life TAS scripts (`.hltas`). |
homepage | |
repository | https://github.com/HLTAS/hltas |
max_upload_size | |
id | 192455 |
size | 1,118,519 |
A crate for reading and writing Half-Life TAS scripts (.hltas
).
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),
}
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.
Also included is a C++ wrapper, exporting the same C++ interface as the previous C++ version of HLTAS.
CMakeLists.txt
, call add_subdirectory("path/to/hltas")
.hltas-cpp
target: target_link_libraries(your-target hltas-cpp)
.License: MIT/Apache-2.0