]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - clvm_cmds.c
Refactor game/mod cvar defaults
[xonotic/darkplaces.git] / clvm_cmds.c
index 78039744ace4d58cc1b23f6f70428e592c29f60d..96551b920f5cdb98becf83af75bb26c89d2dda05 100644 (file)
@@ -976,9 +976,27 @@ static void VM_CL_R_SetView (prvm_prog_t *prog)
                        VM_Warning(prog, "VM_CL_R_GetView : unknown parm %i\n", c);
                        return;
                }
+               if (csqc_lowres.integer)
+               {
+                       switch(c)
+                       {
+                               case VF_MIN: case VF_MIN_X: case VF_MIN_Y: case VF_SIZE: case VF_SIZE_X: case VF_SIZE_Y: case VF_VIEWPORT:
+                                       VectorScale(PRVM_G_VECTOR(OFS_RETURN), vid_conwidth.value / vid.mode.width, PRVM_G_VECTOR(OFS_RETURN));
+                       }
+               }
                return;
        }
 
+       if (csqc_lowres.integer)
+       {
+               float scale = vid.mode.width / vid_conwidth.value;
+               switch(c)
+               {
+                       case VF_MIN: case VF_MIN_X: case VF_MIN_Y: case VF_SIZE: case VF_SIZE_X: case VF_SIZE_Y: case VF_VIEWPORT:
+                               VectorScale(PRVM_G_VECTOR(OFS_PARM1), scale, PRVM_G_VECTOR(OFS_PARM1));
+                               VectorScale(PRVM_G_VECTOR(OFS_PARM2), scale, PRVM_G_VECTOR(OFS_PARM2));
+               }
+       }
        f = PRVM_G_VECTOR(OFS_PARM1);
        k = PRVM_G_FLOAT(OFS_PARM1);
        switch(c)
@@ -2017,6 +2035,7 @@ static void VM_CL_getstatf (prvm_prog_t *prog)
        i = (int)PRVM_G_FLOAT(OFS_PARM0);
        if(i < 0 || i >= MAX_CL_STATS)
        {
+               PRVM_G_FLOAT(OFS_RETURN) = 0;
                VM_Warning(prog, "VM_CL_getstatf: index>=MAX_CL_STATS or index<0\n");
                return;
        }
@@ -2027,12 +2046,18 @@ static void VM_CL_getstatf (prvm_prog_t *prog)
 //#331 float(float stnum) getstati (EXT_CSQC)
 static void VM_CL_getstati (prvm_prog_t *prog)
 {
-       int i, index;
-       int firstbit, bitcount;
+       int index, firstbit, bitcount;
 
        VM_SAFEPARMCOUNTRANGE(1, 3, VM_CL_getstati);
 
        index = (int)PRVM_G_FLOAT(OFS_PARM0);
+       if(index < 0 || index >= MAX_CL_STATS)
+       {
+               PRVM_G_FLOAT(OFS_RETURN) = 0;
+               VM_Warning(prog, "VM_CL_getstati: index>=MAX_CL_STATS or index<0\n");
+               return;
+       }
+
        if (prog->argc > 1)
        {
                firstbit = (int)PRVM_G_FLOAT(OFS_PARM1);
@@ -2047,15 +2072,10 @@ static void VM_CL_getstati (prvm_prog_t *prog)
                bitcount = 32;
        }
 
-       if(index < 0 || index >= MAX_CL_STATS)
-       {
-               VM_Warning(prog, "VM_CL_getstati: index>=MAX_CL_STATS or index<0\n");
-               return;
-       }
-       i = cl.stats[index];
-       if (bitcount != 32)     //32 causes the mask to overflow, so there's nothing to subtract from.
-               i = (((unsigned int)i)&(((1<<bitcount)-1)<<firstbit))>>firstbit;
-       PRVM_G_FLOAT(OFS_RETURN) = i;
+       if (bitcount < 32)      //32 causes the mask to overflow, so there's nothing to subtract from.
+               PRVM_G_FLOAT(OFS_RETURN) = cl.stats[index]>>firstbit & ((1<<bitcount)-1);
+       else
+               PRVM_G_FLOAT(OFS_RETURN) = cl.stats[index];
 }
 
 //#332 string(float firststnum) getstats (EXT_CSQC)
