wip netcode
This commit is contained in:
parent
c9a9ce841b
commit
f65a3179ac
8 changed files with 191 additions and 8 deletions
|
|
@ -6,6 +6,9 @@
|
|||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <math.h>
|
||||
#ifndef _WIN32
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if defined(_GEARSRC) && defined(_WIN32)
|
||||
#define GSDECL extern __declspec(dllexport)
|
||||
|
|
|
|||
35
engine/include/GearSrc/Net.h
Normal file
35
engine/include/GearSrc/Net.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef __GEARSRC_NET_H__
|
||||
#define __GEARSRC_NET_H__
|
||||
|
||||
#include <GearSrc/MachDep.h>
|
||||
#include <GearSrc/TypeDefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* net_client.c */
|
||||
GSDECL GSNetClient GSNetClientOpen(GSClient client, const char* hostname, int port);
|
||||
GSDECL void GSNetClientClose(GSNetClient client);
|
||||
|
||||
/* net_server.c */
|
||||
GSDECL GSNetServer GSNetServerOpen(GSServer server, int port);
|
||||
GSDECL void GSNetServerClose(GSNetServer server);
|
||||
|
||||
/* net_base.c */
|
||||
GSDECL GSBool GSNetBaseHasData(int fd);
|
||||
GSDECL int GSNetBaseServer(int port);
|
||||
GSDECL int GSNetBaseClient(const char* hostname, int port);
|
||||
GSDECL void GSNetBaseClose(int fd);
|
||||
GSDECL void GSNetBaseRead(int fd, void* data, int size, GSNetAddress* address); /* always read 508 bytes! */
|
||||
GSDECL void GSNetBaseWrite(int fd, void* data, int size, GSNetAddress* address);
|
||||
|
||||
/* net_packet.c */
|
||||
GSDECL void GSNetPacketRead(int fd, GSNetPacket* packet, GSNetAddress* address);
|
||||
GSDECL void GSNetPacketWrite(int fd, GSNetPacket* packet, GSNetAddress* address);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -41,11 +41,13 @@ typedef GSU8 GSBool;
|
|||
#define GSTrue ((GSBool)1)
|
||||
#define GSFalse ((GSBool)0)
|
||||
|
||||
typedef struct _GSVersion GSVersion;
|
||||
typedef struct _GSEngineParam GSEngineParam;
|
||||
typedef struct _GSResourceKV GSResourceKV;
|
||||
typedef struct _GSBox GSBox;
|
||||
typedef struct _GSNetPacket GSNetPacket;
|
||||
typedef struct _GSVersion GSVersion;
|
||||
typedef struct _GSEngineParam GSEngineParam;
|
||||
typedef struct _GSResourceKV GSResourceKV;
|
||||
typedef struct _GSBox GSBox;
|
||||
typedef struct _GSNetPacketHeader GSNetPacketHeader;
|
||||
typedef struct _GSNetPacket GSNetPacket;
|
||||
typedef struct _GSNetAddress GSNetAddress;
|
||||
#ifdef _GEARSRC
|
||||
typedef struct _GSClient* GSClient;
|
||||
typedef struct _GSServer* GSServer;
|
||||
|
|
@ -58,6 +60,8 @@ typedef struct _GSModel* GSModel;
|
|||
typedef struct _GSSoundDriver* GSSoundDriver;
|
||||
typedef struct _GSSoundEngine* GSSoundEngine;
|
||||
typedef struct _GSSound* GSSound;
|
||||
typedef struct _GSNetClient* GSNetClient;
|
||||
typedef struct _GSNetServer* GSNetServer;
|
||||
|
||||
typedef struct _GSModelFace GSModelFace;
|
||||
typedef struct _GSModelMaterial GSModelMaterial;
|
||||
|
|
@ -107,13 +111,25 @@ struct _GSResourceKV {
|
|||
};
|
||||
|
||||
#pragma pack(1)
|
||||
struct _GSNetPacket {
|
||||
GSU8 flag;
|
||||
struct _GSNetPacketHeader {
|
||||
GSU8 flag;
|
||||
GSU32 index;
|
||||
GSU32 sequence;
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
struct _GSNetPacket {
|
||||
GSNetPacketHeader header;
|
||||
unsigned char data[508];
|
||||
int size;
|
||||
};
|
||||
|
||||
/* i hope someone adds ipv6 support :) */
|
||||
struct _GSNetAddress {
|
||||
GSU32 address;
|
||||
GSU16 port;
|
||||
};
|
||||
|
||||
#ifdef _GEARSRC
|
||||
#include <GearSrc/GL/GL.h>
|
||||
#include <miniaudio.h>
|
||||
|
|
@ -226,6 +242,14 @@ struct _GSSoundEngine {
|
|||
GSSound* sound;
|
||||
};
|
||||
|
||||
struct _GSNetClient {
|
||||
GSEngine engine;
|
||||
};
|
||||
|
||||
struct _GSNetServer {
|
||||
GSEngine engine;
|
||||
};
|
||||
|
||||
struct _GSClient {
|
||||
GSEngine engine;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue