]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
remove unused variable
[xonotic/darkplaces.git] / prvm_edict.c
index 6fe41fa02edde45843f2a97c8ec55597bbf2153f..3f54cbebe1ddfccb51cf56ed9a5b9a8774f6778f 100644 (file)
@@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 */
-// AK new vm 
+// AK new vm
 
 #include "quakedef.h"
 #include "progsvm.h"
@@ -54,19 +54,19 @@ void PRVM_MEM_Alloc()
        // reserve space for the null entity aka world
        // check bound of max_edicts
        prog->max_edicts = bound(1, prog->max_edicts, prog->limit_edicts);
-       prog->num_edicts = bound(1, prog->num_edicts, prog->max_edicts);        
+       prog->num_edicts = bound(1, prog->num_edicts, prog->max_edicts);
 
        // edictprivate_size has to be min as big prvm_edict_private_t
-       prog->edictprivate_size = max(prog->edictprivate_size,(int)sizeof(prvm_edict_private_t)); 
+       prog->edictprivate_size = max(prog->edictprivate_size,(int)sizeof(prvm_edict_private_t));
 
        // alloc edicts
-       prog->edicts = Mem_Alloc(prog->edicts_mempool,prog->limit_edicts * sizeof(prvm_edict_t));
-       
+       prog->edicts = Mem_Alloc(prog->progs_mempool,prog->limit_edicts * sizeof(prvm_edict_t));
+
        // alloc edict private space
-       prog->edictprivate = Mem_Alloc(prog->edicts_mempool, prog->max_edicts * prog->edictprivate_size);
-       
+       prog->edictprivate = Mem_Alloc(prog->progs_mempool, prog->max_edicts * prog->edictprivate_size);
+
        // alloc edict fields
-       prog->edictsfields = Mem_Alloc(prog->edicts_mempool, prog->max_edicts * prog->edict_size);
+       prog->edictsfields = Mem_Alloc(prog->progs_mempool, prog->max_edicts * prog->edict_size);
 
        // set edict pointers
        for(i = 0; i < prog->max_edicts; i++)
