mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-02 08:42:51 -04:00
2308ab8823
* Bump LUS * Ship -> LUS namespace change * z_scene_otr Ship -> LUS namespace * Starting to get SoH to build with LUS imgui changes. * start stuff * gamecontroleditor build issues resolved maybe * cosmetics editor and what not * console * actor viewer * more stuff * more stuff * on to errors that make sense * putting this down for a bit * no idea what these errors mean now * some kind of progress maybe * latest lus main * more * back to linker errors and being lost * Fixes command function signature. * More fixes * Even more fixes * Bump LUS * More Fixes. * Fixes even more errors. * lus bump * input editor as var * audio editor working * it builds with this * bump lus * it opens * bump lus to latest main again * make sure to do all the command registering in debugconsole * lus and what not * switch type stuff plz * undo * do the thing that fixes the thing * fix mac? * correctly show/hide menubar on boot * bump lus * input blocking updates * bump lus * Bump LUS * Press F1 to open enhancement menus moved to SoH * lus and rendering backend stuff * audio backend and lus * Bump LUS * Fixes WindowBackend dropdown * Bump LUS * misc -> utils and moves binarytools to utils. * Window refactor * bump lus * make it work * Fixes for moved files again * Bump LUS * Mercury -> Config * Bump LUS * Reacts to removed LUS hooks and bump LUS * Remove Hook: GfxInit * Removes debug audio_setgamevolume to 1 * use non-crashing branch of lus * fix: make audio init work without hooks * game icon stuff * multifix bmp * use input viewer class branch for now * just "Ship" it's cleaner * Bump LUS * Removed ExitGame hook. * Bump LUS * Hook system removed from LUS. * More LUS updates * Changes to make window position saving. * Bump LUS * Bump LUS (for real) * LUS resources now return a specialized pointer. * Bump LUS * Fixes issue in SetPathways::GetPointerSize * Bump LUS to 1.0.0 * builds but crashes * fix crash * better macro names in debug console * remove commeted out line * remove redundant check tracker settings window logic * remove commented out line * move the * * remove extra seqplayers enum def * this sneaky little guy was hiding behind a wii u ifdef * remove extra check tracker header --------- Co-authored-by: Kenix <kenixwhisperwind@gmail.com> Co-authored-by: briaguya <briaguya@alice>
94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
#include "soh/resource/importer/TextFactory.h"
|
|
#include "soh/resource/type/Text.h"
|
|
#include "spdlog/spdlog.h"
|
|
|
|
namespace LUS {
|
|
std::shared_ptr<IResource>
|
|
TextFactory::ReadResource(std::shared_ptr<ResourceInitData> initData, std::shared_ptr<BinaryReader> reader) {
|
|
auto resource = std::make_shared<Text>(initData);
|
|
std::shared_ptr<ResourceVersionFactory> factory = nullptr;
|
|
|
|
switch (resource->GetInitData()->ResourceVersion) {
|
|
case 0:
|
|
factory = std::make_shared<TextFactoryV0>();
|
|
break;
|
|
default:
|
|
// VERSION NOT SUPPORTED
|
|
break;
|
|
}
|
|
|
|
if (factory == nullptr) {
|
|
SPDLOG_ERROR("Failed to load Text with version {}", resource->GetInitData()->ResourceVersion);
|
|
return nullptr;
|
|
}
|
|
|
|
factory->ParseFileBinary(reader, resource);
|
|
|
|
return resource;
|
|
}
|
|
|
|
std::shared_ptr<IResource>
|
|
TextFactory::ReadResourceXML(std::shared_ptr<ResourceInitData> initData, tinyxml2::XMLElement *reader) {
|
|
auto resource = std::make_shared<Text>(initData);
|
|
std::shared_ptr<ResourceVersionFactory> factory = nullptr;
|
|
|
|
switch (resource->GetInitData()->ResourceVersion) {
|
|
case 0:
|
|
factory = std::make_shared<TextFactoryV0>();
|
|
break;
|
|
}
|
|
|
|
if (factory == nullptr) {
|
|
SPDLOG_ERROR("Failed to load Text with version {}", resource->GetInitData()->ResourceVersion);
|
|
return nullptr;
|
|
}
|
|
|
|
factory->ParseFileXML(reader, resource);
|
|
|
|
return resource;
|
|
}
|
|
|
|
void LUS::TextFactoryV0::ParseFileBinary(std::shared_ptr<BinaryReader> reader,
|
|
std::shared_ptr<IResource> resource) {
|
|
std::shared_ptr<Text> text = std::static_pointer_cast<Text>(resource);
|
|
ResourceVersionFactory::ParseFileBinary(reader, text);
|
|
|
|
uint32_t msgCount = reader->ReadUInt32();
|
|
text->messages.reserve(msgCount);
|
|
|
|
for (uint32_t i = 0; i < msgCount; i++) {
|
|
MessageEntry entry;
|
|
entry.id = reader->ReadUInt16();
|
|
entry.textboxType = reader->ReadUByte();
|
|
entry.textboxYPos = reader->ReadUByte();
|
|
entry.msg = reader->ReadString();
|
|
|
|
text->messages.push_back(entry);
|
|
}
|
|
}
|
|
void TextFactoryV0::ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr<IResource> resource) {
|
|
std::shared_ptr<Text> txt = std::static_pointer_cast<Text>(resource);
|
|
|
|
auto child = reader->FirstChildElement();
|
|
|
|
while (child != nullptr) {
|
|
std::string childName = child->Name();
|
|
|
|
if (childName == "TextEntry") {
|
|
MessageEntry entry;
|
|
entry.id = child->IntAttribute("ID");
|
|
entry.textboxType = child->IntAttribute("TextboxType");
|
|
entry.textboxYPos = child->IntAttribute("TextboxYPos");
|
|
entry.msg = child->Attribute("Message");
|
|
entry.msg += "\x2";
|
|
|
|
txt->messages.push_back(entry);
|
|
int bp = 0;
|
|
}
|
|
|
|
child = child->NextSiblingElement();
|
|
}
|
|
}
|
|
|
|
} // namespace LUS
|