]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
user (csqc) controllable wavefuncs
[xonotic/darkplaces.git] / prvm_edict.c
index 56171616d5c04cc5c73782f55de881813827323a..5a51babb23b0ea47a863fea652306cadb44a14c5 100644 (file)
@@ -1656,6 +1656,10 @@ void PRVM_FindOffsets(void)
        prog->fieldoffsets.movedir                        = PRVM_ED_FindFieldOffset("movedir");
 
        prog->fieldoffsets.camera_transform               = PRVM_ED_FindFieldOffset("camera_transform");
+       prog->fieldoffsets.userwavefunc_param0            = PRVM_ED_FindFieldOffset("userwavefunc_param0");
+       prog->fieldoffsets.userwavefunc_param1            = PRVM_ED_FindFieldOffset("userwavefunc_param1");
+       prog->fieldoffsets.userwavefunc_param2            = PRVM_ED_FindFieldOffset("userwavefunc_param2");
+       prog->fieldoffsets.userwavefunc_param3            = PRVM_ED_FindFieldOffset("userwavefunc_param3");
 
        prog->funcoffsets.CSQC_ConsoleCommand             = PRVM_ED_FindFunctionOffset("CSQC_ConsoleCommand");
        prog->funcoffsets.CSQC_Ent_Remove                 = PRVM_ED_FindFunctionOffset("CSQC_Ent_Remove");
@@ -1726,6 +1730,10 @@ void PRVM_FindOffsets(void)
        prog->globaloffsets.v_up                          = PRVM_ED_FindGlobalOffset("v_up");
        prog->globaloffsets.view_angles                   = PRVM_ED_FindGlobalOffset("view_angles");
        prog->globaloffsets.worldstatus                   = PRVM_ED_FindGlobalOffset("worldstatus");
+       prog->globaloffsets.particles_alphamin            = PRVM_ED_FindGlobalOffset("particles_alphamin");
+       prog->globaloffsets.particles_alphamax            = PRVM_ED_FindGlobalOffset("particles_alphamax");
+       prog->globaloffsets.particles_colormin            = PRVM_ED_FindGlobalOffset("particles_colormin");
+       prog->globaloffsets.particles_colormax            = PRVM_ED_FindGlobalOffset("particles_colormax");
 
        // menu qc only uses some functions, nothing else
        prog->funcoffsets.m_draw                          = PRVM_ED_FindFunctionOffset("m_draw");
@@ -2314,6 +2322,20 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
        // later idea: include a list of authorized .po file checksums with the csprogs
        {
                qboolean deftrans = !!strcmp(PRVM_NAME, "client");
+               if(deftrans) // once we have dotranslate_ strings, ALWAYS use the opt-in method!
+               {
+                       for (i=0 ; i<prog->progs->numglobaldefs ; i++)
+                       {
+                               const char *name;
+                               name = PRVM_GetString(prog->globaldefs[i].s_name);
+                               if((prog->globaldefs[i].type & ~DEF_SAVEGLOBAL) == ev_string)
+                               if(name && !strncmp(name, "dotranslate_", 12))
+                               {
+                                       deftrans = false;
+                                       break;
+                               }
+                       }
+               }
                if(!strcmp(prvm_language.string, "dump"))
                {
                        qfile_t *f = FS_OpenRealFile(va("%s.%s.po", filename, prvm_language.string), "w", false);
@@ -2324,8 +2346,8 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
                                {
                                        const char *name;
                                        name = PRVM_GetString(prog->globaldefs[i].s_name);
-                                       if(deftrans ? (!name || strncmp(name, "notranslate_", 12)) : (name && !strncmp(name, "dotranslate_", 12)))
                                        if((prog->globaldefs[i].type & ~DEF_SAVEGLOBAL) == ev_string)
+                                       if(deftrans ? (!name || strncmp(name, "notranslate_", 12)) : (name && !strncmp(name, "dotranslate_", 12)))
                                        {
                                                prvm_eval_t *val = (prvm_eval_t *)(prog->globals.generic + prog->globaldefs[i].ofs);
                                                const char *value = PRVM_GetString(val->string);