mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-02 23:16:22 +01:00
feat(editor): a track deleted cuts the design kept for its line down to the tracks left along it, in the same step of the undo history: a design keeps the stretch of its line it stands for (//$h kept <from> <to>), a track deleted in the middle parts it in two, one at an end shortens it, a design with no track left is forgotten. The geometry stays as designed, only its reach changes. A design cut down isn't taken whole by the route plan nor merged with a new one nor carried along by a switch slid, and gives no designed curve to the tracks left of a curve it cut, which are recognized as they lie: a track laid by hand into the gap is never pulled back to the old shape. The status tells of it. The //$h click lines are the editor's own now: read back with their design, and written once on save instead of staying behind and piling up. Selftests on a copy of wgr.scn: a track of a compound curve deleted in the middle, undone and redone, one at an end, all of a piece, saved and read back
This commit is contained in:
@@ -1829,6 +1829,7 @@ void editor_mode::track_set_delete()
|
||||
if (std::find(m_route.chain.tracks.begin(), m_route.chain.tracks.end(), track) != m_route.chain.tracks.end())
|
||||
m_route = {};
|
||||
}
|
||||
auto const designs{designs_trimmed(removed)};
|
||||
push_track_snapshot({}, {}, removed);
|
||||
m_track_set.clear();
|
||||
m_node = nullptr;
|
||||
@@ -1838,6 +1839,8 @@ void editor_mode::track_set_delete()
|
||||
auto status{format(STR_P("%zu track deleted, Ctrl+Z brings it back", "%zu tracks deleted, Ctrl+Z brings them back", static_cast<long long>(removed.size())), removed.size())};
|
||||
if (kept > 0)
|
||||
status += format(STR_C(", %zu with vehicles on them or in the files which can't be changed are left"), kept);
|
||||
if (false == designs.empty())
|
||||
status += "\n" + designs;
|
||||
ui()->set_status(status, false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user