From baef203819ad5490809712332340f6fddf3c9f56 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 13 Jan 2006 02:20:12 +0000 Subject: Signed integer read functions. Use these when reading ticcmd diffs. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 287 --- src/net_packet.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'src/net_packet.c') diff --git a/src/net_packet.c b/src/net_packet.c index 5144382a..14623b4e 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: net_packet.c 236 2006-01-01 23:51:41Z fraggle $ +// $Id: net_packet.c 287 2006-01-13 02:20:12Z fraggle $ // // Copyright(C) 2005 Simon Howard // @@ -21,6 +21,9 @@ // 02111-1307, USA. // // $Log$ +// Revision 1.3 2006/01/13 02:20:12 fraggle +// Signed integer read functions. Use these when reading ticcmd diffs. +// // Revision 1.2 2006/01/01 23:51:41 fraggle // String read/write functions // @@ -124,6 +127,59 @@ boolean NET_ReadInt32(net_packet_t *packet, unsigned int *data) return true; } +// Signed read functions + +boolean NET_ReadSInt8(net_packet_t *packet, signed int *data) +{ + if (NET_ReadInt8(packet,(unsigned int *) data)) + { + if (*data & (1 << 7)) + { + *data &= ~(1 << 7); + *data -= (1 << 7); + } + return true; + } + else + { + return false; + } +} + +boolean NET_ReadSInt16(net_packet_t *packet, signed int *data) +{ + if (NET_ReadInt16(packet, (unsigned int *) data)) + { + if (*data & (1 << 15)) + { + *data &= ~(1 << 15); + *data -= (1 << 15); + } + return true; + } + else + { + return false; + } +} + +boolean NET_ReadSInt32(net_packet_t *packet, signed int *data) +{ + if (NET_ReadInt32(packet, (unsigned int *) data)) + { + if (*data & (1 << 31)) + { + *data &= ~(1 << 31); + *data -= (1 << 31); + } + return true; + } + else + { + return false; + } +} + // Read a string from the packet. Returns NULL if a terminating // NUL character was not found before the end of the packet. -- cgit v1.2.3