24 return(t / 86400.0 + 25569.0);
28 return(std::time_t(ms * 86400.0 - 25569.0 * 86400.0 + 0.5));
41 std::unique_ptr<RPG::Save>
LSD_Reader::Load(
const std::string& filename,
const std::string& encoding) {
42 std::ifstream stream(filename.c_str(), std::ios::binary);
43 if (!stream.is_open()) {
44 fprintf(stderr,
"Failed to open LSD file `%s' for reading : %s\n", filename.c_str(), strerror(errno));
51 std::ofstream stream(filename.c_str(), std::ios::binary);
52 if (!stream.is_open()) {
53 fprintf(stderr,
"Failed to open LSD file `%s' for writing : %s\n", filename.c_str(), strerror(errno));
60 std::ofstream stream(filename.c_str(), std::ios::binary);
61 if (!stream.is_open()) {
62 fprintf(stderr,
"Failed to open LSD XML file `%s' for writing : %s\n", filename.c_str(), strerror(errno));
69 std::ifstream stream(filename.c_str(), std::ios::binary);
70 if (!stream.is_open()) {
71 fprintf(stderr,
"Failed to open LSD XML file `%s' for reading : %s\n", filename.c_str(), strerror(errno));
77 std::unique_ptr<RPG::Save>
LSD_Reader::Load(std::istream& filestream,
const std::string &encoding) {
81 return std::unique_ptr<RPG::Save>();
85 if (header.length() != 11) {
87 return std::unique_ptr<RPG::Save>();
89 if (header !=
"LcfSaveData") {
90 fprintf(stderr,
"Warning: This header is not LcfSaveData and might not be a valid RPG2000 save.\n");
94 return std::unique_ptr<RPG::Save>(save);
103 const std::string header(
"LcfSaveData");
105 writer.
Write(header);
113 if (!writer.
IsOk()) {
126 if (!reader.
IsOk()) {
128 return std::unique_ptr<RPG::Save>();
134 return std::unique_ptr<RPG::Save>(save);
141 for (
auto& actor: save.actors) {
144 save.map_info.UnFixup(map);
145 save.map_info.UnFixup(map_info);