forked from teamnwah/openmw-tes3coop
66d5109509
Previously, two players entering the same cell only sent and received their latest changes for dynamic stats, attributes, skills and equipment when they started sharing that cell.
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#include "PacketPlayerAttribute.hpp"
|
|
|
|
#include <components/openmw-mp/NetworkMessages.hpp>
|
|
|
|
using namespace mwmp;
|
|
|
|
PacketPlayerAttribute::PacketPlayerAttribute(RakNet::RakPeerInterface *peer) : PlayerPacket(peer)
|
|
{
|
|
packetID = ID_PLAYER_ATTRIBUTE;
|
|
}
|
|
|
|
void PacketPlayerAttribute::Packet(RakNet::BitStream *bs, bool send)
|
|
{
|
|
PlayerPacket::Packet(bs, send);
|
|
|
|
RW(player->exchangeFullInfo, send);
|
|
|
|
if (player->exchangeFullInfo)
|
|
{
|
|
RW(player->creatureStats.mAttributes, send);
|
|
RW(player->npcStats.mSkillIncrease, send);
|
|
}
|
|
else
|
|
{
|
|
uint32_t count;
|
|
|
|
if (send)
|
|
count = static_cast<uint32_t>(player->attributeIndexChanges.size());
|
|
|
|
RW(count, send);
|
|
|
|
if (!send)
|
|
{
|
|
player->attributeIndexChanges.clear();
|
|
player->attributeIndexChanges.resize(count);
|
|
}
|
|
|
|
for (auto &&attributeIndex : player->attributeIndexChanges)
|
|
{
|
|
RW(attributeIndex, send);
|
|
|
|
RW(player->creatureStats.mAttributes[attributeIndex], send);
|
|
RW(player->npcStats.mSkillIncrease[attributeIndex], send);
|
|
}
|
|
}
|
|
}
|