From 21416b0b9459754ea31b4e8f299702162d436369 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 8 Feb 2000 22:25:15 +0000 Subject: [PATCH] qw_common/pmove.h: add #include "net.h" uquake/Makefile.in: put cl_ents.c back it. might as well make a commitment :) merge qw_common/protocol.h and uquake/protocol.h into common/protocol.h --- {qw_common => common}/protocol.h | 350 ++++++++++++++++++------------- qw_common/pmove.h | 1 + uquake/Makefile.in | 2 +- uquake/protocol.h | 172 --------------- 4 files changed, 211 insertions(+), 314 deletions(-) rename {qw_common => common}/protocol.h (72%) delete mode 100644 uquake/protocol.h diff --git a/qw_common/protocol.h b/common/protocol.h similarity index 72% rename from qw_common/protocol.h rename to common/protocol.h index 9183c64..0aff9f0 100644 --- a/qw_common/protocol.h +++ b/common/protocol.h @@ -1,8 +1,6 @@ /* -protocol.h - communications protocols +protocol.h - communications protocol (quake1) Copyright (C) 1996-1997 Id Software, Inc. -Copyright (C) 1999,2000 contributors of the QuakeForge project -Please see the file "AUTHORS" for a list of contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -21,11 +19,60 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef _PROTOCOL_H -#define _PROTOCOL_H +#ifndef __protocol_h +#define __protocol_h -#include -#include +#ifdef UQUAKE +#define PROTOCOL_VERSION 15 + +// if the high bit of the servercmd is set, the low bits are fast update flags: +#define U_MOREBITS (1<<0) +#define U_ORIGIN1 (1<<1) +#define U_ORIGIN2 (1<<2) +#define U_ORIGIN3 (1<<3) +#define U_ANGLE2 (1<<4) +#define U_NOLERP (1<<5) // don't interpolate movement +#define U_FRAME (1<<6) +#define U_SIGNAL (1<<7) // just differentiates from other updates + +// svc_update can pass all of the fast update bits, plus more +#define U_ANGLE1 (1<<8) +#define U_ANGLE3 (1<<9) +#define U_MODEL (1<<10) +#define U_COLORMAP (1<<11) +#define U_SKIN (1<<12) +#define U_EFFECTS (1<<13) +#define U_LONGENTITY (1<<14) + + +#define SU_VIEWHEIGHT (1<<0) +#define SU_IDEALPITCH (1<<1) +#define SU_PUNCH1 (1<<2) +#define SU_PUNCH2 (1<<3) +#define SU_PUNCH3 (1<<4) +#define SU_VELOCITY1 (1<<5) +#define SU_VELOCITY2 (1<<6) +#define SU_VELOCITY3 (1<<7) +//define SU_AIMENT (1<<8) AVAILABLE BIT +#define SU_ITEMS (1<<9) +#define SU_ONGROUND (1<<10) // no data follows, the bit is it +#define SU_INWATER (1<<11) // no data follows, the bit is it +#define SU_WEAPONFRAME (1<<12) +#define SU_ARMOR (1<<13) +#define SU_WEAPON (1<<14) + +// a sound with no channel is a local only sound +#define SND_VOLUME (1<<0) // a byte +#define SND_ATTENUATION (1<<1) // a byte +#define SND_LOOPING (1<<2) // a long + + +// defaults for clientinfo messages +#define DEFAULT_VIEWHEIGHT 22 + +#endif // UQUAKE + +#ifdef QUAKEWORLD #define PROTOCOL_VERSION 28 @@ -57,138 +104,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define A2C_CLIENT_COMMAND 'B' // + command line #define S2M_SHUTDOWN 'C' -// game types sent by serverinfo -// these determine which intermission screen plays -#define GAME_COOP 0 -#define GAME_DEATHMATCH 1 - -//================== -// note that there are some defs.qc that mirror to these numbers -// also related to svc_strings[] in cl_parse -//================== - -// -// server to client -// -#define svc_bad 0 -#define svc_nop 1 -#define svc_disconnect 2 -#define svc_updatestat 3 // [byte] [byte] -//define svc_version 4 // [long] server version -#define svc_setview 5 // [short] entity number -#define svc_sound 6 // -//define svc_time 7 // [float] server time -#define svc_print 8 // [byte] id [string] null terminated string -#define svc_stufftext 9 // [string] stuffed into client's console buffer - // the string should be \n terminated -#define svc_setangle 10 // [angle3] set the view angle to this absolute value - -#define svc_serverdata 11 // [long] protocol ... -#define svc_lightstyle 12 // [byte] [string] -//define svc_updatename 13 // [byte] [string] -#define svc_updatefrags 14 // [byte] [short] -//define svc_clientdata 15 // -#define svc_stopsound 16 // -//define svc_updatecolors 17 // [byte] [byte] [byte] -//define svc_particle 18 // [vec3] -#define svc_damage 19 - -#define svc_spawnstatic 20 -// svc_spawnbinary 21 -#define svc_spawnbaseline 22 - -#define svc_temp_entity 23 // variable -#define svc_setpause 24 // [byte] on / off -// svc_signonnum 25 // [byte] used for the signon sequence - -#define svc_centerprint 26 // [string] to put in center of the screen - -#define svc_killedmonster 27 -#define svc_foundsecret 28 - -#define svc_spawnstaticsound 29 // [coord3] [byte] samp [byte] vol [byte] aten - -#define svc_intermission 30 // [vec3_t] origin [vec3_t] angle -#define svc_finale 31 // [string] text - -#define svc_cdtrack 32 // [byte] track -#define svc_sellscreen 33 - -#define svc_smallkick 34 // set client punchangle to 2 -#define svc_bigkick 35 // set client punchangle to 4 - -#define svc_updateping 36 // [byte] [short] -#define svc_updateentertime 37 // [byte] [float] - -#define svc_updatestatlong 38 // [byte] [long] - -#define svc_muzzleflash 39 // [short] entity - -#define svc_updateuserinfo 40 // [byte] slot [long] uid - // [string] userinfo - -#define svc_download 41 // [short] size [size bytes] -#define svc_playerinfo 42 // variable -#define svc_nails 43 // [byte] num [48 bits] xyzpy 12 12 12 4 8 -#define svc_chokecount 44 // [byte] packets choked -#define svc_modellist 45 // [strings] -#define svc_soundlist 46 // [strings] -#define svc_packetentities 47 // [...] -#define svc_deltapacketentities 48 // [...] -#define svc_maxspeed 49 // maxspeed change, for prediction -#define svc_entgravity 50 // gravity change, for prediction -#define svc_setinfo 51 // setinfo on a client -#define svc_serverinfo 52 // serverinfo -#define svc_updatepl 53 // [byte] [byte] - - -//============================================== - -// -// client to server -// -#define clc_bad 0 -#define clc_nop 1 -//define clc_doublemove 2 -#define clc_move 3 // [[usercmd_t] -#define clc_stringcmd 4 // [string] message -#define clc_delta 5 // [byte] sequence number, requests delta compression of message -#define clc_tmove 6 // teleport request, spectator only -#define clc_upload 7 // teleport request, spectator only - - -//============================================== - -// playerinfo flags from server -// playerinfo allways sends: playernum, flags, origin[] and framenumber - -#define PF_MSEC (1<<0) -#define PF_COMMAND (1<<1) -#define PF_VELOCITY1 (1<<2) -#define PF_VELOCITY2 (1<<3) -#define PF_VELOCITY3 (1<<4) -#define PF_MODEL (1<<5) -#define PF_SKINNUM (1<<6) -#define PF_EFFECTS (1<<7) -#define PF_WEAPONFRAME (1<<8) // only sent for view player -#define PF_DEAD (1<<9) // don't block movement any more -#define PF_GIB (1<<10) // offset the view height differently -#define PF_NOGRAV (1<<11) // don't apply gravity for prediction - -//============================================== - -// if the high bit of the client to server byte is set, the low bits are -// client move cmd bits -// ms and angle2 are allways sent, the others are optional -#define CM_ANGLE1 (1<<0) -#define CM_ANGLE3 (1<<1) -#define CM_FORWARD (1<<2) -#define CM_SIDE (1<<3) -#define CM_UP (1<<4) -#define CM_BUTTONS (1<<5) -#define CM_IMPULSE (1<<6) -#define CM_ANGLE2 (1<<7) - //============================================== // the first 16 bits of a packetentities update holds 9 bits @@ -226,6 +141,149 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define PRINT_HIGH 2 #define PRINT_CHAT 3 // also go to chat buffer +#endif // QUAKEWORLD + +// game types sent by serverinfo +// these determine which intermission screen plays +#define GAME_COOP 0 +#define GAME_DEATHMATCH 1 + + +//================== +// note that there are some defs.qc that mirror to these numbers +// also related to svc_strings[] in cl_parse +//================== + +// +// server to client +// +#define svc_bad 0 +#define svc_nop 1 +#define svc_disconnect 2 +#define svc_updatestat 3 // [byte] [long] +#define svc_version 4 // [long] server version +#define svc_setview 5 // [short] entity number +#define svc_sound 6 // +#define svc_time 7 // [float] server time +#define svc_print 8 // [string] null terminated string +#define svc_stufftext 9 // [string] stuffed into client's console buffer + // the string should be \n terminated +#define svc_setangle 10 // [angle3] set the view angle to this absolute value +#ifdef UQUAKE +#define svc_serverinfo 11 // [long] version + // [string] signon string + // [string]..[0]model cache + // [string]...[0]sounds cache +#else +#define svc_serverdata 11 // [long] protocol ... +#endif +#define svc_lightstyle 12 // [byte] [string] +#define svc_updatename 13 // [byte] [string] +#define svc_updatefrags 14 // [byte] [short] +#define svc_clientdata 15 // +#define svc_stopsound 16 // +#define svc_updatecolors 17 // [byte] [byte] +#define svc_particle 18 // [vec3] +#define svc_damage 19 + +#define svc_spawnstatic 20 +// svc_spawnbinary 21 +#define svc_spawnbaseline 22 + +#define svc_temp_entity 23 + +#define svc_setpause 24 // [byte] on / off +#define svc_signonnum 25 // [byte] used for the signon sequence + +#define svc_centerprint 26 // [string] to put in center of the screen + +#define svc_killedmonster 27 +#define svc_foundsecret 28 + +#define svc_spawnstaticsound 29 // [coord3] [byte] samp [byte] vol [byte] aten + +#define svc_intermission 30 // [string] music +#define svc_finale 31 // [string] music [string] text + +#define svc_cdtrack 32 // [byte] track [byte] looptrack +#define svc_sellscreen 33 + + +#define svc_cutscene 34 +// QUAKEWORLD +#define svc_smallkick 34 // set client punchangle to 2 +#define svc_bigkick 35 // set client punchangle to 4 + +#define svc_updateping 36 // [byte] [short] +#define svc_updateentertime 37 // [byte] [float] + +#define svc_updatestatlong 38 // [byte] [long] + +#define svc_muzzleflash 39 // [short] entity + +#define svc_updateuserinfo 40 // [byte] slot [long] uid + // [string] userinfo + +#define svc_download 41 // [short] size [size bytes] +#define svc_playerinfo 42 // variable +#define svc_nails 43 // [byte] num [48 bits] xyzpy 12 12 12 4 8 +#define svc_chokecount 44 // [byte] packets choked +#define svc_modellist 45 // [strings] +#define svc_soundlist 46 // [strings] +#define svc_packetentities 47 // [...] +#define svc_deltapacketentities 48 // [...] +#define svc_maxspeed 49 // maxspeed change, for prediction +#define svc_entgravity 50 // gravity change, for prediction +#define svc_setinfo 51 // setinfo on a client +#ifdef QUAKEWORLD +#define svc_serverinfo 52 // serverinfo +#endif +#define svc_updatepl 53 // [byte] [byte] + +// +// client to server +// +#define clc_bad 0 +#define clc_nop 1 +#define clc_disconnect 2 +#define clc_move 3 // [usercmd_t] +#define clc_stringcmd 4 // [string] message +#define clc_delta 5 // [byte] sequence number, requests delta compression of message +#define clc_tmove 6 // teleport request, spectator only +#define clc_upload 7 // teleport request, spectator only + +//============================================== + +// playerinfo flags from server +// playerinfo allways sends: playernum, flags, origin[] and framenumber + +#define PF_MSEC (1<<0) +#define PF_COMMAND (1<<1) +#define PF_VELOCITY1 (1<<2) +#define PF_VELOCITY2 (1<<3) +#define PF_VELOCITY3 (1<<4) +#define PF_MODEL (1<<5) +#define PF_SKINNUM (1<<6) +#define PF_EFFECTS (1<<7) +#define PF_WEAPONFRAME (1<<8) // only sent for view player +#define PF_DEAD (1<<9) // don't block movement any more +#define PF_GIB (1<<10) // offset the view height differently +#define PF_NOGRAV (1<<11) // don't apply gravity for prediction + +//============================================== + +// if the high bit of the client to server byte is set, the low bits are +// client move cmd bits +// ms and angle2 are allways sent, the others are optional +#define CM_ANGLE1 (1<<0) +#define CM_ANGLE3 (1<<1) +#define CM_FORWARD (1<<2) +#define CM_SIDE (1<<3) +#define CM_UP (1<<4) +#define CM_BUTTONS (1<<5) +#define CM_IMPULSE (1<<6) +#define CM_ANGLE2 (1<<7) + // // temp entity events // @@ -241,10 +299,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define TE_LIGHTNING3 9 #define TE_LAVASPLASH 10 #define TE_TELEPORT 11 +#define TE_EXPLOSION2 12 + +// PGM 01/21/97 +#define TE_BEAM 13 +// PGM 01/21/97 + +#ifdef QUAKE2 +#define TE_IMPLOSION 14 +#define TE_RAILTRAIL 15 +#endif +// QUAKEWORLD #define TE_BLOOD 12 #define TE_LIGHTNINGBLOOD 13 - /* ========================================================== @@ -259,4 +327,4 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // must be power of two #define UPDATE_MASK (UPDATE_BACKUP-1) -#endif // _PROTOCOL_H +#endif diff --git a/qw_common/pmove.h b/qw_common/pmove.h index a5754ae..59a73cd 100644 --- a/qw_common/pmove.h +++ b/qw_common/pmove.h @@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "pmove_simple.h" #include "model.h" +#include "net.h" #include "protocol.h" typedef struct diff --git a/uquake/Makefile.in b/uquake/Makefile.in index cad4fba..aa4b08e 100644 --- a/uquake/Makefile.in +++ b/uquake/Makefile.in @@ -175,7 +175,7 @@ SW_REND_SRC = screen.c $(SWREND_SRC_PLAT) draw.c \ # Client source files -CL_SRC = cl_demo.c cl_input.c cl_main.c cl_parse.c cl_tent.c +CL_SRC = cl_demo.c cl_input.c cl_main.c cl_parse.c cl_tent.c cl_ents.c CL_GUI_SRC= console.c sbar.c view.c keys.c menu.c # Server source files diff --git a/uquake/protocol.h b/uquake/protocol.h deleted file mode 100644 index 788bed4..0000000 --- a/uquake/protocol.h +++ /dev/null @@ -1,172 +0,0 @@ -/* -protocol.h - communications protocol (quake1) -Copyright (C) 1996-1997 Id Software, Inc. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#ifndef __PROTOCOL_H -#define __PROTOCOL_H - -#define PROTOCOL_VERSION 15 - -// if the high bit of the servercmd is set, the low bits are fast update flags: -#define U_MOREBITS (1<<0) -#define U_ORIGIN1 (1<<1) -#define U_ORIGIN2 (1<<2) -#define U_ORIGIN3 (1<<3) -#define U_ANGLE2 (1<<4) -#define U_NOLERP (1<<5) // don't interpolate movement -#define U_FRAME (1<<6) -#define U_SIGNAL (1<<7) // just differentiates from other updates - -// svc_update can pass all of the fast update bits, plus more -#define U_ANGLE1 (1<<8) -#define U_ANGLE3 (1<<9) -#define U_MODEL (1<<10) -#define U_COLORMAP (1<<11) -#define U_SKIN (1<<12) -#define U_EFFECTS (1<<13) -#define U_LONGENTITY (1<<14) - - -#define SU_VIEWHEIGHT (1<<0) -#define SU_IDEALPITCH (1<<1) -#define SU_PUNCH1 (1<<2) -#define SU_PUNCH2 (1<<3) -#define SU_PUNCH3 (1<<4) -#define SU_VELOCITY1 (1<<5) -#define SU_VELOCITY2 (1<<6) -#define SU_VELOCITY3 (1<<7) -//define SU_AIMENT (1<<8) AVAILABLE BIT -#define SU_ITEMS (1<<9) -#define SU_ONGROUND (1<<10) // no data follows, the bit is it -#define SU_INWATER (1<<11) // no data follows, the bit is it -#define SU_WEAPONFRAME (1<<12) -#define SU_ARMOR (1<<13) -#define SU_WEAPON (1<<14) - -// a sound with no channel is a local only sound -#define SND_VOLUME (1<<0) // a byte -#define SND_ATTENUATION (1<<1) // a byte -#define SND_LOOPING (1<<2) // a long - - -// defaults for clientinfo messages -#define DEFAULT_VIEWHEIGHT 22 - - -// game types sent by serverinfo -// these determine which intermission screen plays -#define GAME_COOP 0 -#define GAME_DEATHMATCH 1 - -//================== -// note that there are some defs.qc that mirror to these numbers -// also related to svc_strings[] in cl_parse -//================== - -// -// server to client -// -#define svc_bad 0 -#define svc_nop 1 -#define svc_disconnect 2 -#define svc_updatestat 3 // [byte] [long] -#define svc_version 4 // [long] server version -#define svc_setview 5 // [short] entity number -#define svc_sound 6 // -#define svc_time 7 // [float] server time -#define svc_print 8 // [string] null terminated string -#define svc_stufftext 9 // [string] stuffed into client's console buffer - // the string should be \n terminated -#define svc_setangle 10 // [angle3] set the view angle to this absolute value - -#define svc_serverinfo 11 // [long] version - // [string] signon string - // [string]..[0]model cache - // [string]...[0]sounds cache -#define svc_lightstyle 12 // [byte] [string] -#define svc_updatename 13 // [byte] [string] -#define svc_updatefrags 14 // [byte] [short] -#define svc_clientdata 15 // -#define svc_stopsound 16 // -#define svc_updatecolors 17 // [byte] [byte] -#define svc_particle 18 // [vec3] -#define svc_damage 19 - -#define svc_spawnstatic 20 -// svc_spawnbinary 21 -#define svc_spawnbaseline 22 - -#define svc_temp_entity 23 - -#define svc_setpause 24 // [byte] on / off -#define svc_signonnum 25 // [byte] used for the signon sequence - -#define svc_centerprint 26 // [string] to put in center of the screen - -#define svc_killedmonster 27 -#define svc_foundsecret 28 - -#define svc_spawnstaticsound 29 // [coord3] [byte] samp [byte] vol [byte] aten - -#define svc_intermission 30 // [string] music -#define svc_finale 31 // [string] music [string] text - -#define svc_cdtrack 32 // [byte] track [byte] looptrack -#define svc_sellscreen 33 - -#define svc_cutscene 34 - -// -// client to server -// -#define clc_bad 0 -#define clc_nop 1 -#define clc_disconnect 2 -#define clc_move 3 // [usercmd_t] -#define clc_stringcmd 4 // [string] message - - -// -// temp entity events -// -#define TE_SPIKE 0 -#define TE_SUPERSPIKE 1 -#define TE_GUNSHOT 2 -#define TE_EXPLOSION 3 -#define TE_TAREXPLOSION 4 -#define TE_LIGHTNING1 5 -#define TE_LIGHTNING2 6 -#define TE_WIZSPIKE 7 -#define TE_KNIGHTSPIKE 8 -#define TE_LIGHTNING3 9 -#define TE_LAVASPLASH 10 -#define TE_TELEPORT 11 -#define TE_EXPLOSION2 12 - -// PGM 01/21/97 -#define TE_BEAM 13 -// PGM 01/21/97 - -#ifdef QUAKE2 -#define TE_IMPLOSION 14 -#define TE_RAILTRAIL 15 -#endif - -#endif // __PROTOCOL_H