mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-09 17:58:20 +00:00
Entity: fix bad ldf key serialization
This commit is contained in:
parent
e4cae35edb
commit
bda09d2945
@ -924,10 +924,20 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke
|
||||
outBitStream->Write1(); //ldf data
|
||||
|
||||
RakNet::BitStream settingStream;
|
||||
settingStream.Write<uint32_t>(m_Settings.size());
|
||||
int32_t numberOfValidKeys = m_Settings.size();
|
||||
|
||||
// Writing keys value pairs the client does not expect to receive or interpret will result in undefined behavior,
|
||||
// so we need to filter out any keys that are not valid and fix the number of valid keys to be correct.
|
||||
// TODO should make this more efficient so that we dont waste loops evaluating the same condition twice
|
||||
for (LDFBaseData* data : m_Settings) {
|
||||
if (!data || data->GetValueType() == eLDFType::LDF_TYPE_UNKNOWN) {
|
||||
numberOfValidKeys--;
|
||||
}
|
||||
}
|
||||
settingStream.Write<uint32_t>(numberOfValidKeys);
|
||||
|
||||
for (LDFBaseData* data : m_Settings) {
|
||||
if (data) {
|
||||
if (data && data->GetValueType() != eLDFType::LDF_TYPE_UNKNOWN) {
|
||||
data->WriteToPacket(&settingStream);
|
||||
}
|
||||
}
|
||||
@ -946,7 +956,6 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke
|
||||
|
||||
RakNet::BitStream settingStream;
|
||||
settingStream.Write<uint32_t>(ldfData.size());
|
||||
|
||||
for (LDFBaseData* data : ldfData) {
|
||||
if (data) {
|
||||
data->WriteToPacket(&settingStream);
|
||||
|
Loading…
Reference in New Issue
Block a user