@@ -2256,9 +2276,9 @@ static void VM_CL_getmousepos(prvm_prog_t *prog)
        if (key_consoleactive || key_dest != key_game)
                VectorSet(PRVM_G_VECTOR(OFS_RETURN), 0, 0, 0);
        else if (cl.csqc_wantsmousemove)
-               VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_windowmouse_x * vid_conwidth.integer / vid.width, in_windowmouse_y * vid_conheight.integer / vid.height, 0);
+               VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_windowmouse_x * vid_conwidth.integer / vid.mode.width, in_windowmouse_y * vid_conheight.integer / vid.mode.height, 0);
        else
-               VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.width, in_mouse_y * vid_conheight.integer / vid.height, 0);
+               VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.mode.width, in_mouse_y * vid_conheight.integer / vid.mode.height, 0);
 }
 
 //#345 float(float framenum) getinputstate (EXT_CSQC)
@@ -2393,6 +2413,7 @@ static void VM_CL_getplayerkey (prvm_prog_t *prog)
                return;
 
        t[0] = 0;
+       t_len = 0;
 
        if(!strcasecmp(c, "name"))
                t_len = dp_strlcpy(t, cl.scores[i].name, sizeof(t));
@@ -2448,49 +2469,49 @@ static void VM_CL_registercmd (prvm_prog_t *prog)
        Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
 }
 
-//#360 float() readbyte (EXT_CSQC)
+//#360 float() ReadByte (EXT_CSQC)
 static void VM_CL_ReadByte (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadByte);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadByte(&cl_message);
 }
 
-//#361 float() readchar (EXT_CSQC)
+//#361 float() ReadChar (EXT_CSQC)
 static void VM_CL_ReadChar (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadChar);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadChar(&cl_message);
 }
 
-//#362 float() readshort (EXT_CSQC)
+//#362 float() ReadShort (EXT_CSQC)
 static void VM_CL_ReadShort (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadShort);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadShort(&cl_message);
 }
 
-//#363 float() readlong (EXT_CSQC)
+//#363 float() ReadLong (EXT_CSQC)
 static void VM_CL_ReadLong (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadLong);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadLong(&cl_message);
 }
 
-//#364 float() readcoord (EXT_CSQC)
+//#364 float() ReadCoord (EXT_CSQC)
 static void VM_CL_ReadCoord (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadCoord);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadCoord(&cl_message, cls.protocol);
 }
 
-//#365 float() readangle (EXT_CSQC)
+//#365 float() ReadAngle (EXT_CSQC)
 static void VM_CL_ReadAngle (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadAngle);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadAngle(&cl_message, cls.protocol);
 }
 
-//#366 string() readstring (EXT_CSQC)
+//#366 string() ReadString (EXT_CSQC)
 static void VM_CL_ReadString (prvm_prog_t *prog)
 {
        size_t cl_readstring_len;
@@ -2500,14 +2521,14 @@ static void VM_CL_ReadString (prvm_prog_t *prog)
        PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cl_readstring, cl_readstring_len);
 }
 
-//#367 float() readfloat (EXT_CSQC)
+//#367 float() ReadFloat (EXT_CSQC)
 static void VM_CL_ReadFloat (prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_CL_ReadFloat);
        PRVM_G_FLOAT(OFS_RETURN) = MSG_ReadFloat(&cl_message);
 }
 
