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
# define MAX_PROGS 64
# define MAXADDONS 16
2005-06-22 17:10:13 +00:00
# define NUM_SPAWN_PARMS 32 //moved from server.h because of include ordering :(.
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 ) ;
2004-09-13 03:18:15 +00:00
void ED_Spawned ( struct edict_s * ent ) ;
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
void PR_RunThreads ( void ) ;
# 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.
# include "progtype.h"
# include "progdefs.h"
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 int pr_edict_size ;
//extern progparms_t progparms;
//extern progsnum_t mainprogs;
# define MAX_ENT_LEAFS 16
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
2007-09-02 19:55:17 +00:00
# ifndef VM_Q1
stdentvars_t * v ;
# define xv v
# else
stdentvars_t * v ;
2005-03-28 00:11:59 +00:00
//the rest is free for adaption
2007-09-02 19:55:17 +00:00
extentvars_t * xv ;
# endif
2004-08-23 00:15:46 +00:00
link_t area ; // linked to a division node or leaf
int num_leafs ;
short leafnums [ MAX_ENT_LEAFS ] ;
int areanum ; //q2bsp
int areanum2 ; //q2bsp
int headnode ; //q2bsp
entity_state_t baseline ;
2007-12-23 20:28:40 +00:00
qbyte solidtype ; //relinks entities if their solidity changed
2004-08-23 00:15:46 +00:00
// 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 ;
# define EDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,edict_t,area)
# 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 ) ;
void Q1QVM_DropClient ( struct client_s * cl ) ;
void Q1QVM_ChainMoved ( void ) ;
void Q1QVM_EndFrame ( void ) ;
void Q1QVMED_ClearEdict ( edict_t * e , qboolean wipe ) ;
# endif