mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
* add linux clang format script * first shot at powershell * whoops * webrequest is slow, try webclient * just get the one file * simplify and maybe make it work? * whoops again * try a different suggestion * why is it always windows * again * try again * bit of path stuff * chmod +x * add action to check * fix workflow name * run clang format
70 lines
2.2 KiB
C++
70 lines
2.2 KiB
C++
#include "2s2h/resource/importer/TextMMFactory.h"
|
|
#include "2s2h/resource/type/TextMM.h"
|
|
#include "spdlog/spdlog.h"
|
|
|
|
namespace SOH {
|
|
std::shared_ptr<Ship::IResource> ResourceFactoryBinaryTextMMV0::ReadResource(std::shared_ptr<Ship::File> file) {
|
|
if (!FileHasValidFormatAndReader(file)) {
|
|
return nullptr;
|
|
}
|
|
|
|
auto text = std::make_shared<TextMM>(file->InitData);
|
|
auto reader = std::get<std::shared_ptr<Ship::BinaryReader>>(file->Reader);
|
|
|
|
const uint32_t msgCount = reader->ReadUInt32();
|
|
text->messages.reserve(msgCount);
|
|
|
|
for (uint32_t i = 0; i < msgCount; i++) {
|
|
MessageEntryMM entry;
|
|
entry.id = reader->ReadUInt16();
|
|
entry.textboxType = reader->ReadUByte();
|
|
entry.textboxYPos = reader->ReadUByte();
|
|
// BENTODO: the new ZAPD reads and exports this as an int16 for JP but nothing currently uses that and the game
|
|
// expects an int8. Use this for now.
|
|
entry.icon = (int8_t)reader->ReadUInt16();
|
|
entry.nextMessageID = reader->ReadUInt16();
|
|
entry.firstItemCost = reader->ReadUInt16();
|
|
entry.secondItemCost = reader->ReadUInt16();
|
|
entry.msg = reader->ReadString();
|
|
|
|
text->messages.push_back(entry);
|
|
}
|
|
|
|
return text;
|
|
}
|
|
|
|
std::shared_ptr<Ship::IResource> ResourceFactoryXMLTextMMV0::ReadResource(std::shared_ptr<Ship::File> file) {
|
|
if (!FileHasValidFormatAndReader(file)) {
|
|
return nullptr;
|
|
}
|
|
|
|
auto text = std::make_shared<TextMM>(file->InitData);
|
|
auto reader = std::get<std::shared_ptr<tinyxml2::XMLDocument>>(file->Reader)->FirstChildElement();
|
|
|
|
auto child = reader->FirstChildElement();
|
|
|
|
while (child != nullptr) {
|
|
std::string childName = child->Name();
|
|
|
|
if (childName == "TextEntry") {
|
|
MessageEntryMM entry;
|
|
entry.id = child->IntAttribute("ID");
|
|
entry.textboxType = child->IntAttribute("TextboxType");
|
|
entry.textboxYPos = child->IntAttribute("TextboxYPos");
|
|
|
|
// BENTODO: MM Unique Fields
|
|
|
|
entry.msg = child->Attribute("Message");
|
|
entry.msg += "\x2";
|
|
|
|
text->messages.push_back(entry);
|
|
int bp = 0;
|
|
}
|
|
|
|
child = child->NextSiblingElement();
|
|
}
|
|
|
|
return text;
|
|
}
|
|
} // namespace SOH
|