mirror of
https://git.code.sf.net/p/quake/newtree
synced 2025-02-02 04:32:24 +00:00
now progs and server really are separated :)
This commit is contained in:
parent
0192ed40c3
commit
5e86c729fa
4 changed files with 37 additions and 31 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue