4个版本
0.2.2 | 2023年8月8日 |
---|---|
0.2.1 | 2023年8月8日 |
0.2.0 | 2023年8月4日 |
0.1.0 | 2023年8月2日 |
1744 在 解析器实现 中
84KB
1.5K SLoC
q-entities
一个Rust包,包含与q-entities格式相关的工具。
q-entities格式
q-entities格式是本包对id Software的Quake及其衍生作品所使用的未命名的格式的非官方名称,用于存储地图中的实体。
此格式没有正式规范,衍生作品有时会修改其解析方式,这使得为所有作品定义一个完整规范变得不可行。本包通过定义一个基线来解析此格式,可以使用简单的构建器模式进一步修改。
基本用法
包的最高级别模块包含用于存储和访问q-entities集合的类型(最显著的是QEntities
)。
parse
模块包含用于将q-entities文件解析为q-entities集合的类型(最显著的是QEntitiesParseOptions
)。
最小示例
use qentities::parse::QEntitiesParseOptions;
const FILE_DATA: &'static [u8] = br#"
{
"classname" "worldspawn"
"wad" "mywad.wad"
}
{
"classname" "light"
"origin" "0 0 32"
}
{
"classname" "info_player_start"
"origin" "0 0 0"
}
"#;
fn main() {
let entities = QEntitiesParseOptions::new().parse(&FILE_DATA[..]).unwrap();
for entity in entities.iter() {
println!("{{");
for kv in entity.iter() {
let key = String::from_utf8_lossy(kv.key());
let value = String::from_utf8_lossy(kv.value());
println!("{key:?} {value:?}");
}
println!("}}");
}
}
依赖
~2.5MB
~38K SLoC