4jcraft/Minecraft.World/Network/Packets/UpdateGameRuleProgressPacket.cpp
2026-03-13 17:06:56 -05:00

68 lines
1.9 KiB
C++

#include "../../Platform/stdafx.h"
#include "../../IO/Streams/InputOutputStream.h"
#include "PacketListener.h"
#include "UpdateGameRuleProgressPacket.h"
UpdateGameRuleProgressPacket::UpdateGameRuleProgressPacket() {
m_messageId = L"";
m_icon = -1;
m_auxValue = 0;
m_definitionType = ConsoleGameRules::eGameRuleType_LevelRules;
m_dataTag = 0;
}
UpdateGameRuleProgressPacket::UpdateGameRuleProgressPacket(
ConsoleGameRules::EGameRuleType definitionType,
const std::wstring& messageId, int icon, int auxValue, int dataTag,
void* data, int dataLength) {
m_definitionType = definitionType;
m_messageId = messageId;
m_icon = icon;
m_auxValue = auxValue;
m_dataTag = dataTag;
if (dataLength > 0) {
m_data = byteArray(dataLength);
memcpy(m_data.data, data, dataLength);
} else {
m_data = byteArray();
}
}
void UpdateGameRuleProgressPacket::read(
DataInputStream* dis) // throws IOException
{
m_definitionType = (ConsoleGameRules::EGameRuleType)dis->readInt();
m_messageId = readUtf(dis, 64);
m_icon = dis->readInt();
m_auxValue = dis->readByte();
m_dataTag = dis->readInt();
int dataLength = dis->readInt();
if (dataLength > 0) {
m_data = byteArray(dataLength);
dis->readFully(m_data);
} else {
m_data = byteArray();
}
}
void UpdateGameRuleProgressPacket::write(
DataOutputStream* dos) // throws IOException
{
dos->writeInt(m_definitionType);
writeUtf(m_messageId, dos);
dos->writeInt(m_icon);
dos->writeByte(m_auxValue);
dos->writeInt(m_dataTag);
dos->writeInt(m_data.length);
dos->write(m_data);
}
void UpdateGameRuleProgressPacket::handle(PacketListener* listener) {
listener->handleUpdateGameRuleProgressPacket(shared_from_this());
}
int UpdateGameRuleProgressPacket::getEstimatedSize() {
return (int)m_messageId.length() + 4 + m_data.length;
}