@@ -84,20 +84,20 @@ PRVM_MEM_IncreaseEdicts
 void PRVM_MEM_IncreaseEdicts()
 {
        int             i;
-       int             oldmaxedicts = prog->max_edicts; 
+       int             oldmaxedicts = prog->max_edicts;
        void    *oldedictsfields = prog->edictsfields;
        void    *oldedictprivate = prog->edictprivate;
-       
+
        if(prog->max_edicts >= prog->limit_edicts)
                return;
-       
+
        PRVM_GCALL(begin_increase_edicts)();
 
        // increase edicts
        prog->max_edicts = min(prog->max_edicts + 256, prog->limit_edicts);
 
-       prog->edictsfields = Mem_Alloc(prog->edicts_mempool, prog->max_edicts * prog->edict_size);
-       prog->edictprivate = Mem_Alloc(prog->edicts_mempool, prog->max_edicts * prog->edictprivate_size);
+       prog->edictsfields = Mem_Alloc(prog->progs_mempool, prog->max_edicts * prog->edict_size);
+       prog->edictprivate = Mem_Alloc(prog->progs_mempool, prog->max_edicts * prog->edictprivate_size);
 
        memcpy(prog->edictsfields, oldedictsfields, oldmaxedicts * prog->edict_size);
        memcpy(prog->edictprivate, oldedictprivate, oldmaxedicts * prog->edictprivate_size);
@@ -171,7 +171,7 @@ PRVM_SetProg
 void PRVM_SetProg(int prognr)
 {
        if(prognr && prognr < PRVM_MAXPROGS)
-       {       
+       {
                if(prog_list[prognr].loaded)
                        prog = &prog_list[prognr];
                else
@@ -197,7 +197,7 @@ void PRVM_ED_ClearEdict (prvm_edict_t *e)
        num = PRVM_NUM_FOR_EDICT(e) - 1;
 
        // AK: Let the init_edict function determine if something needs to be initialized
-       PRVM_GCALL(init_edict)(num);    
+       PRVM_GCALL(init_edict)(num);
 }
 
 /*
@@ -438,9 +438,9 @@ char *PRVM_UglyValueString (etype_t type, prvm_eval_t *val)
        char *s;
        ddef_t *def;
        mfunction_t *f;
-       
+
        type &= ~DEF_SAVEGLOBAL;
-       
+
        switch (type)
        {
        case ev_string:
@@ -467,7 +467,7 @@ char *PRVM_UglyValueString (etype_t type, prvm_eval_t *val)
                line[i] = '\0';
                break;
        case ev_entity:
-               snprintf (line, sizeof (line), "%i", PRVM_NUM_FOR_EDICT(PRVM_PROG_TO_EDICT(val->edict)));
+               dpsnprintf (line, sizeof (line), "%i", PRVM_NUM_FOR_EDICT(PRVM_PROG_TO_EDICT(val->edict)));
                break;
        case ev_function:
                f = pr_functions + val->function;
@@ -475,22 +475,22 @@ char *PRVM_UglyValueString (etype_t type, prvm_eval_t *val)
                break;
        case ev_field:
                def = PRVM_ED_FieldAtOfs ( val->_int );
-               snprintf (line, sizeof (line), ".%s", PRVM_GetString(def->s_name));
+               dpsnprintf (line, sizeof (line), ".%s", PRVM_GetString(def->s_name));
                break;
        case ev_void:
-               snprintf (line, sizeof (line), "void");
+               dpsnprintf (line, sizeof (line), "void");
                break;
        case ev_float:
-               snprintf (line, sizeof (line), "%f", val->_float);
+               dpsnprintf (line, sizeof (line), "%f", val->_float);
                break;
        case ev_vector:
-               snprintf (line, sizeof (line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
+               dpsnprintf (line, sizeof (line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
                break;
        default:
-               snprintf (line, sizeof (line), "bad type %i", type);
+               dpsnprintf (line, sizeof (line), "bad type %i", type);
                break;
        }
-       
+
        return line;
 }
 
@@ -694,7 +694,7 @@ void PRVM_ED_PrintEdicts_f (void)
                Con_Print("prvm_edicts <program name>\n");
                return;
        }
-       
+
        PRVM_Begin;
        if(!PRVM_SetProgFromString(Cmd_Argv(1)))
                return;
@@ -776,7 +776,7 @@ void PRVM_ED_Count_f (void)
                                continue;
                        active++;
                }
-               
+
                Con_Printf("num_edicts:%3i\n", prog->num_edicts);
                Con_Printf("active    :%3i\n", active);
        }
@@ -877,7 +877,7 @@ char *PRVM_ED_NewString (const char *string)
        int i,l;
 
        l = strlen(string) + 1;
-       new = Mem_Alloc(prog->edictstring_mempool, l);
+       new = Mem_Alloc(prog->progs_mempool, l);
        new_p = new;
 
        for (i=0 ; i< l ; i++)
@@ -915,7 +915,7 @@ qboolean PRVM_ED_ParseEpair(prvm_edict_t *ent, ddef_t *key, const char *s)
        if (ent)
                val = (prvm_eval_t *)((int *)ent->v + key->ofs);
        else
-               val = (prvm_eval_t *)((int *)pr_globals + key->ofs);
+               val = (prvm_eval_t *)((int *)prog->globals + key->ofs);
        switch (key->type & ~DEF_SAVEGLOBAL)
        {
        case ev_string:
@@ -965,7 +965,7 @@ qboolean PRVM_ED_ParseEpair(prvm_edict_t *ent, ddef_t *key, const char *s)
                        Con_DPrintf("PRVM_ED_ParseEpair: Can't find field %s in %s\n", s, PRVM_NAME);
                        return false;
                }
-               val->_int = PRVM_G_INT(def->ofs);
+               val->_int = def->ofs;
                break;
 
        case ev_function:
@@ -1013,12 +1013,9 @@ void PRVM_ED_EdictSet_f(void)
        ed = PRVM_EDICT_NUM(atoi(Cmd_Argv(2)));
 
        if((key = PRVM_ED_FindField(Cmd_Argv(3))) == 0)
-       {
                Con_Printf("Key %s not found !\n", Cmd_Argv(3));
-               return;
-       }
-
-       PRVM_ED_ParseEpair(ed, key, Cmd_Argv(4));
+       else
+               PRVM_ED_ParseEpair(ed, key, Cmd_Argv(4));
 
        PRVM_End;
 }
@@ -1151,9 +1148,9 @@ void PRVM_ED_LoadFromFile (const char *data)
                        PRVM_ERROR ("PRVM_ED_LoadFromFile: %s: found %s when expecting {", PRVM_NAME, com_token);
 
                // CHANGED: this is not conform to ED_LoadFromFile
-               if(!prog->num_edicts) 
+               if(!prog->num_edicts)
                        ent = PRVM_EDICT_NUM(0);
-               else 
+               else
                        ent = PRVM_ED_Alloc();
 
                // clear it
@@ -1184,10 +1181,10 @@ void PRVM_ED_LoadFromFile (const char *data)
                                PRVM_ED_Free (ent);
                                continue;
                        }
-                       
+
                        // look for the spawn function
                        func = PRVM_ED_FindFunction (PRVM_GetString(handle));
-                       
+
                        if (!func)
                        {
                                if (developer.integer) // don't confuse non-developers with errors
@@ -1198,19 +1195,19 @@ void PRVM_ED_LoadFromFile (const char *data)
                                PRVM_ED_Free (ent);
                                continue;
                        }
-                       
+
                        // self = ent
                        PRVM_G_INT(prog->self->ofs) = PRVM_EDICT_TO_PROG(ent);
                        PRVM_ExecuteProgram (func - prog->functions, "");
                }
-       
+
                spawned++;
                if (ent->p.e->free)
                        died++;
        }
 
        Con_DPrintf("%s: %i new entities parsed, %i new inhibited, %i (%i new) spawned (whereas %i removed self, %i stayed)\n", PRVM_NAME, parsed, inhibited, prog->num_edicts, spawned, died, spawned - died);
-}      
+}
 
 // not used
 /*
@@ -1236,26 +1233,18 @@ PRVM_ResetProg
 
 void PRVM_ResetProg()
 {
-       /*mempool_t *t1, *t2, *t3;
+       /*mempool_t *t1;
 
        t1 = prog->progs_mempool;
-       t2 = prog->edictstring_mempool;
-       t3 = prog->edicts_mempool;
-       
-       Mem_EmptyPool(prog->progs_mempool);
-       Mem_EmptyPool(prog->edictstring_mempool);
-       Mem_EmptyPool(prog->edicts_mempool);*/
+
+       Mem_EmptyPool(prog->progs_mempool);*/
        Mem_FreePool(&prog->progs_mempool);
-       Mem_FreePool(&prog->edictstring_mempool);
-       Mem_FreePool(&prog->edicts_mempool);
-       
+
        memset(prog,0,sizeof(prvm_prog_t));
-       
+
        /*prog->time = &prog->_time;
-       
-       prog->progs_mempool = t1;
-       prog->edictstring_mempool = t2;
-       prog->edicts_mempool = t3;*/
+
+       prog->progs_mempool = t1;*/
 
        PRVM_GCALL(reset_cmd)();
 }
@@ -1273,7 +1262,6 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
        dfunction_t *dfunctions;
 
        Mem_EmptyPool(prog->progs_mempool);
-       Mem_EmptyPool(prog->edictstring_mempool);
 
        prog->progs = (dprograms_t *)FS_LoadFile (filename, prog->progs_mempool, false);
        if (prog->progs == NULL)
@@ -1476,26 +1464,26 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
        PRVM_Init_Exec();
 
        prog->loaded = TRUE;
-       
+
        // set flags & ddef_ts in prog
-       
+
        prog->flag = 0;
-       
+
        prog->self = PRVM_ED_FindGlobal("self");
 
-       if(PRVM_ED_FindGlobal("time"))
+       if( PRVM_ED_FindGlobal("time") && PRVM_ED_FindGlobal("time")->type & ev_float )
                prog->time = &PRVM_G_FLOAT(PRVM_ED_FindGlobal("time")->ofs);
 
        if(PRVM_ED_FindField ("chain"))
                prog->flag |= PRVM_FE_CHAIN;
 
        if(PRVM_ED_FindField ("classname"))
-               prog->flag |= PRVM_FE_CLASSNAME; 
+               prog->flag |= PRVM_FE_CLASSNAME;
 
-       if(PRVM_ED_FindField ("nextthink") && PRVM_ED_FindField ("frame") && PRVM_ED_FindField ("think") 
-               && prog->flag && prog->self) 
+       if(PRVM_ED_FindField ("nextthink") && PRVM_ED_FindField ("frame") && PRVM_ED_FindField ("think")
+               && prog->flag && prog->self)
                prog->flag |= PRVM_OP_STATE;
-       
+
        PRVM_GCALL(reset_cmd)();
        PRVM_GCALL(init_cmd)();
 
@@ -1675,7 +1663,32 @@ void PRVM_Global_f(void)
        if( !global )
                Con_Printf( "No global '%s' in %s!\n", Cmd_Argv(2), Cmd_Argv(1) );
        else
-               Con_Printf( "%s: %s\n", Cmd_Argv(2), PRVM_ValueString( global->type, (prvm_eval_t *) &prog->globals[ global->ofs ] ) ); 
+               Con_Printf( "%s: %s\n", Cmd_Argv(2), PRVM_ValueString( global->type, (prvm_eval_t *) &prog->globals[ global->ofs ] ) );
+       PRVM_End;
+}
+
+/*
+===============
+PRVM_GlobalSet
+===============
+*/
+void PRVM_GlobalSet_f(void)
+{
+       ddef_t *global;
+       if( Cmd_Argc() != 4 ) {
+               Con_Printf( "prvm_globalset <program name> <global name> <value>\n" );
+               return;
+       }
+
+       PRVM_Begin;
+       if( !PRVM_SetProgFromString( Cmd_Argv(1) ) )
+               return;
+
+       global = PRVM_ED_FindGlobal( Cmd_Argv(2) );
+       if( !global )
+               Con_Printf( "No global '%s' in %s!\n", Cmd_Argv(2), Cmd_Argv(1) );
+       else
+               PRVM_ED_ParseEpair( NULL, global, Cmd_Argv(3) );
        PRVM_End;
 }
 
@@ -1693,6 +1706,7 @@ void PRVM_Init (void)
        Cmd_AddCommand ("prvm_fields", PRVM_Fields_f);
        Cmd_AddCommand ("prvm_globals", PRVM_Globals_f);
        Cmd_AddCommand ("prvm_global", PRVM_Global_f);
+       Cmd_AddCommand ("prvm_globalset", PRVM_GlobalSet_f);
        Cmd_AddCommand ("prvm_edictset", PRVM_ED_EdictSet_f);
        // LordHavoc: optional runtime bounds checking (speed drain, but worth it for security, on by default - breaks most QCCX features (used by CRMod and others))
        Cvar_RegisterVariable (&prvm_boundscheck);