#ifndef NET_H #define NET_H #include "steam/steam_api.h" #include "steam/isteamnetworkingsockets.h" #include "tier0/platform.h" #include "tier1/commandline.h" abstract_class IIClient; class CBasePlayer; enum EPacketType { PACKET_TYPE_CREATE_ENTITTY = 0, PACKET_TYPE_DESTROY_ENTITTY = 1, PACKET_TYPE_ENTITY_UPDATE = 2, // Player can only send this PACKET_TYPE_PLAYER_MOVEMENT = 3, PACKET_TYPE_PLAYER_JOIN = 4, PACKET_TYPE_PLAYER_LEAVE = 5, PACKET_TYPE_GAMEMODE_START = 6, PACKET_TYPE_GAMEMODE_END = 7, }; struct Packet_t { uint32_t type; }; struct PacketPlayer_t: public Packet_t { uint64_t playerID; uint32_t playerHandle; }; struct PacketGameMode_t: public Packet_t { char szName[256]; }; enum EMessageMode { MESSAGE_MODE_UNRELIABLE, MESSAGE_MODE_RELIABLE, }; interface INetworking { public: static void Init(); static void Deinit(); static void Frame(); static void SendData( void *pData, uint32_t nSize, IIClient *pClient, EMessageMode messageMode ); static void SendDataEverybody( void *pData, uint32_t nSize, EMessageMode messageMode ); static void SendDataEverybodyExcept( void *pData, uint32_t nSize, IIClient *pClient, EMessageMode messageMode ); static void SendDataEverybodyExcept( void *pData, uint32_t nSize, CBasePlayer *pClient, EMessageMode messageMode ); static void ProcessPacket( void *pData, uint32_t nSize, IIClient *pClient ); static void CreateServer(); static void GetServerInfo(); static void JoinServer( const char *szIP ); static void JoinServer( uint64_t nSteamID ); static void ClientConnectedCallback( SteamNetConnectionStatusChangedCallback_t *pCallback ); static bool IsServer(); static bool IsClient(); static bool IsConnected(); }; #endif