-//#501 string() readpicture (DP_CSQC_READWRITEPICTURE)
+//#501 string() ReadPicture (DP_CSQC_READWRITEPICTURE)
 extern cvar_t cl_readpicture_force;
 static void VM_CL_ReadPicture (prvm_prog_t *prog)
 {
@@ -4524,8 +4545,7 @@ static void VM_CL_checkpvs (prvm_prog_t *prog)
 #if 1
        unsigned char *pvs;
 #else
-       int fatpvsbytes;
-       unsigned char fatpvs[MAX_MAP_LEAFS/8];
+       unsigned char *fatpvs = NULL;
 #endif
 
        VM_SAFEPARMCOUNT(2, VM_CL_checkpvs);
@@ -4565,8 +4585,8 @@ static void VM_CL_checkpvs (prvm_prog_t *prog)
                PRVM_G_FLOAT(OFS_RETURN) = 3;
                return;
        }
-       fatpvsbytes = cl.worldmodel->brush.FatPVS(cl.worldmodel, viewpos, 8, fatpvs, sizeof(fatpvs), false);
-       if(!fatpvsbytes)
+       cl.worldmodel->brush.FatPVS(cl.worldmodel, viewpos, 8, &fatpvs, cls.levelmempool, false);
+       if(!fatpvs)
        {
                // viewpos isn't in any PVS... darn
                PRVM_G_FLOAT(OFS_RETURN) = 2;
@@ -5027,7 +5047,7 @@ NULL,                                                     // #42 (QUAKE)
 VM_fabs,                                               // #43 float(float f) fabs (QUAKE)
 NULL,                                                  // #44 vector(entity e, float speed) aim (QUAKE)
 VM_cvar,                                               // #45 float(string s) cvar (QUAKE)
-VM_localcmd_local,                             // #46 void(string s) localcmd (QUAKE)
+VM_localcmd,                                   // #46 void(string s) localcmd (QUAKE)
 VM_nextent,                                            // #47 entity(entity e) nextent (QUAKE)
 VM_CL_particle,                                        // #48 void(vector o, vector d, float color, float count) particle (QUAKE)
 VM_changeyaw,                                  // #49 void() ChangeYaw (QUAKE)
@@ -5344,14 +5364,14 @@ VM_findfont,                                    // #356 float(string fontname) loadfont (DP_GFX_FONTS)
 VM_loadfont,                                   // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS)
 VM_CL_loadcubemap,                             // #358 void(string cubemapname) loadcubemap (DP_GFX_)
 NULL,                                                  // #359
-VM_CL_ReadByte,                                        // #360 float() readbyte (EXT_CSQC)
-VM_CL_ReadChar,                                        // #361 float() readchar (EXT_CSQC)
-VM_CL_ReadShort,                               // #362 float() readshort (EXT_CSQC)
-VM_CL_ReadLong,                                        // #363 float() readlong (EXT_CSQC)
-VM_CL_ReadCoord,                               // #364 float() readcoord (EXT_CSQC)
-VM_CL_ReadAngle,                               // #365 float() readangle (EXT_CSQC)
-VM_CL_ReadString,                              // #366 string() readstring (EXT_CSQC)
-VM_CL_ReadFloat,                               // #367 float() readfloat (EXT_CSQC)
+VM_CL_ReadByte,                                        // #360 float() ReadByte (EXT_CSQC)
+VM_CL_ReadChar,                                        // #361 float() ReadChar (EXT_CSQC)
+VM_CL_ReadShort,                               // #362 float() ReadShort (EXT_CSQC)
+VM_CL_ReadLong,                                        // #363 float() ReadLong (EXT_CSQC)
+VM_CL_ReadCoord,                               // #364 float() ReadCoord (EXT_CSQC)
+VM_CL_ReadAngle,                               // #365 float() ReadAngle (EXT_CSQC)
+VM_CL_ReadString,                              // #366 string() ReadString (EXT_CSQC)
+VM_CL_ReadFloat,                               // #367 float() ReadFloat (EXT_CSQC)
 NULL,                                          // #368
 NULL,                                                  // #369
 NULL,                                                  // #370