Correctly handle saving a scenario that was loaded in unpacked form
This commit is contained in:
@@ -977,6 +977,19 @@ void save_scenario(fs::path toFile) {
|
|||||||
writeDialogueToXml(ticpp::Printer("talk.xml", town_talk), scenario.towns[i]->talking, i);
|
writeDialogueToXml(ticpp::Printer("talk.xml", town_talk), scenario.towns[i]->talking, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alright. At this point, check to see if the scenario was unpacked.
|
||||||
|
if(fs::is_directory(toFile)) {
|
||||||
|
// If it was, we just need to save each file to its respective location
|
||||||
|
// There's no need to worry about custom graphics or sounds, either.
|
||||||
|
// And if it's unpacked, it can't possibly be legacy, so graphics don't need conversion.
|
||||||
|
for(auto& file : scen_file) {
|
||||||
|
std::string fname = file.filename.substr(9);
|
||||||
|
std::ofstream fout((toFile/fname).string());
|
||||||
|
fout << file.contents.rdbuf();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Now, custom graphics.
|
// Now, custom graphics.
|
||||||
if(spec_scen_g.is_old) {
|
if(spec_scen_g.is_old) {
|
||||||
spec_scen_g.convert_sheets();
|
spec_scen_g.convert_sheets();
|
||||||
@@ -1055,6 +1068,7 @@ void save_scenario(fs::path toFile) {
|
|||||||
fname.replace(dot,4,".boes");
|
fname.replace(dot,4,".boes");
|
||||||
else fname += ".boes";
|
else fname += ".boes";
|
||||||
}
|
}
|
||||||
|
scenario.scen_file = fname;
|
||||||
toFile = toFile.parent_path()/fname;
|
toFile = toFile.parent_path()/fname;
|
||||||
|
|
||||||
// Now write to zip file.
|
// Now write to zip file.
|
||||||
|
|||||||
@@ -1762,6 +1762,7 @@ bool load_scenario_v2(fs::path file_to_load, cScenario& scenario) {
|
|||||||
#pragma clang diagnostic pop
|
#pragma clang diagnostic pop
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
scenario.scen_file = file_to_load;
|
||||||
// From here on, we don't have to care about whether it's packed or unpacked.
|
// From here on, we don't have to care about whether it's packed or unpacked.
|
||||||
TiXmlBase::SetCondenseWhiteSpace(true); // Make sure this is enabled, because the dialog engine disables it
|
TiXmlBase::SetCondenseWhiteSpace(true); // Make sure this is enabled, because the dialog engine disables it
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public:
|
|||||||
void newDirectory(std::string dname);
|
void newDirectory(std::string dname);
|
||||||
std::istream& getFile(std::string fname);
|
std::istream& getFile(std::string fname);
|
||||||
bool hasFile(std::string fname);
|
bool hasFile(std::string fname);
|
||||||
|
std::deque<tarfile>::iterator begin() {return files.begin();}
|
||||||
|
std::deque<tarfile>::iterator end() {return files.end();}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user