#![allow(clippy::unwrap_used, clippy::missing_docs_in_private_items)]
use elevator_core::prelude::*;
fn main() {
let mut sim = SimulationBuilder::demo().build().unwrap();
let elev = sim.world().iter_elevators().next().unwrap().0;
sim.set_service_mode(elev, ServiceMode::Manual).unwrap();
sim.set_target_velocity(elev, 2.0).unwrap();
println!("tick phase pos vel");
println!("---- ----------- ------ -----");
for t in 0..180 {
if t == 90 {
sim.emergency_stop(elev).unwrap();
}
sim.step();
let pos = sim.world().position(elev).unwrap().value();
let vel = sim.velocity(elev).unwrap();
let phase = if t < 90 { "ascending " } else { "e-stopping" };
println!("{t:>4} {phase} {pos:>5.2}m {vel:>5.2}");
if t > 90 && vel.abs() < 1e-6 {
println!("\nCar stopped at {pos:.2}m after {t} ticks.");
break;
}
}
}