summaryrefslogtreecommitdiff
path: root/source/q_msg.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2008-01-13 02:35:32 +0000
committerAndrey Nazarov <skuller@skuller.net>2008-01-13 02:35:32 +0000
commit8c44753f1294c3ad4fbf64c8c3b390d06cdc99d9 (patch)
tree6f9655701256d79cd33914c23be03b64ca261af6 /source/q_msg.c
parenta0db25a7e12f83e46787f09eca5ec9e4a3de640a (diff)
New minor Q2PRO protocol version, 1012.
Save up to 6 bits on each usercmd vector component. Measure frame duration more accurately in CL_UpdateCmd.
Diffstat (limited to 'source/q_msg.c')
-rw-r--r--source/q_msg.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/source/q_msg.c b/source/q_msg.c
index 85d1733..36b9c42 100644
--- a/source/q_msg.c
+++ b/source/q_msg.c
@@ -345,9 +345,10 @@ MSG_WriteDeltaUsercmd_Enhanced
=============
*/
int MSG_WriteDeltaUsercmd_Enhanced( const usercmd_t *from,
- const usercmd_t *cmd )
+ const usercmd_t *cmd,
+ int version )
{
- int bits, delta;
+ int bits, delta, count;
if( !from ) {
from = &nullUserCmd;
@@ -406,15 +407,21 @@ int MSG_WriteDeltaUsercmd_Enhanced( const usercmd_t *from,
MSG_WriteBits( cmd->angles[2], -16 );
}
- if( bits & CM_FORWARD ) {
- MSG_WriteBits( cmd->forwardmove, -16 );
- }
- if( bits & CM_SIDE ) {
- MSG_WriteBits( cmd->sidemove, -16 );
- }
- if( bits & CM_UP ) {
- MSG_WriteBits( cmd->upmove, -16 );
- }
+ if( version >= PROTOCOL_VERSION_Q2PRO_UCMD ) {
+ count = -10;
+ } else {
+ count = -16;
+ }
+
+ if( bits & CM_FORWARD ) {
+ MSG_WriteBits( cmd->forwardmove, count );
+ }
+ if( bits & CM_SIDE ) {
+ MSG_WriteBits( cmd->sidemove, count );
+ }
+ if( bits & CM_UP ) {
+ MSG_WriteBits( cmd->upmove, count );
+ }
if( bits & CM_BUTTONS ) {
int buttons = ( cmd->buttons & 3 ) | ( cmd->buttons >> 5 );
@@ -1770,9 +1777,10 @@ int MSG_ReadBits( int bits ) {
}
void MSG_ReadDeltaUsercmd_Enhanced( const usercmd_t *from,
- usercmd_t *to )
+ usercmd_t *to,
+ int version )
{
- int bits;
+ int bits, count;
if( from ) {
memcpy( to, from, sizeof( *to ) );
@@ -1804,16 +1812,22 @@ void MSG_ReadDeltaUsercmd_Enhanced( const usercmd_t *from,
if( bits & CM_ANGLE3 ) {
to->angles[2] = MSG_ReadBits( -16 );
}
-
+
// read movement
+ if( version >= PROTOCOL_VERSION_Q2PRO_UCMD ) {
+ count = -10;
+ } else {
+ count = -16;
+ }
+
if( bits & CM_FORWARD ) {
- to->forwardmove = MSG_ReadBits( -16 );
+ to->forwardmove = MSG_ReadBits( count );
}
if( bits & CM_SIDE ) {
- to->sidemove = MSG_ReadBits( -16 );
+ to->sidemove = MSG_ReadBits( count );
}
if( bits & CM_UP ) {
- to->upmove = MSG_ReadBits( -16 );
+ to->upmove = MSG_ReadBits( count );
}
// read buttons