mod aoc_to_wk;
mod hd_to_wk;
use crate::{Scenario, ScenarioObject};
pub use aoc_to_wk::AoCToWK;
pub use hd_to_wk::HDToWK;
#[derive(Debug, thiserror::Error)]
pub enum ConvertError {
#[error("invalid version")]
InvalidVersion,
}
pub struct AutoToWK {}
impl Default for AutoToWK {
fn default() -> Self {
AutoToWK {}
}
}
fn is_wk_object(object: &ScenarioObject) -> bool {
const STORMY_DOG: i32 = 862;
object.id > STORMY_DOG
}
impl AutoToWK {
pub fn convert(&self, scen: &mut Scenario) -> Result<(), ConvertError> {
if scen.version().is_hd_edition() {
HDToWK::default().convert(scen)
} else if scen.version().is_aok() || scen.version().is_aoc() {
if scen.objects().any(is_wk_object) {
Ok(())
} else {
AoCToWK::default().convert(scen)
}
} else {
Err(ConvertError::InvalidVersion)
}
}
}