Files
Blitz2/include/blitz/network/EnetConnexion.h
2024-07-18 20:45:55 +02:00

51 lines
1.3 KiB
C++

#pragma once
#include <Nazara/Network/ENetPeer.hpp>
#include <blitz/protocol/PacketSerializer.h>
#include <blitz/protocol/Packets.h>
namespace blitz {
namespace network {
class EnetClient;
class EnetServer;
#define DeclarePacket(Name, NFlag) \
void Send##Name(const blitz::protocol::data::Name& a_##Name) const { \
m_Peer->Send(0, NFlag, protocol::PacketSerializer::Serialize(protocol::packets::Name(a_##Name))); \
} \
NazaraSignal(On##Name, const blitz::protocol::data::Name&)
class EnetConnexion {
public:
EnetConnexion(Nz::ENetPeer* a_Peer = nullptr);
bool IsConnected() const {
if (!m_Peer)
return false;
return m_Peer->IsConnected();
}
DeclareAllPacket()
private:
Nz::ENetPeer* m_Peer;
void Recieve(Nz::ByteArray&);
void SetPeer(Nz::ENetPeer* a_Peer);
friend class EnetClient;
friend class EnetServer;
};
#undef DeclarePacket
} // namespace network
} // namespace blitz