#include "STRG.hpp" #include "../Logging.hpp" namespace Retro { namespace DNAMP2 { void STRG::_read(Athena::io::IStreamReader& reader) { atUint32 langCount = reader.readUint32(); atUint32 strCount = reader.readUint32(); std::vector readLangs; readLangs.reserve(langCount); for (atUint32 l=0 ; l nameTableBuf(new uint8_t[nameTableSz]); reader.readUBytesToBuf(nameTableBuf.get(), nameTableSz); struct NameIdxEntry { atUint32 nameOff; atUint32 strIdx; }* nameIndex = (NameIdxEntry*)nameTableBuf.get(); for (atUint32 n=0 ; n strs; reader.seek(strCount * 4); for (atUint32 s=0 ; s>& lang : langs) { lang.first.write(writer); writer.writeUint32(offset); offset += strCount * 4 + 4; atUint32 langStrCount = lang.second.size(); atUint32 tableSz = strCount * 4; for (atUint32 s=0 ; s& name : names) nameTableSz += name.first.size() + 1; writer.writeUint32(names.size()); writer.writeUint32(nameTableSz); offset = names.size() * 8; for (const std::pair& name : names) { writer.writeUint32(offset); writer.writeInt32(name.second); offset += name.first.size() + 1; } for (const std::pair& name : names) writer.writeString(name.first); for (const std::pair>& lang : langs) { offset = strCount * 4; atUint32 langStrCount = lang.second.size(); for (atUint32 s=0 ; s