Memory management of socket using unique_ptr, many new util functions

This commit is contained in:
2020-07-18 00:24:47 +02:00
parent b39078eedc
commit fcadff65e2
20 changed files with 365 additions and 101 deletions

View File

@@ -93,6 +93,22 @@ packets::play::serverbound::PluginMessage::PluginMessage(McDataStream &stream)
//TODO read to end of buffer
}
void packets::play::clientbound::SpawnMob::serialize(McDataStream &stream)
{
QByteArray buffer;
McDataStream tempStream(&buffer, QIODevice::WriteOnly);
tempStream.writeVar<qint32>(qint32(PacketType::SpawnMob));
tempStream.writeVar<qint32>(entityId);
tempStream.writeUuid(uuid);
tempStream.writeVar<qint32>(type);
tempStream.writeDouble(x);
tempStream.writeDouble(y);
tempStream.writeDouble(z);
tempStream << yaw << pitch << headPitch << velocityX << velocityY << velocityZ;
stream.writeVar<qint32>(buffer.length());
stream.writeRawData(buffer.constData(), buffer.length());
}
void packets::play::clientbound::ServerDifficulty::serialize(McDataStream &stream)
{
QByteArray buffer;
@@ -179,6 +195,30 @@ void packets::play::clientbound::PlayerPositionAndLook::serialize(McDataStream &
stream.writeRawData(buffer.constData(), buffer.length());
}
void packets::play::clientbound::SetExperience::serialize(McDataStream &stream)
{
QByteArray buffer;
McDataStream tempStream(&buffer, QIODevice::WriteOnly);
tempStream.writeVar<qint32>(qint32(PacketType::SetExperience));
tempStream.writeFloat(experienceBar);
tempStream.writeVar<qint32>(level);
tempStream.writeVar<qint32>(totalExperience);
stream.writeVar<qint32>(buffer.length());
stream.writeRawData(buffer.constData(), buffer.length());
}
void packets::play::clientbound::UpdateHealth::serialize(McDataStream &stream)
{
QByteArray buffer;
McDataStream tempStream(&buffer, QIODevice::WriteOnly);
tempStream.writeVar<qint32>(qint32(PacketType::UpdateHealth));
tempStream.writeFloat(health);
tempStream.writeVar<qint32>(food);
tempStream.writeFloat(foodSaturation);
stream.writeVar<qint32>(buffer.length());
stream.writeRawData(buffer.constData(), buffer.length());
}
void packets::play::clientbound::SpawnPosition::serialize(McDataStream &stream)
{
QByteArray buffer;
@@ -198,3 +238,19 @@ void packets::play::clientbound::KeepAlive::serialize(McDataStream &stream)
stream.writeVar<qint32>(buffer.length());
stream.writeRawData(buffer.constData(), buffer.length());
}
void packets::play::clientbound::ChunkData::serialize(McDataStream &stream)
{
QByteArray buffer;
McDataStream tempStream(&buffer, QIODevice::WriteOnly);
tempStream.writeVar<qint32>(qint32(PacketType::ChunkData));
tempStream << chunkX << chunkY << fullChunk;
tempStream.writeVar<qint32>(primaryBitMask);
tempStream.writeVar<qint32>(data.size());
tempStream.writeRawData(data.constData(), data.size());
tempStream.writeVar<qint32>(blockEntities.size());
for (const auto &blockEntitiy : blockEntities)
tempStream.writeRawData(blockEntitiy.constData(), blockEntitiy.size());
stream.writeVar<qint32>(buffer.length());
stream.writeRawData(buffer.constData(), buffer.length());
}