diff --git a/application/editormode.h b/application/editormode.h index 8cb25919..13d42f3a 100644 --- a/application/editormode.h +++ b/application/editormode.h @@ -1920,7 +1920,6 @@ class editor_mode : public application_mode, private editor_track::observer, pri bool plate{false}; bool linked{false}; std::vector speeds; - bool informs{false}; }; struct signal_spot { diff --git a/application/editormodesignal.cpp b/application/editormodesignal.cpp index 81910a3a..189bf092 100644 --- a/application/editormodesignal.cpp +++ b/application/editormodesignal.cpp @@ -264,7 +264,7 @@ bool editor_mode::signal_scan(bool const Wait) if (parameter.id == 7) item.linked = true; } - editor_includes::signal_speeds(entry.file, item.speeds, item.informs); + editor_includes::signal_speeds(entry.file, item.speeds); tool.templates.push_back(std::move(item)); } std::sort(tool.templates.begin(), tool.templates.end(), [](signal_template const &A, signal_template const &B) { @@ -912,7 +912,7 @@ bool editor_mode::signal_heads(std::vector &Heads, bool const Wait) if (item.lamps.empty()) continue; auto const kind{kind_index(item.kind)}; - Heads.push_back({item.file, item.name, item.kind, item.mount, item.lamps, item.speeds, item.informs, kind >= 0 && m_signal.chosen[kind] == index}); + Heads.push_back({item.file, item.name, item.kind, item.mount, item.lamps, item.speeds, kind >= 0 && m_signal.chosen[kind] == index}); } return true; } diff --git a/application/editormodesrk.cpp b/application/editormodesrk.cpp index ffb08000..667a3d8b 100644 --- a/application/editormodesrk.cpp +++ b/application/editormodesrk.cpp @@ -302,15 +302,16 @@ bool has_speed(std::vector const &Speeds, int const Speed) return std::find(Speeds.begin(), Speeds.end(), Speed) != Speeds.end(); } -// the template has the lights the need takes: a lower orange one for a lower speed, a strip for 60 and 100, Ie-1 § 7, two orange -// ones to show a lower speed with the next signal at stop +// the template has the lights the need takes, by its chambers: an orange one to tell the next signal shows stop, a lower orange one +// for a lower speed, a strip for 60 and 100 by the speeds its events set, Ie-1 § 7, two orange ones to show a lower speed with the +// next signal at stop bool shows(signal_head const &Head, head_need const &Need) { auto const &lamps{Head.lamps}; auto const count = [&](char const Lamp) { return std::count(lamps.begin(), lamps.end(), Lamp); }; if (count('z') == 0 || count('c') == 0 || (Need.white && count('b') == 0)) return false; - if (Need.informs && (false == Head.informs || count('p') == 0)) + if (Need.informs && count('p') == 0) return false; if (Need.speeds.empty()) return true; diff --git a/application/editortool.h b/application/editortool.h index 6dbecc6a..70a8eaef 100644 --- a/application/editortool.h +++ b/application/editortool.h @@ -115,7 +115,6 @@ struct signal_head std::string mount; std::string lamps; // its chambers from the top: z green, c red, p orange, b white, n blue, x blind std::vector speeds; // of the signal itself, km/h: -1 the highest allowed, 20 the substitute signal - bool informs{false}; // it tells the next signal shows stop bool chosen{false}; // the Signals tool places it for its kind }; // one step of the history of the signalling: signals placed, standing ones renamed, other templates placed with them, the values diff --git a/editor/editorIncludeInfo.cpp b/editor/editorIncludeInfo.cpp index 64bac01b..11092df2 100644 --- a/editor/editorIncludeInfo.cpp +++ b/editor/editorIncludeInfo.cpp @@ -501,10 +501,9 @@ int parameter_count(std::string const &File) return read_template(File, text, error) ? count_parameters(text) : 0; } -bool signal_speeds(std::string const &File, std::vector &Speeds, bool &Informs) +bool signal_speeds(std::string const &File, std::vector &Speeds) { Speeds.clear(); - Informs = false; template_text text; std::string error; if (false == read_template(File, text, error)) @@ -522,23 +521,17 @@ bool signal_speeds(std::string const &File, std::vector &Speeds, bool &Info Speed = static_cast(std::lround(value)); return true; }; - for (std::size_t idx = 0; idx + 2 < tokens.size(); ++idx) + for (std::size_t idx = 0; idx + 1 < tokens.size(); ++idx) { if (tokens[idx] != "setvelocity") { continue; } int own{0}; - int next{0}; - auto const shown{speed(tokens[idx + 1], own)}; - if (shown && own != 0 && std::find(Speeds.begin(), Speeds.end(), own) == Speeds.end()) + if (speed(tokens[idx + 1], own) && own != 0 && std::find(Speeds.begin(), Speeds.end(), own) == Speeds.end()) { Speeds.push_back(own); } - if (speed(tokens[idx + 2], next) && next == 0 && (tokens[idx + 1] == "*" || (shown && own != 0 && own != 20))) - { - Informs = true; - } } std::sort(Speeds.begin(), Speeds.end()); return true; diff --git a/editor/editorIncludeInfo.hpp b/editor/editorIncludeInfo.hpp index 97099fef..d5340c03 100644 --- a/editor/editorIncludeInfo.hpp +++ b/editor/editorIncludeInfo.hpp @@ -69,8 +69,8 @@ bool save(std::string const &File, include_info const &Info, std::string &Error) // highest number of (pN) placeholder used by specified template, 0 if it has none int parameter_count(std::string const &File); // the speeds the events of a signal template set it to show, by their SetVelocity: of the signal itself, km/h, -1 the highest -// allowed, 20 the substitute signal. Informs: one of them tells the next signal shows stop. returns: false if the file can't be read -bool signal_speeds(std::string const &File, std::vector &Speeds, bool &Informs); +// allowed, 20 the substitute signal. returns: false if the file can't be read +bool signal_speeds(std::string const &File, std::vector &Speeds); // sets roles of the parameters whose use in the template makes their meaning clear. roles already set are left alone void suggest(std::string const &File, include_info &Info); // true if value of a parameter with specified role is supplied by the editor when the template is placed