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);
void SetHandler(XmlHandler *handler)
static void ReadLcf(S &obj, LcfReader &stream)
void BeginElement(const std::string &name)
void EndElement(const std::string &name)
bool SaveXml(const std::string &filename, const RPG::Save &save)
std::unique_ptr< RPG::Save > LoadXml(const std::string &filename)
double GenerateTimestamp(std::time_t const t=std::time(NULL))
static void WriteXml(const S &obj, XmlWriter &stream)
void Write(const void *ptr, size_t size, size_t nmemb)
RPG::Save ClearDefaults(const RPG::Save &save, const RPG::MapInfo &map_info, const RPG::Map &map)
double ToTDateTime(std::time_t const t)
void ReadString(std::string &ref, size_t size)
bool Save(const std::string &filename, const RPG::Save &save, const std::string &encoding)
static void WriteLcf(const S &obj, LcfWriter &stream)
std::unique_ptr< RPG::Save > Load(const std::string &filename, const std::string &encoding)
static void SetError(const char *fmt,...)
SaveEasyRpgData easyrpg_data
void PrepareSave(RPG::Save &save, int32_t version=0)
bool Save(const std::string &filename, const std::string &encoding, SaveOpt opt=SaveOpt::eNone)
std::time_t ToUnixTimestamp(double const ms)