1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-24 11:23:50 +00:00
openmw-tes3mp/components/openmw-mp/Packets/Object/PacketObjectHit.cpp
David Cernat bc093c8596 [General] Implement OnObjectHit packet, part 2
ObjectHit is now also sent when local actors succeed or fail in hitting other actors with melee attacks, with the packet including the success state of their attack.

It is also sent when creatures hit a non-actor object.
2019-12-13 14:00:51 +02:00

50 lines
1.3 KiB
C++

#include <components/openmw-mp/NetworkMessages.hpp>
#include "PacketObjectHit.hpp"
using namespace mwmp;
PacketObjectHit::PacketObjectHit(RakNet::RakPeerInterface *peer) : ObjectPacket(peer)
{
packetID = ID_OBJECT_HIT;
hasCellData = true;
}
void PacketObjectHit::Packet(RakNet::BitStream *newBitstream, bool send)
{
if (!PacketHeader(newBitstream, send))
return;
BaseObject baseObject;
for (unsigned int i = 0; i < objectList->baseObjectCount; i++)
{
if (send)
baseObject = objectList->baseObjects.at(i);
RW(baseObject.isPlayer, send);
if (baseObject.isPlayer)
RW(baseObject.guid, send);
else
Object(baseObject, send);
RW(baseObject.hittingActor.isPlayer, send);
if (baseObject.hittingActor.isPlayer)
{
RW(baseObject.hittingActor.guid, send);
}
else
{
RW(baseObject.hittingActor.refId, send, true);
RW(baseObject.hittingActor.refNum, send);
RW(baseObject.hittingActor.mpNum, send);
RW(baseObject.hittingActor.name, send);
}
RW(baseObject.hitAttack.success, send);
if (!send)
objectList->baseObjects.push_back(baseObject);
}
}