Path: blob/main/RSDKv4/Networking.hpp
817 views
#if RETRO_USE_NETWORKING1#ifndef NETWORKING_H2#define NETWORKING_H3#include <thread>4#include <memory>56#define PACKET_SIZE 0x100078extern char networkHost[64];9extern char networkGame[7];10extern int networkPort;1112extern float lastPing;13extern int dcError;14extern bool waitingForPing;1516struct MultiplayerData {17int type;18int data[(PACKET_SIZE - 16) / sizeof(int) - 1];19};2021struct ServerPacket {22byte header = 0;23char game[7] = { 0, 0, 0, 0, 0, 0, 0 };24uint player = 0;25uint room = 0;2627union {28unsigned char bytes[PACKET_SIZE - 16];29MultiplayerData multiData;30} data;31};3233enum ClientHeaders {34CL_REQUEST_CODE = 0x00,35CL_JOIN = 0x01,3637CL_DATA = 0x10,38CL_DATA_VERIFIED = 0x11,3940CL_QUERY_VERIFICATION = 0x20,4142CL_LEAVE = 0xFF43};44enum ServerHeaders {45SV_CODES = 0x00,46SV_NEW_PLAYER = 0x01,4748SV_DATA = 0x10,49SV_DATA_VERIFIED = 0x11,5051SV_RECEIVED = 0x20,52SV_VERIFY_CLEAR = 0x21,5354SV_INVALID_HEADER = 0x80,55SV_NO_ROOM = 0x81,56SV_UNKNOWN_PLAYER = 0x82,5758SV_LEAVE = 0xFF59};6061class NetworkSession;6263extern std::shared_ptr<NetworkSession> session;6465void InitNetwork();66void RunNetwork();67void SendData(bool verify = false);68void DisconnectNetwork(bool finalClose = false);69void SendServerPacket(ServerPacket &send, bool verify = false);70int GetRoomCode();71void SetRoomCode(int code);7273void SetNetworkGameName(int *unused, const char *name);7475#endif76#endif777879