update lcemp networking

This commit is contained in:
2026-08-02 03:33:11 +03:00
parent b87d044cf0
commit e254228cf5
15 changed files with 616 additions and 138 deletions
@@ -4,6 +4,7 @@
#include <WinSock2.h>
#include <WS2tcpip.h>
#elif defined _XBOX
#include <stdint.h>
#include <winsockx.h>
#include <xtl.h>
#elif defined __PS3__
@@ -15,6 +16,8 @@
#include <netinet/tcp.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include <sys/select.h>
#endif
#include <vector>
@@ -27,6 +30,7 @@
#define WIN64_NET_DEFAULT_PORT 25565
#define WIN64_NET_MAX_CLIENTS 7
#define WIN64_NET_RECV_BUFFER_SIZE 65536
#define WIN64_NET_MAX_PACKET_SIZE (4 * 1024 * 1024)
#define WIN64_LAN_DISCOVERY_PORT 25566
#define WIN64_LAN_BROADCAST_MAGIC 0x4D434C4E
@@ -50,6 +54,7 @@ struct Win64LANBroadcast
DWORD texturePackParentId;
BYTE subTexturePackId;
BYTE isJoinable;
char playerNames[8][XUSER_NAME_SIZE];
};
#pragma pack(pop)
@@ -66,6 +71,7 @@ struct Win64LANSession
unsigned char subTexturePackId;
bool isJoinable;
DWORD lastSeenTick;
char playerNames[8][XUSER_NAME_SIZE];
};
struct Win64RemoteConnection
@@ -101,11 +107,13 @@ public:
static bool PopDisconnectedSmallId(BYTE *outSmallId);
static void PushFreeSmallId(BYTE smallId);
static void CloseConnectionBySmallId(BYTE smallId);
static bool StartAdvertising(int gamePort, const wchar_t *hostName, unsigned int gameSettings, unsigned int texPackId, unsigned char subTexId, unsigned short netVer);
static void StopAdvertising();
static void UpdateAdvertisePlayerCount(BYTE count);
static void UpdateAdvertiseJoinable(bool joinable);
static void UpdateAdvertisePlayerNames(BYTE count, const char playerNames[][XUSER_NAME_SIZE]);
static bool StartDiscovery();
static void StopDiscovery();