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
use map_gui::tools::{find_exe, FilePicker, RunCommand};
use widgetry::EventCtx;
use crate::app::Transition;
use crate::sandbox::gameplay::GameplayMode;
use crate::sandbox::SandboxMode;
pub fn import(ctx: &mut EventCtx) -> Transition {
Transition::Push(FilePicker::new_state(
ctx,
None,
Box::new(|ctx, app, maybe_path| {
if let Ok(Some(path)) = maybe_path {
Transition::Replace(RunCommand::new_state(
ctx,
app,
vec![
find_exe("import_grid2demand"),
format!("--map={}", app.primary.map.get_name().path()),
format!("--input={}", path),
],
Box::new(|_, app, success, _| {
if success {
app.primary.scenario = None;
Transition::Replace(SandboxMode::simple_new(
app,
GameplayMode::PlayScenario(
app.primary.map.get_name().clone(),
"grid2demand".to_string(),
Vec::new(),
),
))
} else {
Transition::Keep
}
}),
))
} else {
Transition::Pop
}
}),
))
}