///|
fn main {
let args = @env.args()
if args.length() > 1 {
let blueprint = @layouts.build_standard_station()
let engine = @simulator.SimulationEngine::new(
blueprint.station,
blueprint.table,
)
let runner = InteractiveRunner::new(engine)
let command_parts : Array[String] = []
let mut arg_index = 1
while arg_index < args.length() {
command_parts.push(args[arg_index])
arg_index = arg_index + 1
}
println(runner.execute_command(command_parts.join(" ")))
} else {
println(
"================================================================================",
)
println(
" MOONBIT RAILWAY COMPUTER INTERLOCKING (CI) SAFETY ENGINE TERMINAL SIMULATOR",
)
println(
"================================================================================",
)
println("Initializing Standard 4-Track Station Blueprint...")
let bp = @layouts.build_standard_station()
let engine = @simulator.SimulationEngine::new(bp.station, bp.table)
let runner = InteractiveRunner::new(engine)
println("\n" + runner.execute_command("status"))
println(
"\n[SCENARIO 1] Requesting Receiving Route X-1G for High-Speed Train CRH380A...",
)
println(runner.execute_command("request 1"))
println("\n" + runner.execute_command("status"))
println(
"\n[SCENARIO 2] Requesting Hostile Route X-3G (Expecting Fast Bitmask Rejection)...",
)
println(runner.execute_command("request 2"))
println("\n[SCENARIO 3] Stepping 10ms Scan Engine Loop x 10 cycles...")
println(runner.execute_command("step 10"))
println(
"\n[SCENARIO 4] Cancelling Active Route X-1G & Unlocking Station...",
)
println(runner.execute_command("cancel 1"))
println("\n" + runner.execute_command("status"))
println("Simulation finished cleanly.")
}
}