From 2152b8a18d1a716f51b80c53f11d2a9599d94e23 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Tue, 19 Oct 2010 16:34:25 +0000 Subject: [PATCH] Use per-layout state files Add command line option to specify state file --- source/engineer/engineer.cpp | 6 +++--- source/engineer/options.cpp | 5 +++++ source/engineer/options.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/engineer/engineer.cpp b/source/engineer/engineer.cpp index 5cf22ba..9db63fe 100644 --- a/source/engineer/engineer.cpp +++ b/source/engineer/engineer.cpp @@ -84,8 +84,8 @@ Engineer::Engineer(int argc, char **argv): layout.signal_block_reserved.connect(sigc::mem_fun(this, &Engineer::block_reserved)); layout.signal_emergency.connect(sigc::mem_fun(this, &Engineer::set_status)); layout.get_driver().signal_sensor.connect(sigc::mem_fun(this, &Engineer::sensor_event)); - if(FS::exists("engineer.state")) - DataFile::load(layout, "engineer.state"); + if(FS::exists(options.state_fn)) + DataFile::load(layout, options.state_fn); if(options.network) { @@ -131,7 +131,7 @@ Engineer::~Engineer() layout.get_driver().flush(); if(!options.simulate) - layout.save_trains("engineer.state"); + layout.save_trains(options.state_fn); delete overlay; delete root; diff --git a/source/engineer/options.cpp b/source/engineer/options.cpp index 9861c10..fc7516c 100644 --- a/source/engineer/options.cpp +++ b/source/engineer/options.cpp @@ -6,6 +6,7 @@ Distributed under the GPL */ #include +#include #include #include #include "options.h" @@ -30,6 +31,7 @@ Options::Options(int argc, char **argv): getopt.add_option('d', "driver", driver, GetOpt::REQUIRED_ARG); getopt.add_option('s', "simulate", simulate, GetOpt::NO_ARG); getopt.add_option('n', "network", network, GetOpt::NO_ARG); + getopt.add_option( "state", state_fn, GetOpt::REQUIRED_ARG); getopt(argc, argv); if(!res.empty()) @@ -48,4 +50,7 @@ Options::Options(int argc, char **argv): throw UsageError("No layout given"); layout_fn = args[0]; + + if(state_fn.empty()) + state_fn = FS::basepart(layout_fn)+".state"; } diff --git a/source/engineer/options.h b/source/engineer/options.h index e842c25..689b22a 100644 --- a/source/engineer/options.h +++ b/source/engineer/options.h @@ -20,6 +20,7 @@ struct Options bool network; bool simulate; std::string layout_fn; + std::string state_fn; Options(int, char **); }; -- 2.43.0