forked from mirror/openmw-tes3mp
Create a new BasePacket that PlayerPacket inherits from
This commit is contained in:
parent
b8f4cb94fb
commit
fcc793a0af
6 changed files with 137 additions and 84 deletions
|
@ -148,8 +148,8 @@ add_component_dir (version
|
||||||
add_component_dir (openmw-mp
|
add_component_dir (openmw-mp
|
||||||
Log
|
Log
|
||||||
PacketsController
|
PacketsController
|
||||||
Packets/PlayerPacket Packets/PacketBaseInfo Packets/PacketPosition Packets/PacketEquipment Packets/PacketAttack
|
Packets/BasePacket Packets/PlayerPacket Packets/PacketBaseInfo Packets/PacketPosition Packets/PacketEquipment
|
||||||
Packets/PacketDynamicStats Packets/PacketCell Packets/PacketDrawState Packets/PacketChatMessage
|
Packets/PacketAttack Packets/PacketDynamicStats Packets/PacketCell Packets/PacketDrawState Packets/PacketChatMessage
|
||||||
Packets/PacketCharGen Packets/PacketAttribute Packets/PacketSkill Packets/PacketLevel Packets/PacketHandshake
|
Packets/PacketCharGen Packets/PacketAttribute Packets/PacketSkill Packets/PacketLevel Packets/PacketHandshake
|
||||||
Packets/PacketGUIBoxes Packets/PacketClass Packets/PacketTime)
|
Packets/PacketGUIBoxes Packets/PacketClass Packets/PacketTime)
|
||||||
|
|
||||||
|
|
37
components/openmw-mp/Packets/BasePacket.cpp
Normal file
37
components/openmw-mp/Packets/BasePacket.cpp
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#include <components/openmw-mp/NetworkMessages.hpp>
|
||||||
|
#include <PacketPriority.h>
|
||||||
|
#include <RakPeer.h>
|
||||||
|
#include "BasePacket.hpp"
|
||||||
|
|
||||||
|
using namespace mwmp;
|
||||||
|
|
||||||
|
BasePacket::BasePacket(RakNet::RakPeerInterface *peer)
|
||||||
|
{
|
||||||
|
packetID = 0;
|
||||||
|
priority = HIGH_PRIORITY;
|
||||||
|
reliability = RELIABLE_ORDERED;
|
||||||
|
this->peer = peer;
|
||||||
|
}
|
||||||
|
|
||||||
|
BasePacket::~BasePacket()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasePacket::SetReadStream(RakNet::BitStream *bitStream)
|
||||||
|
{
|
||||||
|
bsRead = bitStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasePacket::SetSendStream(RakNet::BitStream *bitStream)
|
||||||
|
{
|
||||||
|
bsSend = bitStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasePacket::SetStreams(RakNet::BitStream *inStream, RakNet::BitStream *outStream)
|
||||||
|
{
|
||||||
|
if (inStream != 0)
|
||||||
|
bsRead = inStream;
|
||||||
|
if (outStream != 0)
|
||||||
|
bsSend = outStream;
|
||||||
|
}
|
93
components/openmw-mp/Packets/BasePacket.hpp
Normal file
93
components/openmw-mp/Packets/BasePacket.hpp
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
#ifndef OPENMW_BASEPACKET_HPP
|
||||||
|
#define OPENMW_BASEPACKET_HPP
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <RakNetTypes.h>
|
||||||
|
#include <BitStream.h>
|
||||||
|
#include <PacketPriority.h>
|
||||||
|
#include <components/openmw-mp/Base/BasePlayer.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
namespace mwmp
|
||||||
|
{
|
||||||
|
class BasePacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BasePacket(RakNet::RakPeerInterface *peer);
|
||||||
|
|
||||||
|
~BasePacket();
|
||||||
|
|
||||||
|
void SetReadStream(RakNet::BitStream *bitStream);
|
||||||
|
void SetSendStream(RakNet::BitStream *bitStream);
|
||||||
|
void SetStreams(RakNet::BitStream *inStream, RakNet::BitStream *outStream);
|
||||||
|
|
||||||
|
static size_t headerSize()
|
||||||
|
{
|
||||||
|
return (size_t)(1 + RakNet::RakNetGUID::size()); // packetID + RakNetGUID (uint64_t)
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char GetPacketID()
|
||||||
|
{
|
||||||
|
return packetID;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
template<class templateType>
|
||||||
|
void RW(templateType &data, unsigned int size, bool write)
|
||||||
|
{
|
||||||
|
if (write)
|
||||||
|
bs->Write(data, size);
|
||||||
|
else
|
||||||
|
bs->Read(data, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class templateType>
|
||||||
|
void RW(templateType &data, bool write)
|
||||||
|
{
|
||||||
|
if (write)
|
||||||
|
bs->Write(data);
|
||||||
|
else
|
||||||
|
bs->Read(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RW(bool &data, bool write)
|
||||||
|
{
|
||||||
|
char _data;
|
||||||
|
if (write)
|
||||||
|
{
|
||||||
|
_data = data;
|
||||||
|
bs->Write(_data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bs->Read(_data);
|
||||||
|
data = _data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RW(std::string &str, bool write)
|
||||||
|
{
|
||||||
|
if (write)
|
||||||
|
{
|
||||||
|
RakNet::RakString rstr(str.c_str());
|
||||||
|
bs->Write(rstr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RakNet::RakString rstr;
|
||||||
|
bs->Read(rstr);
|
||||||
|
str = rstr.C_String();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
unsigned char packetID;
|
||||||
|
PacketReliability reliability;
|
||||||
|
PacketPriority priority;
|
||||||
|
RakNet::BitStream *bsRead, *bsSend, *bs;
|
||||||
|
RakNet::RakPeerInterface *peer;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //OPENMW_BASEPACKET_HPP
|
|
@ -17,7 +17,7 @@ void PlayerPacket::Packet(RakNet::BitStream *bs, BasePlayer *player, bool send)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerPacket::PlayerPacket(RakNet::RakPeerInterface *peer)
|
PlayerPacket::PlayerPacket(RakNet::RakPeerInterface *peer) : BasePacket(peer)
|
||||||
{
|
{
|
||||||
packetID = 0;
|
packetID = 0;
|
||||||
priority = HIGH_PRIORITY;
|
priority = HIGH_PRIORITY;
|
||||||
|
@ -49,16 +49,6 @@ void PlayerPacket::Read(BasePlayer *player)
|
||||||
Packet(bsRead, player, false);
|
Packet(bsRead, player, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerPacket::SetReadStream(RakNet::BitStream *bitStream)
|
|
||||||
{
|
|
||||||
bsRead = bitStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerPacket::SetSendStream(RakNet::BitStream *bitStream)
|
|
||||||
{
|
|
||||||
bsSend = bitStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerPacket::RequestData(RakNet::RakNetGUID player)
|
void PlayerPacket::RequestData(RakNet::RakNetGUID player)
|
||||||
{
|
{
|
||||||
bsSend->ResetWritePointer();
|
bsSend->ResetWritePointer();
|
||||||
|
@ -66,11 +56,3 @@ void PlayerPacket::RequestData(RakNet::RakNetGUID player)
|
||||||
bsSend->Write(player);
|
bsSend->Write(player);
|
||||||
peer->Send(bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, player, false);
|
peer->Send(bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, player, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerPacket::SetStreams(RakNet::BitStream *inStream, RakNet::BitStream *outStream)
|
|
||||||
{
|
|
||||||
if (inStream != 0)
|
|
||||||
bsRead = inStream;
|
|
||||||
if (outStream != 0)
|
|
||||||
bsSend = outStream;
|
|
||||||
}
|
|
|
@ -7,10 +7,12 @@
|
||||||
#include <PacketPriority.h>
|
#include <PacketPriority.h>
|
||||||
#include <components/openmw-mp/Base/BasePlayer.hpp>
|
#include <components/openmw-mp/Base/BasePlayer.hpp>
|
||||||
|
|
||||||
|
#include "BasePacket.hpp"
|
||||||
|
|
||||||
|
|
||||||
namespace mwmp
|
namespace mwmp
|
||||||
{
|
{
|
||||||
class PlayerPacket
|
class PlayerPacket : public BasePacket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerPacket(RakNet::RakPeerInterface *peer);
|
PlayerPacket(RakNet::RakPeerInterface *peer);
|
||||||
|
@ -25,10 +27,6 @@ namespace mwmp
|
||||||
|
|
||||||
virtual void RequestData(RakNet::RakNetGUID player);
|
virtual void RequestData(RakNet::RakNetGUID player);
|
||||||
|
|
||||||
void SetReadStream(RakNet::BitStream *bitStream);
|
|
||||||
void SetSendStream(RakNet::BitStream *bitStream);
|
|
||||||
void SetStreams(RakNet::BitStream *inStream, RakNet::BitStream *outStream);
|
|
||||||
|
|
||||||
static size_t headerSize()
|
static size_t headerSize()
|
||||||
{
|
{
|
||||||
return (size_t)(1 + RakNet::RakNetGUID::size()); // packetID + RakNetGUID (uint64_t)
|
return (size_t)(1 + RakNet::RakNetGUID::size()); // packetID + RakNetGUID (uint64_t)
|
||||||
|
@ -39,65 +37,8 @@ namespace mwmp
|
||||||
return packetID;
|
return packetID;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
|
||||||
template<class templateType>
|
|
||||||
void RW(templateType &data, unsigned int size, bool write)
|
|
||||||
{
|
|
||||||
if (write)
|
|
||||||
bs->Write(data, size);
|
|
||||||
else
|
|
||||||
bs->Read(data, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class templateType>
|
|
||||||
void RW(templateType &data, bool write)
|
|
||||||
{
|
|
||||||
if (write)
|
|
||||||
bs->Write(data);
|
|
||||||
else
|
|
||||||
bs->Read(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RW(bool &data, bool write)
|
|
||||||
{
|
|
||||||
char _data;
|
|
||||||
if (write)
|
|
||||||
{
|
|
||||||
_data = data;
|
|
||||||
bs->Write(_data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bs->Read(_data);
|
|
||||||
data = _data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void RW(std::string &str, bool write)
|
|
||||||
{
|
|
||||||
if (write)
|
|
||||||
{
|
|
||||||
RakNet::RakString rstr(str.c_str());
|
|
||||||
bs->Write(rstr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RakNet::RakString rstr;
|
|
||||||
bs->Read(rstr);
|
|
||||||
str = rstr.C_String();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
BasePlayer *player;
|
BasePlayer *player;
|
||||||
unsigned char packetID;
|
|
||||||
PacketReliability reliability;
|
|
||||||
PacketPriority priority;
|
|
||||||
|
|
||||||
private:
|
|
||||||
RakNet::BitStream *bsRead, *bsSend, *bs;
|
|
||||||
RakNet::RakPeerInterface *peer;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "Packets/PacketClass.hpp"
|
#include "Packets/PacketClass.hpp"
|
||||||
#include "Packets/PacketPosition.hpp"
|
#include "Packets/PacketPosition.hpp"
|
||||||
#include "Packets/PacketBaseInfo.hpp"
|
#include "Packets/PacketBaseInfo.hpp"
|
||||||
#include "components/openmw-mp/Packets/PacketEquipment.hpp"
|
#include "Packets/PacketEquipment.hpp"
|
||||||
#include "Packets/PacketAttack.hpp"
|
#include "Packets/PacketAttack.hpp"
|
||||||
#include "Packets/PacketDynamicStats.hpp"
|
#include "Packets/PacketDynamicStats.hpp"
|
||||||
#include "Packets/PacketResurrect.hpp"
|
#include "Packets/PacketResurrect.hpp"
|
||||||
|
|
Loading…
Reference in a new issue