]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/dialog_settings_effects.c
minelayer model with placeholder texture
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_settings_effects.c
index fcb2b8ccfd7205cdd4156a890002b4a1f6a4d499..19b232f8ca504f2abffc9e454be90f6b72292e0f 100644 (file)
@@ -7,6 +7,7 @@ CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.5)
 ENDCLASS(XonoticEffectsSettingsTab)
 entity makeXonoticEffectsSettingsTab();
+float updateCompression();
 #endif
 
 #ifdef IMPLEMENTATION
@@ -29,6 +30,34 @@ float someShadowCvarIsEnabled(entity box)
        return FALSE;
 }
 
+float updateCompression()
+{
+       float fh;
+       float have_dds, have_jpg, have_tga;
+       if((have_dds = ((fh = fopen("dds/particles/particlefont.dds", FILE_READ)) >= 0)))
+               fclose(fh);
+       if((have_jpg = ((fh = fopen("particles/particlefont.jpg", FILE_READ)) >= 0)))
+               fclose(fh);
+       if((have_tga = ((fh = fopen("particles/particlefont.tga", FILE_READ)) >= 0)))
+               fclose(fh);
+       if(have_dds && (have_jpg || have_tga))
+       {
+               cvar_set("gl_texturecompression", "0");
+               return 1;
+       }
+       else if(have_dds)
+       {
+               cvar_set("gl_texturecompression", "0");
+               cvar_set("r_texture_dds_load", "1");
+               return 0;
+       }
+       else
+       {
+               cvar_set("gl_texturecompression", cvar_string("r_texture_dds_load"));
+               return 2;
+       }
+}
+
 void XonoticEffectsSettingsTab_fill(entity me)
 {
        entity e, s;
@@ -66,20 +95,35 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Texture quality:"));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_picmip"));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Texture resolution:"));
+               me.TD(me, 1, 2, e = makeXonoticPicmipSlider());
                        if(cvar("developer"))
                                e.addValue(e, "Leet", "1337");
-                       e.addValue(e, "Lowest", "4");
-                       e.addValue(e, "Low", "3");
-                       e.addValue(e, "Normal", "2");
-                       e.addValue(e, "Good", "1");
-                       e.addValue(e, "Best", "0");
+                       e.addValue(e, "Lowest", "2");
+                       e.addValue(e, "Low", "1");
+                       e.addValue(e, "Normal", "0");
+                       e.addValue(e, "Good", "-1");
+                       e.addValue(e, "Best", "-2");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_picmipworld", "Reduce model texture quality only"));
-                       setDependent(e, "gl_picmip", 0.5, -0.5);
+               {
+                       // detect texture compression method
+                       float f;
+                       f = updateCompression();
+                       switch(f)
+                       {
+                               case 0:
+                                       break;
+                               case 1:
+                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression"));
+                                       break;
+                               case 2:
+                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression"));
+                                               makeMulti(e, "gl_texturecompression");
+                                       break;
+                       }
+               }
        me.TR(me);
        me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Anisotropy:"));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));