diff options
Diffstat (limited to 'src/Companion.cpp')
| -rw-r--r-- | src/Companion.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp index 2ef7cf2..be80ee5 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -1335,6 +1335,11 @@ void Companion::Process() { } } + if(!this->gVersion.empty()) { + auto data = this->ParseVersionString(this->gVersion); + wrapper->AddFile("assetVersion", data); + } + SPDLOG_CRITICAL("Writing version file"); wrapper->AddFile("version", vWriter.ToVector()); vWriter.Close(); @@ -1359,8 +1364,7 @@ void Companion::Process() { Instance = nullptr; } -void Companion::Pack(const std::string& folder, const std::string& output, const ArchiveType otrMode) { - +void Companion::Pack(const std::string& folder, const std::string& output, const ArchiveType otrMode, const std::string& version) { spdlog::set_level(spdlog::level::debug); spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); @@ -1405,6 +1409,12 @@ void Companion::Pack(const std::string& folder, const std::string& output, const SPDLOG_CRITICAL("> Added {}", normalized); } + if(!version.empty()) { + SPDLOG_CRITICAL("Adding version file"); + auto data = this->ParseVersionString(version); + wrapper->AddFile("assetVersion", data); + } + auto end = duration_cast<milliseconds>(system_clock::now().time_since_epoch()); SPDLOG_CRITICAL("Done! Took {}ms", end.count() - start.count()); SPDLOG_CRITICAL("Exported to {}", output); @@ -1766,3 +1776,20 @@ std::optional<YAML::Node> Companion::AddAsset(YAML::Node asset) { return std::nullopt; } + +std::vector<char> Companion::ParseVersionString(const std::string& version) { + uint16_t major = 0; + uint16_t minor = 0; + uint16_t patch = 0; + + std::sscanf(version.c_str(), "%hu.%hu.%hu", &major, &minor, &patch); + + auto wv = LUS::BinaryWriter(); + wv.SetEndianness(Torch::Endianness::Big); + wv.Write(major); + wv.Write(minor); + wv.Write(patch); + wv.Close(); + + return wv.ToVector(); +}
\ No newline at end of file |
