wow_wmo/
file_type.rs

1use crate::chunk_discovery::ChunkDiscovery;
2
3/// Type of WMO file
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum WmoFileType {
6    /// Root WMO file containing header and references to groups
7    Root,
8    /// Group file containing geometry and rendering data
9    Group,
10}
11
12/// Detect the type of WMO file based on chunk patterns
13pub fn detect_file_type(discovery: &ChunkDiscovery) -> WmoFileType {
14    // Check chunk patterns
15    let chunk_ids: Vec<&str> = discovery.chunks.iter().map(|c| c.id.as_str()).collect();
16
17    // Root files have MOHD, MOMT, MOGN and other root-specific chunks
18    // Group files have MOGP as their main chunk after MVER
19    if chunk_ids.contains(&"MOHD") || chunk_ids.contains(&"MOMT") {
20        WmoFileType::Root
21    } else if chunk_ids.contains(&"MOGP") || (chunk_ids.len() > 1 && chunk_ids[1] == "MOGP") {
22        WmoFileType::Group
23    } else {
24        // Default to group for unknown patterns
25        WmoFileType::Group
26    }
27}