14#include "lcf/lmt/reader.h"
15#include "lcf/lmt/chunks.h"
16#include "lcf/reader_util.h"
21std::unique_ptr<lcf::rpg::TreeMap> LMT_Reader::Load(StringView filename, StringView encoding) {
30bool LMT_Reader::Save(StringView filename,
const lcf::rpg::TreeMap& tmap, EngineVersion engine, StringView encoding, SaveOpt opt) {
39bool LMT_Reader::SaveXml(StringView filename,
const lcf::rpg::TreeMap& tmap, EngineVersion engine) {
48std::unique_ptr<lcf::rpg::TreeMap> LMT_Reader::LoadXml(StringView filename) {
54 return LMT_Reader::LoadXml(
stream);
57std::unique_ptr<lcf::rpg::TreeMap> LMT_Reader::Load(std::istream& filestream, StringView encoding) {
60 LcfReader::SetError(
"Couldn't parse map tree file.\n");
65 if (
header.length() != 10) {
66 LcfReader::SetError(
"This is not a valid RPG2000 map tree.\n");
69 if (
header !=
"LcfMapTree") {
70 fprintf(
stderr,
"Warning: This header is not LcfMapTree and might not be a valid RPG2000 map tree.\n");
72 auto tmap = std::make_unique<lcf::rpg::TreeMap>();
74 TypeReader<rpg::TreeMap>::ReadLcf(*
tmap,
reader, 0);
78bool LMT_Reader::Save(std::ostream& filestream,
const lcf::rpg::TreeMap& tmap, EngineVersion engine, StringView encoding, SaveOpt opt) {
81 LcfReader::SetError(
"Couldn't parse map tree file.\n");
85 if (
tmap.lmt_header.empty() || !
bool(
opt & SaveOpt::ePreserveHeader)) {
92 TypeReader<rpg::TreeMap>::WriteLcf(
tmap,
writer);
96bool LMT_Reader::SaveXml(std::ostream& filestream,
const lcf::rpg::TreeMap& tmap, EngineVersion engine) {
99 LcfReader::SetError(
"Couldn't parse map tree file.\n");
102 writer.BeginElement(
"LMT");
103 TypeReader<rpg::TreeMap>::WriteXml(
tmap,
writer);
108std::unique_ptr<lcf::rpg::TreeMap> LMT_Reader::LoadXml(std::istream& filestream) {
111 LcfReader::SetError(
"Couldn't parse map tree file.\n");
114 auto tmap = std::make_unique<lcf::rpg::TreeMap>();
RootXmlHandler(S &ref, const char *const name)