war3parser_wasm/
impls.rs

1use war3parser::{parser::War3MapW3i, war3map_metadata::War3MapMetadata as War3MapMetadataOri};
2use wasm_bindgen::prelude::wasm_bindgen;
3
4use crate::{War3Image, War3MapMetadata};
5
6/// Extracts map information from a War3 map file buffer.
7///
8/// # Arguments
9/// * `buffer` - A JavaScript `Uint8Array` containing the map file data
10///
11/// # Returns
12/// * `Option<War3MapMetadata>` - The parsed map metadata if successful, including:
13///   - Map information (w3i)
14///   - Image resources
15#[wasm_bindgen]
16pub fn get_map_info(buffer: js_sys::Uint8Array) -> Option<War3MapMetadata> {
17    let buffer_vec = buffer.to_vec();
18    match War3MapMetadataOri::from(&buffer_vec) {
19        Some(mut metadata) => {
20            metadata.update_string_table().ok();
21            let map_info = metadata.map_info.map(War3MapW3i::from);
22            let images: Vec<War3Image> = metadata.images.iter().map(War3Image::from).collect();
23            Some(War3MapMetadata { map_info, images })
24        }
25        None => None,
26    }
27}