[nexuiz-commits] r7347 - in trunk/data/qcsrc/menu: item nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Aug 5 09:29:56 EDT 2009


Author: div0
Date: 2009-08-05 09:29:56 -0400 (Wed, 05 Aug 2009)
New Revision: 7347

Modified:
   trunk/data/qcsrc/menu/item/textslider.c
   trunk/data/qcsrc/menu/nexuiz/slider_resolution.c
Log:
show only available resolutions


Modified: trunk/data/qcsrc/menu/item/textslider.c
===================================================================
--- trunk/data/qcsrc/menu/item/textslider.c	2009-08-05 11:40:03 UTC (rev 7346)
+++ trunk/data/qcsrc/menu/item/textslider.c	2009-08-05 13:29:56 UTC (rev 7347)
@@ -8,8 +8,8 @@
 	METHOD(TextSlider, getIdentifier, string(entity))
 	METHOD(TextSlider, addValue, void(entity, string, string))
 	METHOD(TextSlider, configureTextSliderValues, void(entity, string))
-	ATTRIBARRAY(TextSlider, valueStrings, string, 16)
-	ATTRIBARRAY(TextSlider, valueIdentifiers, string, 16)
+	ATTRIBARRAY(TextSlider, valueStrings, string, 256)
+	ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256)
 	ATTRIB(TextSlider, nValues, float, 0)
 ENDCLASS(TextSlider)
 #endif

Modified: trunk/data/qcsrc/menu/nexuiz/slider_resolution.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/slider_resolution.c	2009-08-05 11:40:03 UTC (rev 7346)
+++ trunk/data/qcsrc/menu/nexuiz/slider_resolution.c	2009-08-05 13:29:56 UTC (rev 7347)
@@ -18,28 +18,47 @@
 }
 void addResolutionNexuizResolutionSlider(entity me, float w, float h, float cw, float ch)
 {
+	float f;
+	f = max(cw / w, ch / h);
+	if(f > 1)
+	{
+		cw = rint(cw / f);
+		ch = rint(ch / f);
+	}
 	me.addValue(me, strzone(strcat(ftos(w), "x", ftos(h))), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(cw), " ", ftos(ch))));
 	// FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED
 }
 void configureNexuizResolutionSliderNexuizResolutionSlider(entity me)
 {
+	float i;
+	vector r0, r, c;
+
 	me.configureNexuizTextSlider(me, "vid_width");
-	me.addResolution(me, 640, 480, 640, 480);
-	me.addResolution(me, 800, 480, 800, 480);
-	me.addResolution(me, 800, 600, 800, 600);
-	me.addResolution(me, 1024, 600, 1024, 600);
-	me.addResolution(me, 1024, 768, 800, 600);
-	me.addResolution(me, 1152, 864, 800, 600);
-	me.addResolution(me, 1280, 800, 960, 600);
-	me.addResolution(me, 1280, 960, 800, 600);
-	me.addResolution(me, 1280, 1024, 800, 640);
-	me.addResolution(me, 1440, 900, 960, 600);
-	me.addResolution(me, 1600, 900, 960, 540);
-	me.addResolution(me, 1600, 1200, 800, 600);
-	me.addResolution(me, 1680, 1050, 960, 600);
-	me.addResolution(me, 1920, 1080, 960, 540);
-	me.addResolution(me, 1920, 1200, 960, 600);
-	me.addResolution(me, 2048, 1536, 800, 600);
+
+	c = '0 0 0';
+	r0 = '0 0 0';
+	for(i = 0;; ++i)
+	{
+		r = getresolution(i);
+		if(r_x == 0 && r_y == 0)
+			break;
+		if(r == r0)
+			continue;
+		r0 = r;
+		if(r_x < 640 || r_y < 400)
+			continue;
+		c_x = 800;
+		c_y = rint(c_x * r_y / r_x);
+		if(c_y >= 600)
+		{
+			me.addResolution(me, r_x, r_y, c_x, c_y);
+			continue;
+		}
+		c_y = 600;
+		c_x = rint(c_y * r_x / r_y);
+		me.addResolution(me, r_x, r_y, c_x, c_y);
+	}
+
 	me.configureNexuizTextSliderValues(me);
 }
 void loadCvarsNexuizResolutionSlider(entity me)



More information about the nexuiz-commits mailing list