forked from OctaForge/OctaCore
drop game/server.cc and the enet shim
parent
c935752a6b
commit
311f09270a
|
@ -42,7 +42,6 @@ client_src = [
|
||||||
'../game/entities.cc',
|
'../game/entities.cc',
|
||||||
'../game/game.cc',
|
'../game/game.cc',
|
||||||
'../game/render.cc',
|
'../game/render.cc',
|
||||||
'../game/server.cc',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
threads_dep = dependency('threads')
|
threads_dep = dependency('threads')
|
||||||
|
|
|
@ -529,13 +529,10 @@ extern void preloadwatershaders(bool force = false);
|
||||||
extern void initserver();
|
extern void initserver();
|
||||||
extern void cleanupserver();
|
extern void cleanupserver();
|
||||||
extern void updatetime();
|
extern void updatetime();
|
||||||
|
|
||||||
extern void localclienttoserver(int chan, ENetPacket *);
|
|
||||||
extern void localconnect();
|
extern void localconnect();
|
||||||
|
|
||||||
// client
|
// client
|
||||||
extern void localdisconnect(bool cleanup = true);
|
extern void localdisconnect(bool cleanup = true);
|
||||||
extern void localservertoclient(int chan, ENetPacket *packet);
|
|
||||||
extern void clientkeepalive();
|
extern void clientkeepalive();
|
||||||
|
|
||||||
// command
|
// command
|
||||||
|
|
|
@ -1182,8 +1182,6 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
checksleep(lastmillis);
|
checksleep(lastmillis);
|
||||||
|
|
||||||
server::serverupdate();
|
|
||||||
|
|
||||||
if(frames) updatefpshistory(elapsedtime);
|
if(frames) updatefpshistory(elapsedtime);
|
||||||
frames++;
|
frames++;
|
||||||
|
|
||||||
|
|
|
@ -123,32 +123,6 @@ void cleanupserver()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *disconnectreason(int reason)
|
|
||||||
{
|
|
||||||
switch(reason)
|
|
||||||
{
|
|
||||||
case DISC_EOP: return "end of packet";
|
|
||||||
case DISC_LOCAL: return "server is in local mode";
|
|
||||||
case DISC_KICK: return "kicked/banned";
|
|
||||||
case DISC_MSGERR: return "message error";
|
|
||||||
case DISC_IPBAN: return "ip is banned";
|
|
||||||
case DISC_PRIVATE: return "server is in private mode";
|
|
||||||
case DISC_MAXCLIENTS: return "server FULL";
|
|
||||||
case DISC_TIMEOUT: return "connection timed out";
|
|
||||||
case DISC_OVERFLOW: return "overflow";
|
|
||||||
case DISC_PASSWORD: return "invalid password";
|
|
||||||
default: return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect_client(int n, int reason)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void kicknonlocalclients(int reason)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void updatetime()
|
void updatetime()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -158,7 +132,6 @@ void localdisconnect(bool cleanup)
|
||||||
bool disconnected = false;
|
bool disconnected = false;
|
||||||
loopv(clients) if(clients[i]->type==ST_LOCAL)
|
loopv(clients) if(clients[i]->type==ST_LOCAL)
|
||||||
{
|
{
|
||||||
server::localdisconnect(i);
|
|
||||||
delclient(clients[i]);
|
delclient(clients[i]);
|
||||||
disconnected = true;
|
disconnected = true;
|
||||||
}
|
}
|
||||||
|
@ -183,5 +156,4 @@ void logoutfv(const char *fmt, va_list args)
|
||||||
|
|
||||||
void initserver()
|
void initserver()
|
||||||
{
|
{
|
||||||
server::serverinit();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ namespace entities
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef STANDALONE
|
|
||||||
vector<extentity *> ents;
|
vector<extentity *> ents;
|
||||||
|
|
||||||
vector<extentity *> &getents() { return ents; }
|
vector<extentity *> &getents() { return ents; }
|
||||||
|
@ -22,21 +21,6 @@ namespace entities
|
||||||
bool mayattach(extentity &e) { return false; }
|
bool mayattach(extentity &e) { return false; }
|
||||||
bool attachent(extentity &e, extentity &a) { return false; }
|
bool attachent(extentity &e, extentity &a) { return false; }
|
||||||
|
|
||||||
const char *itemname(int i)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int itemicon(int i)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *entmdlname(int type)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *entmodel(const entity &e)
|
const char *entmodel(const entity &e)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -50,26 +34,6 @@ namespace entities
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void trypickup(int n, gameent *d)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void checkitems(gameent *d)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void putitems(packetbuf &p) // puts items in network stream and also spawns them locally
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void resetspawns() { }
|
|
||||||
|
|
||||||
void spawnitems(bool force)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void setspawn(int i, bool on) { if(ents.inrange(i)) { extentity *e = ents[i]; e->setspawned(on); e->clearnopickup(); } }
|
|
||||||
|
|
||||||
extentity *newentity() { return new gameentity(); }
|
extentity *newentity() { return new gameentity(); }
|
||||||
void deleteentity(extentity *e) { delete (gameentity *)e; }
|
void deleteentity(extentity *e) { delete (gameentity *)e; }
|
||||||
|
|
||||||
|
@ -113,6 +77,5 @@ namespace entities
|
||||||
{
|
{
|
||||||
return 4.0f;
|
return 4.0f;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@ namespace game
|
||||||
|
|
||||||
const char *getclientmap() { return clientmap; }
|
const char *getclientmap() { return clientmap; }
|
||||||
|
|
||||||
|
const char *gameident() { return "OctaForge"; }
|
||||||
|
|
||||||
void resetgamestate()
|
void resetgamestate()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -65,7 +67,6 @@ namespace game
|
||||||
{
|
{
|
||||||
crouchplayer(player1, 10, true);
|
crouchplayer(player1, 10, true);
|
||||||
moveplayer(player1, 10, true);
|
moveplayer(player1, 10, true);
|
||||||
entities::checkitems(player1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +146,6 @@ namespace game
|
||||||
void startmap(const char *name) // called just after a map load
|
void startmap(const char *name) // called just after a map load
|
||||||
{
|
{
|
||||||
spawnplayer(player1);
|
spawnplayer(player1);
|
||||||
entities::resetspawns();
|
|
||||||
copystring(clientmap, name ? name : "");
|
copystring(clientmap, name ? name : "");
|
||||||
|
|
||||||
sendmapinfo();
|
sendmapinfo();
|
||||||
|
|
|
@ -165,18 +165,7 @@ struct teaminfo
|
||||||
namespace entities
|
namespace entities
|
||||||
{
|
{
|
||||||
extern vector<extentity *> ents;
|
extern vector<extentity *> ents;
|
||||||
|
|
||||||
extern const char *entmdlname(int type);
|
|
||||||
extern const char *itemname(int i);
|
|
||||||
extern int itemicon(int i);
|
|
||||||
|
|
||||||
extern void preloadentities();
|
extern void preloadentities();
|
||||||
extern void renderentities();
|
|
||||||
extern void checkitems(gameent *d);
|
|
||||||
extern void resetspawns();
|
|
||||||
extern void spawnitems(bool force = false);
|
|
||||||
extern void putitems(packetbuf &p);
|
|
||||||
extern void setspawn(int i, bool on);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace game
|
namespace game
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
#include "game.hh"
|
|
||||||
|
|
||||||
namespace game
|
|
||||||
{
|
|
||||||
const char *gameident() { return "Tesseract"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace server
|
|
||||||
{
|
|
||||||
|
|
||||||
string smapname = "";
|
|
||||||
|
|
||||||
void serverinit()
|
|
||||||
{
|
|
||||||
smapname[0] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
int numclients(int exclude = -1, bool nospec = true, bool noai = true, bool priv = false)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int spawntime(int type)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool delayspawn(int type)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ispaused() { return false; }
|
|
||||||
|
|
||||||
int scaletime(int t) { return t*100; }
|
|
||||||
|
|
||||||
void serverupdate()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void noclients()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void localconnect(int n)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void localdisconnect(int n)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int clientconnect(int n, uint ip)
|
|
||||||
{
|
|
||||||
return DISC_LOCAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void clientdisconnect(int n)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int reserveclients() { return 3; }
|
|
||||||
|
|
||||||
bool allowbroadcast(int n)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int laninfoport() { return TESSERACT_LANINFO_PORT; }
|
|
||||||
int serverport() { return TESSERACT_SERVER_PORT; }
|
|
||||||
int numchannels() { return 3; }
|
|
||||||
|
|
||||||
int protocolversion() { return 0; }
|
|
||||||
}
|
|
||||||
|
|
|
@ -450,62 +450,10 @@ extern void moveragdoll(dynent *d);
|
||||||
extern void cleanragdoll(dynent *d);
|
extern void cleanragdoll(dynent *d);
|
||||||
|
|
||||||
// server
|
// server
|
||||||
#define MAXTRANS 5000 // max amount of data to swallow in 1 go
|
|
||||||
|
|
||||||
enum { DISC_NONE = 0, DISC_EOP, DISC_LOCAL, DISC_KICK, DISC_MSGERR, DISC_IPBAN, DISC_PRIVATE, DISC_MAXCLIENTS, DISC_TIMEOUT, DISC_OVERFLOW, DISC_PASSWORD, DISC_NUM };
|
|
||||||
|
|
||||||
extern void *getclientinfo(int i);
|
|
||||||
extern ENetPacket *sendf(int cn, int chan, const char *format, ...);
|
|
||||||
extern void sendpacket(int cn, int chan, ENetPacket *packet, int exclude = -1);
|
|
||||||
extern void localconnect();
|
extern void localconnect();
|
||||||
extern const char *disconnectreason(int reason);
|
|
||||||
extern void disconnect_client(int n, int reason);
|
|
||||||
extern void kicknonlocalclients(int reason = DISC_NONE);
|
|
||||||
extern bool hasnonlocalclients();
|
|
||||||
extern bool haslocalclients();
|
extern bool haslocalclients();
|
||||||
|
|
||||||
// serverbrowser
|
|
||||||
|
|
||||||
struct servinfo
|
|
||||||
{
|
|
||||||
string name, map, desc;
|
|
||||||
int protocol, numplayers, maxplayers, ping;
|
|
||||||
vector<int> attr;
|
|
||||||
|
|
||||||
servinfo() : protocol(INT_MIN), numplayers(0), maxplayers(0)
|
|
||||||
{
|
|
||||||
name[0] = map[0] = desc[0] = '\0';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
extern servinfo *getservinfo(int i);
|
|
||||||
|
|
||||||
#define GETSERVINFO(idx, si, body) do { \
|
|
||||||
servinfo *si = getservinfo(idx); \
|
|
||||||
if(si) \
|
|
||||||
{ \
|
|
||||||
body; \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
#define GETSERVINFOATTR(idx, aidx, aval, body) \
|
|
||||||
GETSERVINFO(idx, si, { if(si->attr.inrange(aidx)) { int aval = si->attr[aidx]; body; } })
|
|
||||||
|
|
||||||
// client
|
// client
|
||||||
extern void sendclientpacket(ENetPacket *packet, int chan);
|
|
||||||
extern bool isconnected(bool attempt = false, bool local = true);
|
extern bool isconnected(bool attempt = false, bool local = true);
|
||||||
extern bool multiplayer(bool msg = true);
|
extern bool multiplayer(bool msg = true);
|
||||||
extern void neterr(const char *s, bool disc = true);
|
|
||||||
extern void gets2c();
|
|
||||||
extern void notifywelcome();
|
|
||||||
|
|
||||||
// crypto
|
|
||||||
extern void genprivkey(const char *seed, vector<char> &privstr, vector<char> &pubstr);
|
|
||||||
extern bool calcpubkey(const char *privstr, vector<char> &pubstr);
|
|
||||||
extern bool hashstring(const char *str, char *result, int maxlen);
|
|
||||||
extern void answerchallenge(const char *privstr, const char *challenge, vector<char> &answerstr);
|
|
||||||
extern void *parsepubkey(const char *pubstr);
|
|
||||||
extern void freepubkey(void *pubkey);
|
|
||||||
extern void *genchallenge(void *pubkey, const void *seed, int seedlen, vector<char> &challengestr);
|
|
||||||
extern void freechallenge(void *answer);
|
|
||||||
extern bool checkchallenge(const char *answerstr, void *correct);
|
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ namespace game
|
||||||
extern void parseoptions(vector<const char *> &args);
|
extern void parseoptions(vector<const char *> &args);
|
||||||
|
|
||||||
extern void gamedisconnect(bool cleanup);
|
extern void gamedisconnect(bool cleanup);
|
||||||
extern void parsepacketclient(int chan, packetbuf &p);
|
|
||||||
extern void connectfail();
|
extern void connectfail();
|
||||||
extern void gameconnect(bool _remote);
|
extern void gameconnect(bool _remote);
|
||||||
extern bool allowedittoggle();
|
extern bool allowedittoggle();
|
||||||
|
@ -90,27 +89,3 @@ namespace game
|
||||||
extern void dynlighttrack(physent *owner, vec &o, vec &hud);
|
extern void dynlighttrack(physent *owner, vec &o, vec &hud);
|
||||||
extern bool needminimap();
|
extern bool needminimap();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace server
|
|
||||||
{
|
|
||||||
extern void *newclientinfo();
|
|
||||||
extern void deleteclientinfo(void *ci);
|
|
||||||
extern void serverinit();
|
|
||||||
extern int reserveclients();
|
|
||||||
extern int numchannels();
|
|
||||||
extern void clientdisconnect(int n);
|
|
||||||
extern int clientconnect(int n, uint ip);
|
|
||||||
extern void localdisconnect(int n);
|
|
||||||
extern void localconnect(int n);
|
|
||||||
extern bool allowbroadcast(int n);
|
|
||||||
extern void parsepacket(int sender, int chan, packetbuf &p);
|
|
||||||
extern void sendservmsg(const char *s);
|
|
||||||
extern bool sendpackets(bool force = false);
|
|
||||||
extern void serverupdate();
|
|
||||||
extern int protocolversion();
|
|
||||||
extern int laninfoport();
|
|
||||||
extern int serverport();
|
|
||||||
extern bool ispaused();
|
|
||||||
extern int scaletime(int t);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,6 @@ static inline void putint_(T &p, int n)
|
||||||
else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); }
|
else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); }
|
||||||
}
|
}
|
||||||
void putint(ucharbuf &p, int n) { putint_(p, n); }
|
void putint(ucharbuf &p, int n) { putint_(p, n); }
|
||||||
void putint(packetbuf &p, int n) { putint_(p, n); }
|
|
||||||
void putint(vector<uchar> &p, int n) { putint_(p, n); }
|
void putint(vector<uchar> &p, int n) { putint_(p, n); }
|
||||||
|
|
||||||
int getint(ucharbuf &p)
|
int getint(ucharbuf &p)
|
||||||
|
@ -137,7 +136,6 @@ static inline void putuint_(T &p, int n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void putuint(ucharbuf &p, int n) { putuint_(p, n); }
|
void putuint(ucharbuf &p, int n) { putuint_(p, n); }
|
||||||
void putuint(packetbuf &p, int n) { putuint_(p, n); }
|
|
||||||
void putuint(vector<uchar> &p, int n) { putuint_(p, n); }
|
void putuint(vector<uchar> &p, int n) { putuint_(p, n); }
|
||||||
|
|
||||||
int getuint(ucharbuf &p)
|
int getuint(ucharbuf &p)
|
||||||
|
@ -160,7 +158,6 @@ static inline void putfloat_(T &p, float f)
|
||||||
p.put((uchar *)&f, sizeof(float));
|
p.put((uchar *)&f, sizeof(float));
|
||||||
}
|
}
|
||||||
void putfloat(ucharbuf &p, float f) { putfloat_(p, f); }
|
void putfloat(ucharbuf &p, float f) { putfloat_(p, f); }
|
||||||
void putfloat(packetbuf &p, float f) { putfloat_(p, f); }
|
|
||||||
void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); }
|
void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); }
|
||||||
|
|
||||||
float getfloat(ucharbuf &p)
|
float getfloat(ucharbuf &p)
|
||||||
|
@ -177,7 +174,6 @@ static inline void sendstring_(const char *t, T &p)
|
||||||
putint(p, 0);
|
putint(p, 0);
|
||||||
}
|
}
|
||||||
void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); }
|
void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); }
|
||||||
void sendstring(const char *t, packetbuf &p) { sendstring_(t, p); }
|
|
||||||
void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); }
|
void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); }
|
||||||
|
|
||||||
void getstring(char *text, ucharbuf &p, size_t len)
|
void getstring(char *text, ucharbuf &p, size_t len)
|
||||||
|
|
|
@ -9,52 +9,6 @@
|
||||||
|
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
||||||
typedef enum _ENetPacketFlag
|
|
||||||
{
|
|
||||||
ENET_PACKET_FLAG_RELIABLE = (1 << 0),
|
|
||||||
ENET_PACKET_FLAG_UNSEQUENCED = (1 << 1)
|
|
||||||
} ENetPacketFlag;
|
|
||||||
|
|
||||||
typedef struct _ENetPacket
|
|
||||||
{
|
|
||||||
int flags;
|
|
||||||
unsigned char *data;
|
|
||||||
size_t dataLength;
|
|
||||||
size_t referenceCount;
|
|
||||||
} ENetPacket;
|
|
||||||
|
|
||||||
inline ENetPacket *enet_packet_create(void const *data, size_t len, int flags) {
|
|
||||||
ENetPacket *ret = new ENetPacket;
|
|
||||||
if (!len) {
|
|
||||||
ret->data = nullptr;
|
|
||||||
} else {
|
|
||||||
ret->data = new unsigned char[len];
|
|
||||||
if (data) {
|
|
||||||
memcpy(ret->data, data, len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ret->referenceCount = 0;
|
|
||||||
ret->flags = flags;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void enet_packet_destroy(ENetPacket *p) {
|
|
||||||
delete[] p->data;
|
|
||||||
delete p;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int enet_packet_resize(ENetPacket *p, size_t len) {
|
|
||||||
if (len <= p->dataLength) {
|
|
||||||
p->dataLength = len;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
auto *nd = new unsigned char[len];
|
|
||||||
memcpy(nd, p->data, p->dataLength);
|
|
||||||
delete[] p->data;
|
|
||||||
p->data = nd;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef STANDALONE
|
#ifndef STANDALONE
|
||||||
#include "gl.hh"
|
#include "gl.hh"
|
||||||
#endif
|
#endif
|
||||||
|
@ -417,64 +371,6 @@ struct databuf
|
||||||
|
|
||||||
typedef databuf<uchar> ucharbuf;
|
typedef databuf<uchar> ucharbuf;
|
||||||
|
|
||||||
struct packetbuf : ucharbuf
|
|
||||||
{
|
|
||||||
ENetPacket *packet;
|
|
||||||
int growth;
|
|
||||||
|
|
||||||
packetbuf(ENetPacket *packet) : ucharbuf(packet->data, packet->dataLength), packet(packet), growth(0) {}
|
|
||||||
packetbuf(int growth, int pflags = 0) : growth(growth)
|
|
||||||
{
|
|
||||||
packet = enet_packet_create(NULL, growth, pflags);
|
|
||||||
buf = (uchar *)packet->data;
|
|
||||||
maxlen = packet->dataLength;
|
|
||||||
}
|
|
||||||
~packetbuf() { cleanup(); }
|
|
||||||
|
|
||||||
void reliable() { packet->flags |= ENET_PACKET_FLAG_RELIABLE; }
|
|
||||||
|
|
||||||
void resize(int n)
|
|
||||||
{
|
|
||||||
enet_packet_resize(packet, n);
|
|
||||||
buf = (uchar *)packet->data;
|
|
||||||
maxlen = packet->dataLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
void checkspace(int n)
|
|
||||||
{
|
|
||||||
if(len + n > maxlen && packet && growth > 0) resize(max(len + n, maxlen + growth));
|
|
||||||
}
|
|
||||||
|
|
||||||
ucharbuf subbuf(int sz)
|
|
||||||
{
|
|
||||||
checkspace(sz);
|
|
||||||
return ucharbuf::subbuf(sz);
|
|
||||||
}
|
|
||||||
|
|
||||||
void put(const uchar &val)
|
|
||||||
{
|
|
||||||
checkspace(1);
|
|
||||||
ucharbuf::put(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
void put(const uchar *vals, int numvals)
|
|
||||||
{
|
|
||||||
checkspace(numvals);
|
|
||||||
ucharbuf::put(vals, numvals);
|
|
||||||
}
|
|
||||||
|
|
||||||
ENetPacket *finalize()
|
|
||||||
{
|
|
||||||
resize(len);
|
|
||||||
return packet;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cleanup()
|
|
||||||
{
|
|
||||||
if(growth > 0 && packet && !packet->referenceCount) { enet_packet_destroy(packet); packet = NULL; buf = NULL; len = maxlen = 0; }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
static inline float heapscore(const T &n) { return n; }
|
static inline float heapscore(const T &n) { return n; }
|
||||||
|
|
||||||
|
@ -1433,19 +1329,15 @@ extern void seedMT(uint seed);
|
||||||
extern uint randomMT();
|
extern uint randomMT();
|
||||||
|
|
||||||
extern void putint(ucharbuf &p, int n);
|
extern void putint(ucharbuf &p, int n);
|
||||||
extern void putint(packetbuf &p, int n);
|
|
||||||
extern void putint(vector<uchar> &p, int n);
|
extern void putint(vector<uchar> &p, int n);
|
||||||
extern int getint(ucharbuf &p);
|
extern int getint(ucharbuf &p);
|
||||||
extern void putuint(ucharbuf &p, int n);
|
extern void putuint(ucharbuf &p, int n);
|
||||||
extern void putuint(packetbuf &p, int n);
|
|
||||||
extern void putuint(vector<uchar> &p, int n);
|
extern void putuint(vector<uchar> &p, int n);
|
||||||
extern int getuint(ucharbuf &p);
|
extern int getuint(ucharbuf &p);
|
||||||
extern void putfloat(ucharbuf &p, float f);
|
extern void putfloat(ucharbuf &p, float f);
|
||||||
extern void putfloat(packetbuf &p, float f);
|
|
||||||
extern void putfloat(vector<uchar> &p, float f);
|
extern void putfloat(vector<uchar> &p, float f);
|
||||||
extern float getfloat(ucharbuf &p);
|
extern float getfloat(ucharbuf &p);
|
||||||
extern void sendstring(const char *t, ucharbuf &p);
|
extern void sendstring(const char *t, ucharbuf &p);
|
||||||
extern void sendstring(const char *t, packetbuf &p);
|
|
||||||
extern void sendstring(const char *t, vector<uchar> &p);
|
extern void sendstring(const char *t, vector<uchar> &p);
|
||||||
extern void getstring(char *t, ucharbuf &p, size_t len);
|
extern void getstring(char *t, ucharbuf &p, size_t len);
|
||||||
template<size_t N> static inline void getstring(char (&t)[N], ucharbuf &p) { getstring(t, p, N); }
|
template<size_t N> static inline void getstring(char (&t)[N], ucharbuf &p) { getstring(t, p, N); }
|
||||||
|
|
Loading…
Reference in New Issue