#include "AssetWriter.h" #include #include #include AssetWriter::AssetWriter(XAssetInfoGeneric* asset, Zone* zone, IZoneOutputStream* stream) : ContentWriterBase(zone, stream), m_asset(asset), varScriptString(nullptr) { } scr_string_t AssetWriter::UseScriptString(const scr_string_t scrString) const { if (m_asset->m_zone == m_zone) return scrString; const auto strValue = m_asset->m_zone->m_script_strings[scrString]; const auto scrStringEntry = std::find(m_zone->m_script_strings.begin(), m_zone->m_script_strings.end(), strValue); assert(scrStringEntry != m_zone->m_script_strings.end()); if (scrStringEntry != m_zone->m_script_strings.end()) { return static_cast(std::distance(scrStringEntry, m_zone->m_script_strings.begin())); } return 0; } void AssetWriter::WriteScriptStringArray(const bool atStreamStart, const size_t count) { assert(varScriptString != nullptr); if (atStreamStart) varScriptString = m_stream->Write(varScriptString, count); auto* ptr = varScriptString; for (size_t index = 0; index < count; index++) { *ptr = UseScriptString(*ptr); ptr++; } }