Make scenario editor not delete all trailing empty strings when saving

This commit is contained in:
2017-02-02 11:32:53 -05:00
parent 8520030f72
commit f490464249

View File

@@ -310,6 +310,12 @@ void writeScenarioToXml(ticpp::Printer&& data, cScenario& scenario) {
data.PushText(scenario.spec_strs[i], true);
data.CloseElement("string");
}
// Preserve trailing empty strings
if(!scenario.spec_strs.empty() && scenario.spec_strs.back().empty()) {
data.OpenElement("string");
data.PushAttribute("id", scenario.spec_strs.size() - 1);
data.CloseElement("string");
}
for(size_t i = 0; i < scenario.journal_strs.size(); i++) {
if(scenario.journal_strs[i].empty()) continue;
data.OpenElement("journal");
@@ -317,6 +323,12 @@ void writeScenarioToXml(ticpp::Printer&& data, cScenario& scenario) {
data.PushText(scenario.journal_strs[i], true);
data.CloseElement("journal");
}
// Preserve trailing empty journals
if(!scenario.journal_strs.empty() && scenario.journal_strs.back().empty()) {
data.OpenElement("journal");
data.PushAttribute("id", scenario.journal_strs.size() - 1);
data.CloseElement("journal");
}
data.CloseElement("game");
data.OpenElement("editor");
data.PushElement("default-ground", scenario.default_ground);
@@ -640,6 +652,12 @@ void writeOutdoorsToXml(ticpp::Printer&& data, cOutdoors& sector) {
data.PushText(sector.sign_locs[i].text, true);
data.CloseElement("sign");
}
// Preserve trailing empty signs
if(!sector.sign_locs.empty() && sector.sign_locs.back().text.empty()) {
data.OpenElement("sign");
data.PushAttribute("id", sector.sign_locs.size() - 1);
data.CloseElement("sign");
}
for(auto& area : sector.area_desc) {
if(!area.descr.empty() && area.top < area.bottom && area.left < area.right)
data.PushElement("area", area);
@@ -651,6 +669,12 @@ void writeOutdoorsToXml(ticpp::Printer&& data, cOutdoors& sector) {
data.PushText(sector.spec_strs[i], true);
data.CloseElement("string");
}
// Preserve trailing empty strings
if(!sector.spec_strs.empty() && sector.spec_strs.back().empty()) {
data.OpenElement("string");
data.PushAttribute("id", sector.spec_strs.size() - 1);
data.CloseElement("string");
}
data.CloseElement("sector");
}
@@ -788,6 +812,12 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) {
data.PushText(town.sign_locs[i].text, true);
data.CloseElement("sign");
}
// Preserve trailing empty signs
if(!town.sign_locs.empty() && town.sign_locs.back().text.empty()) {
data.OpenElement("sign");
data.PushAttribute("id", town.sign_locs.size() - 1);
data.CloseElement("sign");
}
for(size_t i = 0; i < town.spec_strs.size(); i++) {
if(town.spec_strs[i].empty()) continue;
data.OpenElement("string");
@@ -795,6 +825,12 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) {
data.PushText(town.spec_strs[i], true);
data.CloseElement("string");
}
// Preserve trailing empty strings
if(!town.spec_strs.empty() && town.spec_strs.back().empty()) {
data.OpenElement("string");
data.PushAttribute("id", town.spec_strs.size() - 1);
data.CloseElement("string");
}
data.CloseElement("town");
}