reduce compact pos packet size by two more bit

This commit is contained in:
ac-stef
2017-06-27 15:15:25 +02:00
parent 94d0203bc6
commit 0b44cf1c9c
6 changed files with 14 additions and 9 deletions
+1 -2
View File
@@ -459,9 +459,8 @@ void c2sinfo(playerent *d) // send update to the server
dz >= -8 && dz <= 7)
{ // compact POS packet
bitbuf<packetbuf> b(q);
putint(q, SV_POSC);
putint(q, SV_POSC + usefactor - 7);
b.putbits(5, cn);
b.putbits(2, usefactor - 7);
b.putbits(usefactor + 4, x);
b.putbits(usefactor + 4, y);
b.putbits(YAWBITS, ya);
+5 -2
View File
@@ -115,14 +115,17 @@ void parsepositions(ucharbuf &p)
{
case SV_POS: // position of another client
case SV_POSC:
case SV_POSC2:
case SV_POSC3:
case SV_POSC4:
{
int cn, f, yaw, pitch, z;
vec o, vel;
if(type == SV_POSC)
if(type != SV_POS)
{
bitbuf<ucharbuf> q(p);
cn = q.getbits(5);
int usefactor = q.getbits(2) + 7;
int usefactor = type - SV_POSC + 7;
o.x = q.getbits(usefactor + 4) / DMF;
o.y = q.getbits(usefactor + 4) / DMF;
yaw = q.getbits(YAWBITS);
+1 -1
View File
@@ -580,7 +580,7 @@ float decodeyaw(int r)
static const int msgsizes[] = // size inclusive message token, 0 for variable or not-checked sizes
{
SV_SERVINFO, 1, SV_SERVINFO_RESPONSE, 0, SV_SERVINFO_CONTD, 0, SV_WELCOME, 2, SV_INITCLIENT, 0, SV_POS, 0, SV_POSC, 0, SV_POSN, 0,
SV_SERVINFO, 1, SV_SERVINFO_RESPONSE, 0, SV_SERVINFO_CONTD, 0, SV_WELCOME, 2, SV_INITCLIENT, 0, SV_POS, 0, SV_POSC, 0, SV_POSC2, 0, SV_POSC3, 0, SV_POSC4, 0, SV_POSN, 0,
SV_TEXT, 0, SV_TEAMTEXT, 0, SV_TEXTME, 0, SV_TEAMTEXTME, 0, SV_TEXTPRIVATE, 0,
SV_SOUND, 2, SV_VOICECOM, 2, SV_VOICECOMTEAM, 2, SV_CDIS, 2,
SV_SHOOT, 0, SV_EXPLODE, 0, SV_SUICIDE, 1, SV_AKIMBO, 2, SV_RELOAD, 3, SV_AUTHT, 0, SV_AUTHREQ, 0, SV_AUTHTRY, 0, SV_AUTHANS, 0, SV_AUTHCHAL, 0,
+1 -1
View File
@@ -26,7 +26,7 @@ extern bool modprotocol;
// network messages codes, c2s, c2c, s2c
enum
{
SV_SERVINFO = 0, SV_SERVINFO_RESPONSE, SV_SERVINFO_CONTD, SV_WELCOME, SV_INITCLIENT, SV_POS, SV_POSC, SV_POSN, SV_TEXT, SV_TEAMTEXT, SV_TEXTME, SV_TEAMTEXTME, SV_TEXTPRIVATE,
SV_SERVINFO = 0, SV_SERVINFO_RESPONSE, SV_SERVINFO_CONTD, SV_WELCOME, SV_INITCLIENT, SV_POS, SV_POSC, SV_POSC2, SV_POSC3, SV_POSC4, SV_POSN, SV_TEXT, SV_TEAMTEXT, SV_TEXTME, SV_TEAMTEXTME, SV_TEXTPRIVATE,
SV_SOUND, SV_VOICECOM, SV_VOICECOMTEAM, SV_CDIS,
SV_SHOOT, SV_EXPLODE, SV_SUICIDE, SV_AKIMBO, SV_RELOAD, SV_AUTHT, SV_AUTHREQ, SV_AUTHTRY, SV_AUTHANS, SV_AUTHCHAL,
SV_GIBDIED, SV_DIED, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_THROWNADE,
+5 -2
View File
@@ -3377,7 +3377,7 @@ void process(ENetPacket *packet, int sender, int chan)
type = checktype(getint(p), cl);
#ifdef _DEBUG
if(type!=SV_POS && type!=SV_POSC && type!=SV_CLIENTPING && type!=SV_PING && type!=SV_CLIENT)
if(type!=SV_POS && type!=SV_POSC && type!=SV_POSC2 && type!=SV_POSC3 && type!=SV_POSC4 && type!=SV_CLIENTPING && type!=SV_PING && type!=SV_CLIENT)
{
DEBUGVAR(cl->name);
if(type >= 0) { DEBUGVAR(messagenames[type]); }
@@ -3847,6 +3847,9 @@ void process(ENetPacket *packet, int sender, int chan)
}
case SV_POSC:
case SV_POSC2:
case SV_POSC3:
case SV_POSC4:
{
bitbuf<ucharbuf> q(p);
int cn = q.getbits(5);
@@ -3858,7 +3861,7 @@ void process(ENetPacket *packet, int sender, int chan)
#endif
return;
}
int usefactor = q.getbits(2) + 7;
int usefactor = type - SV_POSC + 7;
int xt = q.getbits(usefactor + 4);
int yt = q.getbits(usefactor + 4);
cl->yaw = (int)decodeyaw(q.getbits(YAWBITS));
+1 -1
View File
@@ -455,7 +455,7 @@ const char *modeinfologfilename = NULL;
const char *messagenames[SV_NUM] =
{
"SV_SERVINFO", "SV_SERVINFO_RESPONSE", "SV_SERVINFO_CONTD", "SV_WELCOME", "SV_INITCLIENT", "SV_POS", "SV_POSC", "SV_POSN",
"SV_SERVINFO", "SV_SERVINFO_RESPONSE", "SV_SERVINFO_CONTD", "SV_WELCOME", "SV_INITCLIENT", "SV_POS", "SV_POSC", "SV_POSC2", "SV_POSC3", "SV_POSC4", "SV_POSN",
"SV_TEXT", "SV_TEAMTEXT", "SV_TEXTME", "SV_TEAMTEXTME", "SV_TEXTPRIVATE",
"SV_SOUND", "SV_VOICECOM", "SV_VOICECOMTEAM", "SV_CDIS",
"SV_SHOOT", "SV_EXPLODE", "SV_SUICIDE", "SV_AKIMBO", "SV_RELOAD", "SV_AUTHT", "SV_AUTHREQ", "SV_AUTHTRY", "SV_AUTHANS", "SV_AUTHCHAL",