mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-04 08:02:20 +01:00
fix(editor): the records of the stations, the switches, the alignments and the kilometrage stay out of a _ter.scm too, as out of a .txtf: with the .sbt of the scenery the file loads as terrain, isn't written back and the changes kept there were lost
This commit is contained in:
@@ -13,6 +13,7 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#include "application/editormodeshared.h"
|
#include "application/editormodeshared.h"
|
||||||
#include "application/editorprojection.h"
|
#include "application/editorprojection.h"
|
||||||
#include "application/editoruilayer.h"
|
#include "application/editoruilayer.h"
|
||||||
|
#include "editor/editorAlignmentStore.hpp"
|
||||||
#include "editor/editorFormat.hpp"
|
#include "editor/editorFormat.hpp"
|
||||||
#include "editor/editorGeometry.hpp"
|
#include "editor/editorGeometry.hpp"
|
||||||
#include "editor/editorIncludeInfo.hpp"
|
#include "editor/editorIncludeInfo.hpp"
|
||||||
@@ -360,11 +361,7 @@ srk_tool::record &srk_tool::record_of_open()
|
|||||||
auto *first{m_layout->switches.front()};
|
auto *first{m_layout->switches.front()};
|
||||||
entry.anchor = first->name();
|
entry.anchor = first->name();
|
||||||
entry.track = first;
|
entry.track = first;
|
||||||
entry.layer = scene::Layers.resolve(first->layer());
|
entry.layer = alignment_store::layer_of(*first);
|
||||||
if (false == scene::Layers.valid(entry.layer) || false == scene::Layers.accepts(entry.layer))
|
|
||||||
entry.layer = scene::Layers.active();
|
|
||||||
if (false == scene::Layers.valid(entry.layer))
|
|
||||||
entry.layer = 1;
|
|
||||||
m_records.push_back(std::move(entry));
|
m_records.push_back(std::move(entry));
|
||||||
m_record = static_cast<int>(m_records.size()) - 1;
|
m_record = static_cast<int>(m_records.size()) - 1;
|
||||||
m_anchor = first;
|
m_anchor = first;
|
||||||
|
|||||||
@@ -863,7 +863,12 @@ void restore(std::vector<record> Records)
|
|||||||
|
|
||||||
scene::layer_handle layer_of(TTrack const &Track)
|
scene::layer_handle layer_of(TTrack const &Track)
|
||||||
{
|
{
|
||||||
auto const usable = [](scene::layer_handle const Layer) { return scene::Layers.valid(Layer) && scene::Layers.accepts(Layer) && false == scene::Layers.layer(Layer).name.ends_with(".txtf"); };
|
auto const usable = [](scene::layer_handle const Layer) {
|
||||||
|
if (false == scene::Layers.valid(Layer) || false == scene::Layers.accepts(Layer))
|
||||||
|
return false;
|
||||||
|
auto const &name{scene::Layers.layer(Layer).name};
|
||||||
|
return false == name.ends_with(".txtf") && false == name.ends_with("_ter.scm");
|
||||||
|
};
|
||||||
auto layer{scene::Layers.resolve(Track.layer())};
|
auto layer{scene::Layers.resolve(Track.layer())};
|
||||||
if (false == usable(layer))
|
if (false == usable(layer))
|
||||||
layer = scene::Layers.active();
|
layer = scene::Layers.active();
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ std::optional<std::vector<record>> take_changes();
|
|||||||
void settle();
|
void settle();
|
||||||
// puts the records back as they were, for undo and redo
|
// puts the records back as they were, for undo and redo
|
||||||
void restore(std::vector<record> Records);
|
void restore(std::vector<record> Records);
|
||||||
// layer the editor keeps the records of the track in: its own, unless it's a terrain file (.txtf), whose binary version
|
// layer the editor keeps the records of the track in: its own, unless it's a terrain file: a .txtf, whose binary version (.btf)
|
||||||
// (.btf) the editor doesn't read the records from
|
// the editor doesn't read the records from, or a _ter.scm, which isn't written back while the scenery has its .sbt
|
||||||
scene::layer_handle layer_of(TTrack const &Track);
|
scene::layer_handle layer_of(TTrack const &Track);
|
||||||
|
|
||||||
} // namespace alignment_store
|
} // namespace alignment_store
|
||||||
|
|||||||
Reference in New Issue
Block a user