mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 17:10:54 +01:00
44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
#include <Structs/Mods.h>
|
|
#include <TiltedCore/Serialization.hpp>
|
|
#include <algorithm>
|
|
|
|
using TiltedPhoques::Serialization;
|
|
|
|
bool Mods::operator==(const Mods& acRhs) const noexcept
|
|
{
|
|
return ModList == acRhs.ModList;
|
|
}
|
|
|
|
bool Mods::operator!=(const Mods& acRhs) const noexcept
|
|
{
|
|
return !this->operator==(acRhs);
|
|
}
|
|
|
|
void Mods::Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept
|
|
{
|
|
const uint16_t modCount = std::min(ModList.size(), size_t(4096)) & 0xFFFF;
|
|
aWriter.WriteBits(modCount, 13);
|
|
|
|
for (auto& entry : ModList)
|
|
{
|
|
aWriter.WriteBits(entry.Id, 16);
|
|
Serialization::WriteBool(aWriter, entry.IsLite);
|
|
Serialization::WriteString(aWriter, entry.Filename);
|
|
}
|
|
}
|
|
|
|
void Mods::Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexcept
|
|
{
|
|
uint64_t data = 0;
|
|
aReader.ReadBits(data, 13);
|
|
|
|
const size_t modCount = data & 0xFFFF;
|
|
ModList.resize(modCount);
|
|
for (size_t i = 0; i < modCount; ++i)
|
|
{
|
|
aReader.ReadBits(data, 16);
|
|
ModList[i].Id = data & 0xFFFF;
|
|
ModList[i].IsLite = Serialization::ReadBool(aReader);
|
|
ModList[i].Filename = Serialization::ReadString(aReader);
|
|
}
|
|
}
|