assembly_maps/raw/
parser.rs

1//! ### Parsers for the data
2use super::file::*;
3use assembly_core::nom::{
4    do_parse, named,
5    number::complete::{le_f32, le_u32, le_u8},
6};
7
8named!(pub parse_terrain_header<TerrainHeader>,
9    do_parse!(
10        version: le_u8 >>
11        value_1: le_u8 >>
12        value_2: le_u8 >>
13        chunk_count: le_u32 >>
14        width_in_chunks: le_u32 >>
15        height_in_chunks: le_u32 >>
16        (TerrainHeader{
17            version, value_1, value_2,
18            chunk_count, width_in_chunks, height_in_chunks
19        })
20    )
21);
22
23named!(pub parse_height_map_header<HeightMapHeader>,
24    do_parse!(
25        width: le_u32 >>
26        height: le_u32 >>
27        pos_x: le_f32 >>
28        pos_z: le_f32 >>
29        _1: le_u32 >>
30        _2: le_u32 >>
31        _3: le_u32 >>
32        _4: le_u32 >>
33        _5: le_f32 >>
34        (HeightMapHeader{
35            width, height, pos_x, pos_z, _1, _2, _3, _4, _5
36        })
37    )
38);