From 5e86c729fafc569b3792144efb81ca7269534fdd Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 3 Jan 2001 07:08:28 +0000 Subject: [PATCH] now progs and server really are separated :) --- include/progs.h | 6 +++--- include/server.h | 2 -- source/pr_edict.c | 28 ++++++++++------------------ source/sv_progs.c | 32 ++++++++++++++++++++++++-------- 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/include/progs.h b/include/progs.h index 686ea5a..a850b40 100644 --- a/include/progs.h +++ b/include/progs.h @@ -138,9 +138,6 @@ void PR_RunError (struct progs_s *pr, char *error, ...) __attribute__((format(pr void ED_PrintEdicts (struct progs_s *pr); void ED_PrintNum (struct progs_s *pr, int ent); void ED_Count (struct progs_s *pr); -void ED_PrintEdict_f (void); -void ED_PrintEdicts_f (void); -void ED_Count_f (void); void PR_Profile (struct progs_s *pr); eval_t *GetEdictFieldValue(struct progs_s *pr, edict_t *ed, char *field); @@ -201,6 +198,9 @@ typedef struct progs_s { int null_bad; int crc; + + void (*unlink)(edict_t *ent); + void (*flush)(void); } progs_t; #endif // _PROGS_H diff --git a/include/server.h b/include/server.h index 525b696..66d168c 100644 --- a/include/server.h +++ b/include/server.h @@ -380,8 +380,6 @@ extern cvar_t *deathmatch; extern cvar_t *fraglimit; extern cvar_t *timelimit; -extern cvar_t *r_skyname; - extern server_static_t svs; // persistant server info extern server_t sv; // local server diff --git a/source/pr_edict.c b/source/pr_edict.c index 381acf5..e9e40f1 100644 --- a/source/pr_edict.c +++ b/source/pr_edict.c @@ -119,7 +119,8 @@ ED_Alloc (progs_t *pr) Con_Printf ("WARNING: ED_Alloc: no free edicts\n"); i--; // step on whatever is the last edict e = EDICT_NUM (pr, i); - SV_UnlinkEdict (e); + if (pr->unlink) + pr->unlink (e); } else (*(pr)->num_edicts)++; e = EDICT_NUM (pr, i); @@ -137,7 +138,8 @@ ED_Alloc (progs_t *pr) void ED_Free (progs_t *pr, edict_t *ed) { - SV_UnlinkEdict (ed); // unlink from world bsp + if (pr->unlink) + pr->unlink (ed); // unlink from world bsp ed->free = true; ed->v.model = 0; @@ -903,7 +905,8 @@ ED_LoadFromFile (progs_t *pr, char *data) pr->pr_global_struct->self = EDICT_TO_PROG (pr, ent); PR_ExecuteProgram (pr, func - pr->pr_functions); - SV_FlushSignon (); + if (pr->flush) + pr->flush (); } Con_DPrintf ("%i entities inhibited\n", inhibit); @@ -1117,29 +1120,18 @@ PR_LoadProgs (progs_t *pr) // list } -/* - PR_Init -*/ -void -PR_Init (void) -{ - Cmd_AddCommand ("edict", ED_PrintEdict_f); - Cmd_AddCommand ("edicts", ED_PrintEdicts_f); - Cmd_AddCommand ("edictcount", ED_Count_f); - Cmd_AddCommand ("profile", PR_Profile_f); -} - void PR_Init_Cvars (void) { - r_skyname = - Cvar_Get ("r_skyname", "", CVAR_SERVERINFO, "name of skybox"); pr_boundscheck = Cvar_Get ("pr_boundscheck", "1", CVAR_NONE, "Server progs bounds checking"); } - +void +PR_Init (void) +{ +} edict_t * EDICT_NUM (progs_t *pr, int n) diff --git a/source/sv_progs.c b/source/sv_progs.c index eccc205..a83c4d4 100644 --- a/source/sv_progs.c +++ b/source/sv_progs.c @@ -40,9 +40,11 @@ #include "cmd.h" #include "progs.h" #include "server.h" +#include "world.h" int eval_alpha, eval_scale, eval_glowsize, eval_glowcolor, eval_colormod; progs_t sv_progs; +cvar_t *r_skyname; func_t EndFrame; func_t SpectatorConnect; @@ -78,14 +80,6 @@ FindEdictFieldOffsets (progs_t *pr) } } -void -SV_Progs_Init (void) -{ - sv_progs.edicts = &sv.edicts; - sv_progs.num_edicts = &sv.num_edicts; - sv_progs.time = &sv.time; -} - void ED_PrintEdicts_f (void) { @@ -137,3 +131,25 @@ ED_Parse_Extra_Fields (progs_t *pr, char *key, char *value) } return 0; } + +void +SV_Progs_Init (void) +{ + sv_progs.edicts = &sv.edicts; + sv_progs.num_edicts = &sv.num_edicts; + sv_progs.time = &sv.time; + sv_progs.unlink = SV_UnlinkEdict; + sv_progs.flush = SV_FlushSignon; + + Cmd_AddCommand ("edict", ED_PrintEdict_f); + Cmd_AddCommand ("edicts", ED_PrintEdicts_f); + Cmd_AddCommand ("edictcount", ED_Count_f); + Cmd_AddCommand ("profile", PR_Profile_f); +} + +void +SV_Progs_Init_Cvars (void) +{ + r_skyname = + Cvar_Get ("r_skyname", "", CVAR_SERVERINFO, "name of skybox"); +}