From 9cc24e715db81edbe21c0d04aadd00f11dddecb8 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Tue, 23 Jun 2026 22:32:50 +0400 Subject: fix: close stage 0-2 synthetic gates --- crates/fparkan-runtime/src/lib.rs | 95 ++++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 35 deletions(-) (limited to 'crates/fparkan-runtime/src/lib.rs') diff --git a/crates/fparkan-runtime/src/lib.rs b/crates/fparkan-runtime/src/lib.rs index 053d7bd..d70b327 100644 --- a/crates/fparkan-runtime/src/lib.rs +++ b/crates/fparkan-runtime/src/lib.rs @@ -1,18 +1,35 @@ #![forbid(unsafe_code)] +#![cfg_attr( + test, + allow( + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_precision_loss, + clippy::expect_used, + clippy::float_cmp, + clippy::identity_op, + clippy::too_many_lines, + clippy::uninlined_format_args, + clippy::map_unwrap_or, + clippy::needless_raw_string_hashes, + clippy::semicolon_if_nothing_returned, + clippy::type_complexity, + clippy::panic, + clippy::unwrap_used + ) +)] //! Runtime orchestration for headless and rendered modes. use fparkan_assets::{ - AssetError as AssetPreparationError, AssetManager, MissionAssetPlan, - decode_mission_land_path, decode_nres_payload, decode_mission_payload, prepare_terrain_world, - derive_mission_land_paths, BuildCategory, MissionDocument, MissionError, MissionTerrainPaths, - TerrainFormatError, TerrainPreparationError, TmaProfile, TerrainWorld, - NresError, - extend_graph_report_with_visual_dependencies, + decode_mission_land_path, decode_mission_payload, decode_nres_payload, + derive_mission_land_paths, extend_graph_report_with_visual_dependencies, prepare_terrain_world, + AssetError as AssetPreparationError, AssetManager, BuildCategory, MissionAssetPlan, + MissionDocument, MissionError, MissionTerrainPaths, NresError, TerrainFormatError, + TerrainPreparationError, TerrainWorld, TmaProfile, }; use fparkan_path::{normalize_relative, NormalizedPath, PathError, PathPolicy}; use fparkan_prototype::{ - build_prototype_graph_report, - PrototypeGraph, PrototypeGraphFailure, PrototypeGraphReport, + build_prototype_graph_report, PrototypeGraph, PrototypeGraphFailure, PrototypeGraphReport, }; use fparkan_resource::{resource_name, CachedResourceRepository}; use fparkan_vfs::{Vfs, VfsError}; @@ -435,44 +452,52 @@ fn load_mission_with_options( let mission_bytes = read_vfs(&vfs, &mission_path)?; trace.phases.push(MissionLoadPhase::Map); - let land_path = decode_mission_land_path(&mission_bytes, TmaProfile::Strict).map_err(|source| { - EngineError::Mission { - path: mission_path.as_str().to_string(), - source, - } - })?; - let MissionTerrainPaths { land_msh: land_msh_path, land_map: land_map_path } = - derive_mission_land_paths(&land_path).map_err(|source| EngineError::Path { - role: "mission land", - value: mission_path.as_str().to_string(), - source, + let land_path = + decode_mission_land_path(&mission_bytes, TmaProfile::Strict).map_err(|source| { + EngineError::Mission { + path: mission_path.as_str().to_string(), + source, + } })?; - let land_msh_nres = decode_nres_payload(read_vfs(&vfs, &land_msh_path)?) - .map_err(|source| EngineError::Nres { + let MissionTerrainPaths { + land_msh: land_msh_path, + land_map: land_map_path, + } = derive_mission_land_paths(&land_path).map_err(|source| EngineError::Path { + role: "mission land", + value: mission_path.as_str().to_string(), + source, + })?; + let land_msh_nres = decode_nres_payload(read_vfs(&vfs, &land_msh_path)?).map_err(|source| { + EngineError::Nres { path: land_msh_path.as_str().to_string(), source, - })?; - let land_map_nres = decode_nres_payload(read_vfs(&vfs, &land_map_path)?) - .map_err(|source| EngineError::Nres { + } + })?; + let land_map_nres = decode_nres_payload(read_vfs(&vfs, &land_map_path)?).map_err(|source| { + EngineError::Nres { path: land_map_path.as_str().to_string(), source, - })?; + } + })?; let build_dat_path = normalize_engine_path("BuildDat", "BuildDat.lst")?; let build_dat = read_vfs(&vfs, &build_dat_path)?; - let (terrain, build_categories) = prepare_terrain_world(&land_msh_nres, &land_map_nres, &build_dat) - .map_err(|source| match source { - TerrainPreparationError::Decode(source) => EngineError::TerrainFormat { - path: build_dat_path.as_str().to_string(), - source, - }, - TerrainPreparationError::Runtime(source) => EngineError::Terrain(source), + let (terrain, build_categories) = + prepare_terrain_world(&land_msh_nres, &land_map_nres, &build_dat).map_err(|source| { + match source { + TerrainPreparationError::Decode(source) => EngineError::TerrainFormat { + path: build_dat_path.as_str().to_string(), + source, + }, + TerrainPreparationError::Runtime(source) => EngineError::Terrain(source), + } })?; trace.phases.push(MissionLoadPhase::Tma); - let mission = - decode_mission_payload(mission_bytes, TmaProfile::Strict).map_err(|source| EngineError::Mission { + let mission = decode_mission_payload(mission_bytes, TmaProfile::Strict).map_err(|source| { + EngineError::Mission { path: mission_path.as_str().to_string(), source, - })?; + } + })?; trace.transforms = mission .objects .iter() -- cgit v1.2.3