1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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)
}
}
}