mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-02 11:39:14 +01:00
Catenary editor: save the catenary by the active layer
This commit is contained in:
@@ -349,7 +349,8 @@ class node_layers
|
||||
// writes changes made in the editor to the scenery files: changed, created and deleted model instances and
|
||||
// memory cells, and layer changes. the files are left intact unless the whole operation can be performed.
|
||||
// Rootstatements: additional statements to place at the end of the scenario file
|
||||
save_result save(std::vector<std::string> const &Rootstatements = {}, std::vector<std::string> const &Trailingstatements = {});
|
||||
// Layerstatements: additional statements to place in the files of specified layers, the same way
|
||||
save_result save(std::vector<std::string> const &Rootstatements = {}, std::vector<std::string> const &Trailingstatements = {}, std::map<layer_handle, std::vector<std::string>> const &Layerstatements = {});
|
||||
std::string check_sources() const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -633,7 +633,7 @@ bool node_layers::compose(save_state &State, layer_handle const Layer, compositi
|
||||
}
|
||||
|
||||
// writes changes made in the editor to the scenery files
|
||||
save_result node_layers::save(std::vector<std::string> const &Rootstatements, std::vector<std::string> const &Trailingstatements)
|
||||
save_result node_layers::save(std::vector<std::string> const &Rootstatements, std::vector<std::string> const &Trailingstatements, std::map<layer_handle, std::vector<std::string>> const &Layerstatements)
|
||||
{
|
||||
save_result result;
|
||||
if (m_layers.empty())
|
||||
@@ -1455,7 +1455,7 @@ save_result node_layers::save(std::vector<std::string> const &Rootstatements, st
|
||||
continue;
|
||||
}
|
||||
if (layer(candidate).created || state.patches.count(candidate) != 0 || appended.count(candidate) != 0 || created.count(candidate) != 0 || placed.count(candidate) != 0 ||
|
||||
markedtext.count(candidate) != 0 || (candidate == root && (false == Rootstatements.empty() || false == Trailingstatements.empty())))
|
||||
markedtext.count(candidate) != 0 || (candidate == root && (false == Rootstatements.empty() || false == Trailingstatements.empty())) || Layerstatements.count(candidate) != 0)
|
||||
{
|
||||
outputs.emplace_back(candidate);
|
||||
}
|
||||
@@ -1568,6 +1568,14 @@ save_result node_layers::save(std::vector<std::string> const &Rootstatements, st
|
||||
added.text += statement + eol;
|
||||
}
|
||||
}
|
||||
if (auto const lookup{Layerstatements.find(output)}; lookup != Layerstatements.end())
|
||||
{
|
||||
for (auto const &statement : lookup->second)
|
||||
{
|
||||
ensure_newline(added.text, eol);
|
||||
added.text += statement + eol;
|
||||
}
|
||||
}
|
||||
if (output == root && false == Trailingstatements.empty())
|
||||
{
|
||||
composition trailing;
|
||||
|
||||
Reference in New Issue
Block a user