2004-08-23 00:15:46 +00:00
/*
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 .
*/
# define QCLIB //as opposed to standard qc stuff. One or other. All references+changes were by DMW unless specified otherwise. Starting 1/10/02
2009-11-04 21:16:50 +00:00
struct client_s ;
struct edict_s ;
2004-08-23 00:15:46 +00:00
# define MAX_PROGS 64
# define MAXADDONS 16
2009-11-05 03:07:52 +00:00
# define NUM_SPAWN_PARMS 64 //moved from server.h because of include ordering :(.
2005-06-22 17:10:13 +00:00
2011-05-20 04:10:46 +00:00
void SVQ1_CvarChanged ( cvar_t * var ) ;
2004-08-23 00:15:46 +00:00
# define NewGetEdictFieldValue GetEdictFieldValue
void Q_SetProgsParms ( qboolean forcompiler ) ;
void PR_Deinit ( void ) ;
void PR_LoadGlabalStruct ( void ) ;
void Q_InitProgs ( void ) ;
void PR_RegisterFields ( void ) ;
void PR_Init ( void ) ;
2008-06-01 22:06:22 +00:00
void ED_Spawned ( struct edict_s * ent , int loading ) ;
2009-11-04 21:16:50 +00:00
qboolean SV_RunFullQCMovement ( struct client_s * client , usercmd_t * ucmd ) ;
2004-12-15 19:58:07 +00:00
qboolean PR_KrimzonParseCommand ( char * s ) ;
2004-08-23 00:15:46 +00:00
qboolean PR_UserCmd ( char * cmd ) ;
2004-09-08 05:08:44 +00:00
qboolean PR_ConsoleCmd ( void ) ;
2004-08-23 00:15:46 +00:00
2010-12-18 17:02:47 +00:00
void PRSV_RunThreads ( void ) ;
2004-08-23 00:15:46 +00:00
# define PR_MAINPROGS 0 //this is a constant that should really be phased out. But seeing as QCLIB requires some sort of master progs due to extern funcs...
//maybe go through looking for extern funcs, and remember which were not allocated. It would then be a first come gets priority. Not too bad I supppose.
extern int compileactive ;
2005-05-08 17:01:48 +00:00
typedef enum { PROG_NONE , PROG_QW , PROG_NQ , PROG_H2 , PROG_PREREL , PROG_UNKNOWN } progstype_t ; //unknown obtains NQ behaviour
2004-08-23 00:15:46 +00:00
extern progstype_t progstype ;
//extern globalvars_t *glob0;
//extern progparms_t progparms;
//extern progsnum_t mainprogs;
typedef struct edict_s
{
2005-03-28 00:11:59 +00:00
//these 5 shared with qclib
2004-08-23 00:15:46 +00:00
qboolean isfree ;
float freetime ; // sv.time when the object was freed
int entnum ;
qboolean readonly ; //world
2009-11-04 21:16:50 +00:00
# ifdef VM_Q1
stdentvars_t * v ;
2007-09-02 19:55:17 +00:00
extentvars_t * xv ;
2009-11-04 21:16:50 +00:00
# else
union {
stdentvars_t * v ;
stdentvars_t * xv ;
} ;
2007-09-02 19:55:17 +00:00
# endif
2009-11-04 21:16:50 +00:00
/*qc lib doesn't care about the rest*/
2004-08-23 00:15:46 +00:00
2009-11-04 21:16:50 +00:00
/*these are shared with csqc*/
link_t area ;
2004-08-23 00:15:46 +00:00
int num_leafs ;
short leafnums [ MAX_ENT_LEAFS ] ;
2009-11-04 21:16:50 +00:00
# ifdef Q2BSPS
int areanum ;
int areanum2 ;
int headnode ;
# endif
# ifdef USEODE
entityode_t ode ;
# endif
qbyte solidtype ;
/*csqc doesn't reference the rest*/
2004-08-23 00:15:46 +00:00
entity_state_t baseline ;
// other fields from progs come immediately after
} edict_t ;
# include "progslib.h"
# undef pr_global_struct
//#define pr_nqglobal_struct *((nqglobalvars_t*)pr_globals)
# define pr_global_struct *pr_nqglobal_struct
2005-06-22 17:10:13 +00:00
float * spawnparamglobals [ NUM_SPAWN_PARMS ] ;
2004-08-23 00:15:46 +00:00
extern nqglobalvars_t * pr_nqglobal_struct ;
extern progfuncs_t * svprogfuncs ; //instance
extern progparms_t svprogparms ;
extern progsnum_t svmainprogs ;
extern progsnum_t clmainprogs ;
2009-03-03 01:52:30 +00:00
# define HLEDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,hledict_t,area)
2004-08-23 00:15:46 +00:00
# define Q2EDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,q2edict_t,area)
2005-08-26 22:56:51 +00:00
# define Q3EDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,q3serverEntity_t,area)
2004-08-23 00:15:46 +00:00
extern func_t SpectatorConnect ;
extern func_t SpectatorThink ;
extern func_t SpectatorDisconnect ;
extern func_t SV_PlayerPhysicsQC ;
extern func_t EndFrameQC ;
qboolean PR_QCChat ( char * text , int say_type ) ;
2004-08-31 23:54:54 +00:00
void PR_ClientUserInfoChanged ( char * name , char * oldivalue , char * newvalue ) ;
void PR_LocalInfoChanged ( char * name , char * oldivalue , char * newvalue ) ;
2006-01-28 02:35:40 +00:00
void PF_InitTempStrings ( progfuncs_t * prinst ) ;
2007-09-03 22:37:13 +00:00
# ifdef VM_Q1
struct client_s ;
void Q1QVM_Shutdown ( void ) ;
qboolean PR_LoadQ1QVM ( void ) ;
void Q1QVM_ClientConnect ( struct client_s * cl ) ;
qboolean Q1QVM_GameConsoleCommand ( void ) ;
qboolean Q1QVM_ClientSay ( edict_t * player , qboolean team ) ;
qboolean Q1QVM_UserInfoChanged ( edict_t * player ) ;
void Q1QVM_PlayerPreThink ( void ) ;
void Q1QVM_RunPlayerThink ( void ) ;
void Q1QVM_PostThink ( void ) ;
void Q1QVM_StartFrame ( void ) ;
void Q1QVM_Touch ( void ) ;
void Q1QVM_Think ( void ) ;
void Q1QVM_Blocked ( void ) ;
void Q1QVM_SetNewParms ( void ) ;
void Q1QVM_SetChangeParms ( void ) ;
void Q1QVM_ClientCommand ( void ) ;
2009-07-14 23:42:54 +00:00
void Q1QVM_GameCodePausedTic ( float pausedduration ) ;
2007-09-03 22:37:13 +00:00
void Q1QVM_DropClient ( struct client_s * cl ) ;
void Q1QVM_ChainMoved ( void ) ;
void Q1QVM_EndFrame ( void ) ;
void Q1QVMED_ClearEdict ( edict_t * e , qboolean wipe ) ;
# endif