r2887 - in trunk/data/qcsrc/menu-div0test: . item nexuiz oo
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Nov 2 05:23:11 EDT 2007
Author: div0
Date: 2007-11-02 05:23:10 -0400 (Fri, 02 Nov 2007)
New Revision: 2887
Added:
trunk/data/qcsrc/menu-div0test/basecheckbox_d0.tga
trunk/data/qcsrc/menu-div0test/basecheckbox_d1.tga
trunk/data/qcsrc/menu-div0test/baseradiobutton_d0.tga
trunk/data/qcsrc/menu-div0test/baseradiobutton_d1.tga
trunk/data/qcsrc/menu-div0test/baseslider_d.tga
trunk/data/qcsrc/menu-div0test/item/textslider.c
trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c
Removed:
trunk/data/qcsrc/menu-div0test/nexuiz/slider_picmip.c
Modified:
trunk/data/qcsrc/menu-div0test/classes.c
trunk/data/qcsrc/menu-div0test/gamecommand.qc
trunk/data/qcsrc/menu-div0test/item/checkbox.c
trunk/data/qcsrc/menu-div0test/item/label.c
trunk/data/qcsrc/menu-div0test/item/slider.c
trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_effects.c
trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_video.c
trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
trunk/data/qcsrc/menu-div0test/nexuiz/slider.c
trunk/data/qcsrc/menu-div0test/nexuiz/slider_resolution.c
trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c
trunk/data/qcsrc/menu-div0test/nexuiz/util.qc
trunk/data/qcsrc/menu-div0test/nexuiz/util.qh
trunk/data/qcsrc/menu-div0test/oo/classdefs.h
trunk/data/qcsrc/menu-div0test/oo/constructors.h
trunk/data/qcsrc/menu-div0test/oo/implementation.h
trunk/data/qcsrc/menu-div0test/skin.qh
Log:
video and effects pane almost done
Added: trunk/data/qcsrc/menu-div0test/basecheckbox_d0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/qcsrc/menu-div0test/basecheckbox_d0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/qcsrc/menu-div0test/basecheckbox_d1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/qcsrc/menu-div0test/basecheckbox_d1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/qcsrc/menu-div0test/baseradiobutton_d0.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/qcsrc/menu-div0test/baseradiobutton_d0.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/qcsrc/menu-div0test/baseradiobutton_d1.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/qcsrc/menu-div0test/baseradiobutton_d1.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/qcsrc/menu-div0test/baseslider_d.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/qcsrc/menu-div0test/baseslider_d.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/data/qcsrc/menu-div0test/classes.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/classes.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/classes.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -12,6 +12,7 @@
#include "item/slider.c"
#include "item/dialog.c"
#include "item/tab.c"
+#include "item/textslider.c"
#include "nexuiz/dialog.c"
#include "nexuiz/tab.c"
#include "nexuiz/mainwindow.c"
@@ -27,6 +28,6 @@
#include "nexuiz/slider_resolution.c"
#include "nexuiz/checkbox.c"
#include "nexuiz/radiobutton.c"
-#include "nexuiz/slider_picmip.c"
#include "nexuiz/nexposee.c"
#include "nexuiz/rootdialog.c"
+#include "nexuiz/textslider.c"
Modified: trunk/data/qcsrc/menu-div0test/gamecommand.qc
===================================================================
--- trunk/data/qcsrc/menu-div0test/gamecommand.qc 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/gamecommand.qc 2007-11-02 09:23:10 UTC (rev 2887)
@@ -50,7 +50,7 @@
if(argv(0) == "sync")
{
- // make changes in cvars known to the system
+ loadAllCvars(main);
return;
}
Modified: trunk/data/qcsrc/menu-div0test/item/checkbox.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/checkbox.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/item/checkbox.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -9,6 +9,7 @@
ATTRIB(CheckBox, checked, float, 0)
ATTRIB(CheckBox, onClick, void(entity, entity), CheckBox_Click)
ATTRIB(CheckBox, srcMulti, float, 0)
+ ATTRIB(CheckBox, disabled, float, 0)
ENDCLASS(CheckBox)
#endif
@@ -35,16 +36,26 @@
me.keepspaceLeft = min(0.8, absSize_y / absSize_x);
resizeNotifyButton(me, relOrigin, relSize, absOrigin, absSize);
}
+void showNotifyCheckBox(entity me)
+{
+ me.focusable = !me.disabled;
+}
void drawCheckBox(entity me)
{
vector cbOrigin;
vector cbSize;
+ me.focusable = !me.disabled;
+ if(me.disabled)
+ draw_alpha *= 0.5;
+
cbOrigin = eY * (0.5 * (1 - me.realFontSize_y)) + eX * (0.5 * (me.keepspaceLeft - me.realFontSize_x));
cbSize = me.realFontSize;
if(me.checked)
{
- if(me.forcePressed || me.pressed || me.clickTime > 0)
+ if(me.disabled)
+ draw_Picture(cbOrigin, strcat(me.src, "_d1"), cbSize, '1 1 1', 1);
+ else if(me.forcePressed || me.pressed || me.clickTime > 0)
draw_Picture(cbOrigin, strcat(me.src, "_c1"), cbSize, '1 1 1', 1);
else if(me.focused)
draw_Picture(cbOrigin, strcat(me.src, "_f1"), cbSize, '1 1 1', 1);
@@ -53,7 +64,9 @@
}
else
{
- if(me.forcePressed || me.pressed || me.clickTime > 0)
+ if(me.disabled)
+ draw_Picture(cbOrigin, strcat(me.src, "_d0"), cbSize, '1 1 1', 1);
+ else if(me.forcePressed || me.pressed || me.clickTime > 0)
draw_Picture(cbOrigin, strcat(me.src, "_c0"), cbSize, '1 1 1', 1);
else if(me.focused)
draw_Picture(cbOrigin, strcat(me.src, "_f0"), cbSize, '1 1 1', 1);
Modified: trunk/data/qcsrc/menu-div0test/item/label.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/label.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/item/label.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -24,7 +24,7 @@
void setTextLabel(entity me, string txt)
{
me.text = txt;
- me.realOrigin_x = me.align * (1 - me.realFontSize_x * draw_TextWidth(me.text));
+ me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - me.realFontSize_x * draw_TextWidth(me.text)) + me.keepspaceLeft;
}
void resizeNotifyLabel(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
Modified: trunk/data/qcsrc/menu-div0test/item/slider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/slider.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/item/slider.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -1,7 +1,9 @@
+// Note:
+// to use this, you FIRST call configureSliderVisuals, then configureSliderValues
#ifdef INTERFACE
CLASS(Slider) EXTENDS(Label)
METHOD(Slider, resizeNotify, void(entity, vector, vector, vector, vector))
- METHOD(Slider, configureSliderVisuals, void(entity, float, float, string))
+ METHOD(Slider, configureSliderVisuals, void(entity, float, float, float, string))
METHOD(Slider, configureSliderValues, void(entity, float, float, float, float, float, float))
METHOD(Slider, draw, void(entity))
METHOD(Slider, keyDown, float(entity, float, float, float))
@@ -11,19 +13,23 @@
METHOD(Slider, valueToText, string(entity, float))
METHOD(Slider, toString, string(entity))
METHOD(Slider, setValue, void(entity, float))
+ METHOD(Slider, showNotify, void(entity))
ATTRIB(Slider, src, string, "")
ATTRIB(Slider, focusable, float, 1)
ATTRIB(Slider, value, float, 0)
ATTRIB(Slider, valueMin, float, 0)
ATTRIB(Slider, valueMax, float, 0)
ATTRIB(Slider, valueStep, float, 0)
+ ATTRIB(Slider, valueDigits, float, 0)
ATTRIB(Slider, valueKeyStep, float, 0)
ATTRIB(Slider, valuePageStep, float, 0)
- ATTRIB(Slider, valueSpace, float, 0)
+ ATTRIB(Slider, textSpace, float, 0)
ATTRIB(Slider, controlWidth, float, 0)
ATTRIB(Slider, pressed, float, 0)
ATTRIB(Slider, pressOffset, float, 0)
ATTRIB(Slider, previousValue, float, 0)
+ ATTRIB(Slider, tolerance, vector, '0 0 0')
+ ATTRIB(Slider, disabled, float, 0)
ENDCLASS(Slider)
#endif
@@ -43,12 +49,13 @@
}
string valueToTextSlider(entity me, float val)
{
- return ftos(val);
+ return ftos_decimals(val, me.valueDigits);
}
-void configureSliderVisualsSlider(entity me, float sz, float theValueSpace, string gfx)
+void configureSliderVisualsSlider(entity me, float sz, float theAlign, float theTextSpace, string gfx)
{
- configureLabelLabel(me, "", sz, 1);
- me.valueSpace = theValueSpace;
+ configureLabelLabel(me, "", sz, theAlign);
+ me.textSpace = theTextSpace;
+ me.keepspaceLeft = (theTextSpace == 0) ? 0 : (1 - theTextSpace);
me.src = gfx;
}
void configureSliderValuesSlider(entity me, float theValueMin, float theValue, float theValueMax, float theValueStep, float theValueKeyStep, float theValuePageStep)
@@ -59,10 +66,19 @@
me.valueMax = theValueMax;
me.valueKeyStep = theValueKeyStep;
me.valuePageStep = theValuePageStep;
+ me.valueDigits = 3;
+ if(fabs(floor(me.valueStep * 100 + 0.5) - (me.valueStep * 100)) < 0.01) // about a whole number of 100ths
+ me.valueDigits = 2;
+ if(fabs(floor(me.valueStep * 10 + 0.5) - (me.valueStep * 10)) < 0.01) // about a whole number of 10ths
+ me.valueDigits = 1;
+ if(fabs(floor(me.valueStep * 1 + 0.5) - (me.valueStep * 1)) < 0.01) // about a whole number
+ me.valueDigits = 0;
}
float keyDownSlider(entity me, float key, float ascii, float shift)
{
float inRange;
+ if(me.disabled)
+ return 0;
inRange = (me.value == median(me.valueMin, me.value, me.valueMax));
if(key == K_LEFTARROW)
{
@@ -113,16 +129,18 @@
{
float hit;
float v;
+ if(me.disabled)
+ return 0;
if(me.pressed)
{
hit = 1;
- if(pos_x < 0) hit = 0;
- if(pos_y < 0) hit = 0;
- if(pos_x >= 1 - me.valueSpace) hit = 0;
- if(pos_y >= 1) hit = 0;
+ if(pos_x < 0 - me.tolerance_x) hit = 0;
+ if(pos_y < 0 - me.tolerance_y) hit = 0;
+ if(pos_x >= 1 - me.textSpace + me.tolerance_x) hit = 0;
+ if(pos_y >= 1 + me.tolerance_y) hit = 0;
if(hit)
{
- v = median(0, (pos_x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.valueSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
+ v = median(0, (pos_x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.textSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
if(me.valueStep)
v = floor(0.5 + v / me.valueStep) * me.valueStep;
me.setValue(me, v);
@@ -135,11 +153,13 @@
float mousePressSlider(entity me, vector pos)
{
float controlCenter;
- if(pos_x < 0) return 0;
- if(pos_y < 0) return 0;
- if(pos_x >= 1 - me.valueSpace) return 0;
- if(pos_y < 0) return 0;
- controlCenter = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.valueSpace - me.controlWidth) + 0.5 * me.controlWidth;
+ if(me.disabled)
+ return 0;
+ if(pos_x < 0 - me.tolerance_x) return 0;
+ if(pos_y < 0 - me.tolerance_y) return 0;
+ if(pos_x >= 1 - me.textSpace + me.tolerance_x) return 0;
+ if(pos_y >= 1 + me.tolerance_y) return 0;
+ controlCenter = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.textSpace - me.controlWidth) + 0.5 * me.controlWidth;
if(fabs(pos_x - controlCenter) <= 0.5 * me.controlWidth)
{
me.pressed = 1;
@@ -159,16 +179,27 @@
float mouseReleaseSlider(entity me, vector pos)
{
me.pressed = 0;
+ if(me.disabled)
+ return 0;
return 1;
}
+void showNotifySlider(entity me)
+{
+ me.focusable = !me.disabled;
+}
void drawSlider(entity me)
{
float controlLeft;
- draw_ButtonPicture('0 0 0', strcat(me.src, "_s"), eX * (1 - me.valueSpace) + eY, '1 1 1', 1);
+ me.focusable = !me.disabled;
+ if(me.disabled)
+ draw_alpha *= 0.5;
+ draw_ButtonPicture('0 0 0', strcat(me.src, "_s"), eX * (1 - me.textSpace) + eY, '1 1 1', 1);
if(me.value == median(me.valueMin, me.value, me.valueMax))
{
- controlLeft = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.valueSpace - me.controlWidth);
- if(me.pressed)
+ controlLeft = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.textSpace - me.controlWidth);
+ if(me.disabled)
+ draw_Picture(eX * controlLeft, strcat(me.src, "_d"), eX * me.controlWidth + eY, '1 1 1', 1);
+ else if(me.pressed)
draw_Picture(eX * controlLeft, strcat(me.src, "_c"), eX * me.controlWidth + eY, '1 1 1', 1);
else if(me.focused)
draw_Picture(eX * controlLeft, strcat(me.src, "_f"), eX * me.controlWidth + eY, '1 1 1', 1);
Added: trunk/data/qcsrc/menu-div0test/item/textslider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/textslider.c (rev 0)
+++ trunk/data/qcsrc/menu-div0test/item/textslider.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -0,0 +1,60 @@
+// Note:
+// to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider
+#ifdef INTERFACE
+CLASS(TextSlider) EXTENDS(Slider)
+ METHOD(TextSlider, valueToText, string(entity, float))
+ METHOD(TextSlider, valueToIdentifier, string(entity, float))
+ METHOD(TextSlider, setValueFromIdentifier, void(entity, string))
+ 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)
+ ATTRIB(TextSlider, nValues, float, 0)
+ENDCLASS(TextSlider)
+#endif
+
+#ifdef IMPLEMENTATION
+string valueToIdentifierTextSlider(entity me, float val)
+{
+ if(val >= me.nValues)
+ return "custom";
+ if(val < 0)
+ return "custom";
+ return me.(valueIdentifiers[val]);
+}
+string valueToTextTextSlider(entity me, float val)
+{
+ if(val >= me.nValues)
+ return "custom";
+ if(val < 0)
+ return "custom";
+ return me.(valueStrings[val]);
+}
+void setValueFromIdentifierTextSlider(entity me, string id)
+{
+ float i;
+ for(i = 0; i < me.nValues; ++i)
+ if(me.valueToIdentifier(me, i) == id)
+ {
+ me.value = i;
+ return;
+ }
+ me.value = -1;
+}
+string getIdentifierTextSlider(entity me)
+{
+ return me.valueToIdentifier(me, me.value);
+}
+void addValueTextSlider(entity me, string theString, string theIdentifier)
+{
+ me.(valueStrings[me.nValues]) = theString;
+ me.(valueIdentifiers[me.nValues]) = theIdentifier;
+ me.nValues += 1;
+}
+void configureTextSliderValuesTextSlider(entity me, string theDefault)
+{
+ me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
+ me.setValueFromIdentifier(me, theDefault);
+}
+#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_effects.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_effects.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_effects.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -4,7 +4,7 @@
ATTRIB(NexuizEffectsSettingsTab, title, string, "Settings")
ATTRIB(NexuizEffectsSettingsTab, intendedWidth, float, 0.9)
ATTRIB(NexuizEffectsSettingsTab, rows, float, 15)
- ATTRIB(NexuizEffectsSettingsTab, columns, float, 1)
+ ATTRIB(NexuizEffectsSettingsTab, columns, float, 6.5)
ENDCLASS(NexuizEffectsSettingsTab)
entity makeNexuizEffectsSettingsTab();
#endif
@@ -17,7 +17,169 @@
me.configureDialog(me);
return me;
}
+/*
+ * cl_decals 1
+ * cl_nogibs 0
+ * cl_particles_quality 1
+ * cl_particles_snow 1
+ * r_bloom 1
+ * r_coronas 1
+ * r_glsl_deluxemapping 1
+ * r_glsl_offsetmapping 1
+ * r_glsl_offsetmapping_reliefmapping 0
+ * r_hdr 0
+ * r_shadow_usenormalmap 1
+ * r_shadow_gloss 1
+ * r_shadow_realtime_dlight 1
+ * r_shadow_realtime_dlight_shadows 1
+ * r_shadow_realtime_world 1
+ * r_shadow_realtime_world_shadows 1
+ * r_depthfirst 2
+ * r_showsurfaces 0
+ * r_water 1
+ * r_water_resolutionmultiplier 0.5
+ *
+ *
+ * [X] cl_decals
+ * [X] !cl_nogibs
+ * Particles: |--v--|
+ * [X] Bloom [X] HDR
+ * [X] Coronas
+ * [X] Deluxemapping [X] Gloss
+ * [X] Offsetmapping [X] Reliefmapping
+ * [X] dlights [X] normalmaps [X] shadows
+ * [X] rtworld [X] shadows
+ * [X] depth first world [X] depth first models (?????)
+ * [X] OMGLOLWTFBBQ (showsurfaces)
+ * [X] water |----------v----|
+ *
+ *
+ */
void fillNexuizEffectsSettingsTab(entity me)
{
+ entity e;
+ float n;
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Quality preset:"));
+ n = 6 + !!cvar("developer");
+ if(cvar("developer"))
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("OMG!", '1 0 1', "exec omg.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("Low", '0 0 0', "exec low.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("Medium", '0 0 0', "exec med.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("Normal", '0 0 0', "exec normal.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("High", '0 0 0', "exec high.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("Ultra", '0 0 0', "exec ultra.cfg", 0));
+ me.TD(me, 1, 5.5 / n, e = makeNexuizCommandButton("Ultimate", '0 0 0', "exec ultimate.cfg", 0));
+
+ me.TR(me);
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Texture quality:"));
+ me.TD(me, 1, 2, e = makeNexuizTextSlider("gl_picmip"));
+ 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.configureNexuizTextSliderValues(e);
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ me.TD(me, 1, 2.8, e = makeNexuizCheckBox(1, "r_picmipworld", "Reduce model texture quality only"));
+ setDependent(e, "gl_picmip", 0.5, -0.5);
+
+ me.TR(me);
+
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Particle quality:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(0.1, 1.0, 0.05, "cl_particles_quality"));
+ me.TR(me);
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_decals", "Decals"));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Gibs:"));
+ n = 3 + !!cvar("developer");
+ me.TD(me, 1, 2 / n, e = makeNexuizRadioButton(2, "cl_nogibs", "0", "Lots"));
+ me.TD(me, 1, 2 / n, e = makeNexuizRadioButton(2, "cl_nogibs", "0.5", "Many"));
+ me.TD(me, 1, 2 / n, e = makeNexuizRadioButton(2, "cl_nogibs", "0.75", "Few"));
+ if(cvar("developer"))
+ me.TD(me, 1, 2 / n, e = makeNexuizRadioButton(2, "cl_nogibs", "1", "German"));
+
+ me.TR(me);
+
+ me.TR(me);
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_coronas", "Coronas"));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_bloom", "Bloom"));
+ me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "r_hdr", "High Dynamic Range (HDR)"));
+ setDependent(e, "r_bloom", 1, 1);
+
+ me.TR(me);
+
+ me.TR(me);
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "showfps", "Show frames per second"));
+
+ me.gotoXY(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Anisotropy:"));
+ me.TD(me, 1, 2, e = makeNexuizTextSlider("gl_texture_anisotropy"));
+ e.addValue(e, "1x", "1");
+ e.addValue(e, "2x", "2");
+ e.addValue(e, "4x", "4");
+ e.addValue(e, "8x", "8");
+ e.addValue(e, "16x", "16");
+ e.configureNexuizTextSliderValues(e);
+ me.TR(me);
+ me.TD(me, 1, 1.5, e = makeNexuizCheckBox(0, "r_glsl_deluxemapping", "Deluxe mapping"));
+ setDependent(e, "r_glsl", 1, 1);
+ me.TD(me, 1, 1.5, e = makeNexuizCheckBox(0, "r_shadow_gloss", "Gloss"));
+ setDependentAND(e, "r_glsl", 1, 1, "r_glsl_deluxemapping", 1, 1);
+
+ me.TR(me);
+
+ me.TR(me);
+ me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "r_shadow_realtime_dlight", "Realtime dynamic lighting"));
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_shadow_realtime_dlight_shadows", "Shadows"));
+ setDependent(e, "r_shadow_realtime_dlight", 1, 1);
+
+ me.TR(me);
+ me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "r_shadow_realtime_world", "Realtime world lighting"));
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_shadow_realtime_world_shadows", "Shadows"));
+ setDependent(e, "r_shadow_realtime_world", 1, 1);
+
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "r_shadow_usenormalmaps", "Use normal maps"));
+ setDependentOR(e, "r_shadow_realtime_dlight", 1, 1, "r_shadow_realtime_world", 1, 1);
+
+ me.TR(me);
+
+ me.TR(me);
+ me.TD(me, 1, 1.5, e = makeNexuizCheckBox(0, "r_glsl_offsetmapping", "Offset mapping"));
+ setDependent(e, "r_glsl", 1, 1);
+ me.TD(me, 1, 1.5, e = makeNexuizCheckBox(0, "r_glsl_offsetmapping_reliefmapping", "Relief mapping"));
+ setDependentAND(e, "r_glsl", 1, 1, "r_glsl_offsetmapping", 1, 1);
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_water", "Reflections"));
+ me.TD(me, 1, 2, e = makeNexuizTextSlider("r_water_resolutionmultiplier"));
+ e.addValue(e, "Blurred", "0.25");
+ e.addValue(e, "Good", "0.5");
+ e.addValue(e, "Sharp", "1");
+ e.addValue(e, "Insane", "2");
+ e.configureNexuizTextSliderValues(e);
+ setDependent(e, "r_water", 1, 1);
+
+ me.TR(me);
+
+ me.TR(me);
+ if(cvar("developer"))
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_showsurfaces", "Show surfaces"));
+
+ me.gotoXY(me, me.rows - 1, 0);
+ me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "sendcvar cl_nogibs; r_restart", COMMANDBUTTON_APPLY));
}
+/*
+ * [X] depth first world [X] depth first models (?????)
+ * [X] OMGLOLWTFBBQ (showsurfaces)
+ *
+ *
+ */
#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_video.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_video.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_video.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -19,59 +19,75 @@
}
void fillNexuizVideoSettingsTab(entity me)
{
+ entity e;
+
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Resolution:"));
- me.TD(me, 1, 2, makeNexuizResolutionSlider());
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Resolution:"));
+ me.TD(me, 1, 2, e = makeNexuizResolutionSlider());
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Color depth:"));
- me.TD(me, 1, 2, makeNexuizSlider(16, 32, 16, "vid_bitsperpixel"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Color depth:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(16, 32, 16, "vid_bitsperpixel"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizCheckBox(0, "vid_fullscreen", "Full screen"));
- me.TD(me, 1, 2, makeNexuizCheckBox(0, "vid_vsync", "Vertical synchronization"));
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "vid_fullscreen", "Full screen"));
+ me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "vid_vsync", "Vertical synchronization"));
+
me.TR(me);
+
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Anisotropy:"));
- me.TD(me, 1, 0.4, makeNexuizRadioButton(1, "gl_texture_anisotropy", "1", "Off"));
- me.TD(me, 1, 0.4, makeNexuizRadioButton(1, "gl_texture_anisotropy", "2", "2x"));
- me.TD(me, 1, 0.4, makeNexuizRadioButton(1, "gl_texture_anisotropy", "4", "4x"));
- me.TD(me, 1, 0.4, makeNexuizRadioButton(1, "gl_texture_anisotropy", "8", "8x"));
- me.TD(me, 1, 0.4, makeNexuizRadioButton(1, "gl_texture_anisotropy", "16", "16x"));
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_glsl", "Use OpenGL 2.0 shaders (GLSL)"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Texture quality:"));
- me.TD(me, 1, 2, makeNexuizPicmipSlider());
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "gl_vbo", "Use Vertex Buffer Objects (VBO)"));
me.TR(me);
- me.TDempty(me, 0.2);
- me.TD(me, 1, 2.8, makeNexuizCheckBox(1, "r_picmipworld", "Reduce model texture quality only"));
+ me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Texture compression"));
+ me.TD(me, 1, 0.5, e = makeNexuizRadioButton(1, "gl_texturecompression", "0", "None"));
+ me.TD(me, 1, 0.5, e = makeNexuizRadioButton(1, "gl_texturecompression", "1", "Fast"));
+ me.TD(me, 1, 0.5, e = makeNexuizRadioButton(1, "gl_texturecompression", "2", "Good"));
+
me.TR(me);
+
me.TR(me);
- me.TD(me, 1, 3, makeNexuizCheckBox(0, "r_glsl", "Use OpenGL 2.0 shaders (GLSL)"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Depth first:"));
+ me.TD(me, 1, 2, e = makeNexuizTextSlider("r_depthfirst"));
+ e.addValue(e, "Disabled", "0");
+ e.addValue(e, "World", "1");
+ e.addValue(e, "All", "2");
+ e.configureNexuizTextSliderValues(e);
+
me.TR(me);
- me.TD(me, 1, 3, makeNexuizCheckBox(0, "gl_vbo", "Use Vertex Buffer Objects (VBO)"));
+ if(cvar_defstring("apple_multithreadedgl") != "")
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(1, "apple_multithreadedgl", "Disable multithreaded OpenGL"));
+
me.TR(me);
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "gl_finish", "Wait for GPU to finish each frame"));
+
me.TR(me);
- me.TD(me, 1, 3, makeNexuizCheckBox(0, "showfps", "Show frames per second"));
- me.gotoXY(me, -1, 0);
- me.setFirstColumn(me, 3.5);
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Brightness:"));
- me.TD(me, 1, 2, makeNexuizSlider(0.0, 0.5, 0.02, "v_brightness"));
+ me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "showfps", "Show frames per second"));
+
+ me.gotoXY(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Brightness:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(0.0, 0.5, 0.02, "v_brightness"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Contrast:"));
- me.TD(me, 1, 2, makeNexuizSlider(1.0, 3.0, 0.05, "v_contrast"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Contrast:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(1.0, 3.0, 0.05, "v_contrast"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizCheckBox(0, "v_hwgamma", "HW Gamma:"));
- me.TD(me, 1, 2, makeNexuizSlider(0.5, 2.0, 0.05, "v_gamma"));
+ me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "v_hwgamma", "HW Gamma:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(0.5, 2.0, 0.05, "v_gamma"));
+ setDependent(e, "v_hwgamma", 1, 1);
me.TR(me);
+
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Ambient lighting:"));
- me.TD(me, 1, 2, makeNexuizSlider(0, 20.0, 1.0, "r_ambient"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Ambient lighting:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(0, 20.0, 1.0, "r_ambient"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Scene brightness:"));
- me.TD(me, 1, 2, makeNexuizSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Scene brightness:"));
+ me.TD(me, 1, 2, e = makeNexuizSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness"));
me.TR(me);
- me.TD(me, 1, 1, makeNexuizTextLabel(0, "Contrast boost:"));
- me.TD(me, 1, 2, makeNexuizSlider(1.0, 5.0, 0.1, "r_glsl_contrastboost"));
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Contrast boost:"));
+ setDependent(e, "r_glsl", 1, 1);
+ me.TD(me, 1, 2, e = makeNexuizSlider(1.0, 5.0, 0.1, "r_glsl_contrastboost"));
+ setDependent(e, "r_glsl", 1, 1);
me.gotoXY(me, me.rows - 1, 0);
me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "vid_restart", COMMANDBUTTON_APPLY));
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -21,47 +21,6 @@
n = spawnNexuizNexposee();
me.addItem(me, n, '0 0 0', '1 1 0', 1);
- dlg = spawnInputContainer();
- cb = spawnButton();
- cb.configureButton(cb, "", 12, "qcsrc/menu-div0test/baseclosebutton");
- cb.onClick = DialogCloseButton_Click; cb.onClickEntity = dlg;
- cb.srcMulti = 0;
-
- i = spawnBorderImage();
- i.configureBorderImage(i, "I told you...", 18, '0.5 0.5 1', "qcsrc/menu-div0test/baseborder", 18 * 1.5);
- i.closeButton = cb;
- dlg.addItem(dlg, i, '0 0 0', '1 1 0', 1);
-
- i = spawnLabel();
- i.configureLabel(i, "Swim swim hungry, swim swim hungry...", 10, 0.5);
- dlg.addItem(dlg, i, '0 0.3 0', '1 0.1 0', 1);
-
- i = spawnRadioButton();
- i.configureRadioButton(i, "RadioButton1", 12, "qcsrc/menu-div0test/baseradiobutton", 1, 0);
- dlg.addItem(dlg, i, '0.1 0.4 0', '0.4 0.1 0', 1);
-
- i = spawnRadioButton();
- i.configureRadioButton(i, "RadioButton2", 12, "qcsrc/menu-div0test/baseradiobutton", 1, 1);
- dlg.addItem(dlg, i, '0.5 0.4 0', '0.8 0.1 0', 1);
-
- i = spawnSlider();
- i.configureSliderVisuals(i, 12, 0.2, "qcsrc/menu-div0test/baseslider");
- i.configureSliderValues(i, 1, 50, 200, 1, 1, 20);
- dlg.addItem(dlg, i, '0.1 0.5 0', '0.8 0.1 0', 1);
-
- i = spawnCheckBox();
- i.configureCheckBox(i, "Do not show this dialog again", 12, "qcsrc/menu-div0test/basecheckbox");
- i.checked = 1;
- dlg.addItem(dlg, i, '0.1 0.6 0', '0.8 0.1 0', 1);
-
- i = spawnButton();
- i.configureButton(i, "Close", 12, "qcsrc/menu-div0test/basebutton");
- i.onClick = DialogCloseButton_Click; i.onClickEntity = dlg;
- dlg.addItem(dlg, i, '0.3 0.7 0', '0.4 0.2 0', 1);
-
- dlg.addItem(dlg, cb, '0.3 0.7 0', '0.4 0.2 0', 1);
- me.addItem(me, dlg, '0.2 0.3 0', '0.6 0.4 0', 1);
-
i = spawnNexuizTeamSelectDialog();
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, 1);
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/slider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/slider.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/slider.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -5,6 +5,8 @@
ATTRIB(NexuizSlider, fontSize, float, SKINFONTSIZE_NORMAL)
ATTRIB(NexuizSlider, valueSpace, float, SKINWIDTH_SLIDERTEXT)
ATTRIB(NexuizSlider, image, string, SKINGFX_SLIDER)
+ ATTRIB(NexuizSlider, tolerance, vector, SKINTOLERANCE_SLIDER)
+ ATTRIB(NexuizSlider, align, float, 0.5)
ATTRIB(NexuizSlider, cvarName, string, string_null)
METHOD(NexuizSlider, loadCvars, void(entity))
@@ -29,7 +31,7 @@
vp = theValueStep * 10;
while(fabs(vp) < fabs(theValueMax - theValueMin) / 40)
vp *= 10;
- me.configureSliderVisuals(me, me.fontSize, me.valueSpace, me.image);
+ me.configureSliderVisuals(me, me.fontSize, me.align, me.valueSpace, me.image);
me.configureSliderValues(me, theValueMin, v, theValueMax, theValueStep, vk, vp);
if(theCvar != "")
{
Deleted: trunk/data/qcsrc/menu-div0test/nexuiz/slider_picmip.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/slider_picmip.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/slider_picmip.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -1,33 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizPicmipSlider) EXTENDS(NexuizSlider)
- METHOD(NexuizPicmipSlider, valueToText, string(entity, float))
- METHOD(NexuizPicmipSlider, configureNexuizPicmipSlider, void(entity))
-ENDCLASS(NexuizPicmipSlider)
-entity makeNexuizPicmipSlider();
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizPicmipSlider()
-{
- entity me;
- me = spawnNexuizPicmipSlider();
- me.configureNexuizPicmipSlider(me);
- return me;
-}
-string valueToTextNexuizPicmipSlider(entity me, float theValue)
-{
- switch(floor(theValue + 0.5))
- {
- case 0: return "best";
- case 1: return "good";
- case 2: return "medium";
- case 3: return "low";
- case 4: return "none";
- default: return "custom";
- }
-}
-void configureNexuizPicmipSliderNexuizPicmipSlider(entity me)
-{
- me.configureNexuizSlider(me, 4, 0, -1, "gl_picmip");
-}
-#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/slider_resolution.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/slider_resolution.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/slider_resolution.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -1,25 +1,9 @@
#ifdef INTERFACE
-CLASS(NexuizResolutionSlider) EXTENDS(NexuizSlider)
- METHOD(NexuizResolutionSlider, valueToText, string(entity, float))
+CLASS(NexuizResolutionSlider) EXTENDS(NexuizTextSlider)
METHOD(NexuizResolutionSlider, configureNexuizResolutionSlider, void(entity))
+ METHOD(NexuizResolutionSlider, addResolution, void(entity, float, float))
METHOD(NexuizResolutionSlider, loadCvars, void(entity))
METHOD(NexuizResolutionSlider, saveCvars, void(entity))
- ATTRIB(NexuizResolutionSlider, resolutions, string,
- " 640 480 "
- " 800 600 "
- " 960 600 "
- "1024 768 "
- "1152 864 "
- "1280 800 "
- "1280 960 "
- "1280 1024 "
- "1440 900 "
- "1600 900 "
- "1600 1200 "
- "1680 1050 "
- "1920 1200 "
- "2048 1536 "
- )
ENDCLASS(NexuizResolutionSlider)
entity makeNexuizResolutionSlider();
#endif
@@ -32,50 +16,40 @@
me.configureNexuizResolutionSlider(me);
return me;
}
-string valueToTextNexuizResolutionSlider(entity me, float theValue)
+void addResolutionNexuizResolutionSlider(entity me, float w, float h)
{
- string r;
- float w, h;
- if(theValue < me.valueMin || theValue > me.valueMax)
- return "custom";
- r = substring(me.resolutions, (theValue - 1) * 10, 10);
- w = stof(substring(r, 0, 5));
- h = stof(substring(r, 5, 10));
- return strcat(ftos(w), "x", ftos(h));
+ me.addValue(me, strzone(strcat(ftos(w), "x", ftos(h))), strzone(strcat(ftos(w), " ", ftos(h))));
+ // FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED
}
void configureNexuizResolutionSliderNexuizResolutionSlider(entity me)
{
- me.configureNexuizSlider(me, 1, strlen(me.resolutions) / 10, 1, "vid_width");
+ me.configureNexuizTextSlider(me, "vid_width");
+ me.addResolution(me, 640, 480);
+ me.addResolution(me, 800, 600);
+ me.addResolution(me, 1024, 768);
+ me.addResolution(me, 1152, 864);
+ me.addResolution(me, 1280, 800);
+ me.addResolution(me, 1280, 960);
+ me.addResolution(me, 1280, 1024);
+ me.addResolution(me, 1440, 900);
+ me.addResolution(me, 1600, 900);
+ me.addResolution(me, 1600, 1200);
+ me.addResolution(me, 1680, 1050);
+ me.addResolution(me, 1920, 1200);
+ me.addResolution(me, 2048, 1536);
+ me.configureNexuizTextSliderValues(me);
}
void loadCvarsNexuizResolutionSlider(entity me)
{
- string r;
- float i;
- float w, h;
- me.value = 0;
- w = cvar("vid_width");
- h = cvar("vid_height");
- for(i = me.valueMin; i <= me.valueMax; ++i)
- {
- r = substring(me.resolutions, (i - 1) * 10, 10);
- if(w == stof(substring(r, 0, 5)))
- if(h == stof(substring(r, 5, 10)))
- {
- me.value = i;
- break;
- }
- }
+ me.setValueFromIdentifier(me, strcat(cvar_string("vid_width"), " ", cvar_string("vid_height")));
}
void saveCvarsNexuizResolutionSlider(entity me)
{
- string r;
- float w, h;
- if(me.value < me.valueMin || me.value > me.valueMax)
- return;
- r = substring(me.resolutions, (me.value - 1) * 10, 10);
- w = stof(substring(r, 0, 5));
- h = stof(substring(r, 5, 10));
- cvar_set("vid_width", ftos(w));
- cvar_set("vid_height", ftos(h));
+ if(me.value >= 0 || me.value < me.nValues)
+ {
+ tokenize(me.getIdentifier(me));
+ cvar_set("vid_width", argv(0));
+ cvar_set("vid_height", argv(1));
+ }
}
#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -1,7 +1,9 @@
#ifdef INTERFACE
CLASS(NexuizTextLabel) EXTENDS(Label)
METHOD(NexuizTextLabel, configureNexuizTextLabel, void(entity, float, string))
+ METHOD(NexuizTextLabel, draw, void(entity))
ATTRIB(NexuizTextLabel, fontSize, float, SKINFONTSIZE_NORMAL)
+ ATTRIB(NexuizTextLabel, disabled, float, 0)
ENDCLASS(NexuizTextLabel)
entity makeNexuizTextLabel(float theAlign, string theText);
#endif
@@ -18,4 +20,10 @@
{
me.configureLabel(me, theText, me.fontSize, theAlign);
}
+void drawNexuizTextLabel(entity me)
+{
+ if(me.disabled)
+ draw_alpha *= 0.5;
+ drawLabel(me);
+}
#endif
Added: trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c 2007-11-02 09:23:10 UTC (rev 2887)
@@ -0,0 +1,56 @@
+#ifdef INTERFACE
+CLASS(NexuizTextSlider) EXTENDS(TextSlider)
+ METHOD(NexuizTextSlider, configureNexuizTextSlider, void(entity, string))
+ METHOD(NexuizTextSlider, setValue, void(entity, float))
+ METHOD(NexuizTextSlider, configureNexuizTextSliderValues, void(entity))
+ ATTRIB(NexuizTextSlider, fontSize, float, SKINFONTSIZE_NORMAL)
+ ATTRIB(NexuizTextSlider, valueSpace, float, SKINWIDTH_SLIDERTEXT)
+ ATTRIB(NexuizTextSlider, image, string, SKINGFX_SLIDER)
+ ATTRIB(NexuizSlider, tolerance, vector, SKINTOLERANCE_SLIDER)
+ ATTRIB(NexuizTextSlider, align, float, 0.5)
+
+ ATTRIB(NexuizTextSlider, cvarName, string, string_null)
+ METHOD(NexuizTextSlider, loadCvars, void(entity))
+ METHOD(NexuizTextSlider, saveCvars, void(entity))
+ENDCLASS(NexuizTextSlider)
+entity makeNexuizTextSlider(string); // note: you still need to call addValue and configureNexuizTextSliderValues!
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeNexuizTextSlider(string theCvar)
+{
+ entity me;
+ me = spawnNexuizTextSlider();
+ me.configureNexuizTextSlider(me, theCvar);
+ return me;
+}
+void configureNexuizTextSliderNexuizTextSlider(entity me, string theCvar)
+{
+ me.configureSliderVisuals(me, me.fontSize, me.align, me.valueSpace, me.image);
+ if(theCvar != "")
+ me.cvarName = theCvar;
+ // don't load it yet
+}
+void setValueNexuizTextSlider(entity me, float val)
+{
+ if(val != me.value)
+ {
+ me.value = val;
+ me.saveCvars(me);
+ }
+}
+void loadCvarsNexuizTextSlider(entity me)
+{
+ me.setValueFromIdentifier(me, cvar_string(me.cvarName));
+}
+void saveCvarsNexuizTextSlider(entity me)
+{
+ if(me.value >= 0 && me.value < me.nValues)
+ cvar_set(me.cvarName, me.getIdentifier(me));
+}
+void configureNexuizTextSliderValuesNexuizTextSlider(entity me)
+{
+ me.configureTextSliderValues(me, "");
+ me.loadCvars(me);
+}
+#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/util.qc
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/util.qc 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/util.qc 2007-11-02 09:23:10 UTC (rev 2887)
@@ -25,3 +25,70 @@
{
forAllDescendants(root, loadCvarsOf, SUB_Null_ee, NULL);
}
+
+.void(entity) draw_setDependent;
+.string cvar_setDependent;
+.float cvarMin_setDependent;
+.float cvarMax_setDependent;
+.string cvar2_setDependent;
+.float cvar2Min_setDependent;
+.float cvar2Max_setDependent;
+.float op_setDependent;
+void setDependent_Check(entity e)
+{
+ float f;
+ f = cvar(e.cvar_setDependent);
+ if(e.cvarMin_setDependent <= e.cvarMax_setDependent)
+ e.disabled = ((f < e.cvarMin_setDependent) || (f > e.cvarMax_setDependent));
+ else
+ e.disabled = ((f >= e.cvarMax_setDependent) && (f <= e.cvarMin_setDependent));
+ if(e.cvar2_setDependent != string_null)
+ {
+ f = cvar(e.cvar2_setDependent);
+ if(e.cvar2Min_setDependent <= e.cvar2Max_setDependent)
+ e.disabled = (e.disabled + ((f < e.cvar2Min_setDependent) || (f > e.cvar2Max_setDependent)) > e.op_setDependent);
+ else
+ e.disabled = (e.disabled + ((f >= e.cvar2Max_setDependent) && (f <= e.cvar2Min_setDependent)) > e.op_setDependent);
+ }
+}
+void setDependent_Draw(entity e)
+{
+ setDependent_Check(e);
+ e.draw_setDependent(e);
+}
+void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax)
+{
+ e.draw_setDependent = e.draw;
+ e.cvar_setDependent = theCvarName;
+ e.cvarMin_setDependent = theCvarMin;
+ e.cvarMax_setDependent = theCvarMax;
+ e.cvar2_setDependent = string_null;
+ e.draw = setDependent_Draw;
+ setDependent_Check(e);
+}
+void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max)
+{
+ e.draw_setDependent = e.draw;
+ e.cvar_setDependent = theCvarName;
+ e.cvarMin_setDependent = theCvarMin;
+ e.cvarMax_setDependent = theCvarMax;
+ e.cvar2_setDependent = theCvar2Name;
+ e.cvar2Min_setDependent = theCvar2Min;
+ e.cvar2Max_setDependent = theCvar2Max;
+ e.op_setDependent = 0;
+ e.draw = setDependent_Draw;
+ setDependent_Check(e);
+}
+void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max)
+{
+ e.draw_setDependent = e.draw;
+ e.cvar_setDependent = theCvarName;
+ e.cvarMin_setDependent = theCvarMin;
+ e.cvarMax_setDependent = theCvarMax;
+ e.cvar2_setDependent = theCvar2Name;
+ e.cvar2Min_setDependent = theCvar2Min;
+ e.cvar2Max_setDependent = theCvar2Max;
+ e.op_setDependent = 1;
+ e.draw = setDependent_Draw;
+ setDependent_Check(e);
+}
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/util.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/util.qh 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/util.qh 2007-11-02 09:23:10 UTC (rev 2887)
@@ -1,3 +1,7 @@
void forAllDescendants(entity root, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass);
void saveAllCvars(entity root);
void loadAllCvars(entity root);
+
+void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax);
+void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max);
+void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max);
Modified: trunk/data/qcsrc/menu-div0test/oo/classdefs.h
===================================================================
--- trunk/data/qcsrc/menu-div0test/oo/classdefs.h 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/oo/classdefs.h 2007-11-02 09:23:10 UTC (rev 2887)
@@ -11,11 +11,13 @@
#undef EXTENDS
#undef METHOD
#undef ATTRIB
+#undef ATTRIBARRAY
#undef ENDCLASS
#endif
-#define CLASS(cname) entity spawn##cname();
+#define CLASS(cname) entity spawn##cname();
#define EXTENDS(base)
-#define METHOD(cname,name,prototype) prototype name##cname; .prototype name;
-#define ATTRIB(cname,name,type,val) .type name;
-#define ENDCLASS(cname) .float instanceOf##cname;
+#define METHOD(cname,name,prototype) prototype name##cname; .prototype name;
+#define ATTRIB(cname,name,type,val) .type name;
+#define ATTRIBARRAY(cname,name,type,cnt) .type name[cnt];
+#define ENDCLASS(cname) .float instanceOf##cname;
Modified: trunk/data/qcsrc/menu-div0test/oo/constructors.h
===================================================================
--- trunk/data/qcsrc/menu-div0test/oo/constructors.h 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/oo/constructors.h 2007-11-02 09:23:10 UTC (rev 2887)
@@ -11,11 +11,13 @@
#undef EXTENDS
#undef METHOD
#undef ATTRIB
+#undef ATTRIBARRAY
#undef ENDCLASS
#endif
-#define CLASS(cname) entity spawn##cname() { entity me;
-#define EXTENDS(base) me = spawn##base ();
-#define METHOD(cname,name,prototype) me.name = name##cname;
-#define ATTRIB(cname,name,type,val) me.name = val;
-#define ENDCLASS(cname) me.instanceOf##cname = 1; me.classname = #cname; return me; }
+#define CLASS(cname) entity spawn##cname() { entity me;
+#define EXTENDS(base) me = spawn##base ();
+#define METHOD(cname,name,prototype) me.name = name##cname;
+#define ATTRIB(cname,name,type,val) me.name = val;
+#define ATTRIBARRAY(cname,name,type,cnt) me.name = me.name;
+#define ENDCLASS(cname) me.instanceOf##cname = 1; me.classname = #cname; return me; }
Modified: trunk/data/qcsrc/menu-div0test/oo/implementation.h
===================================================================
--- trunk/data/qcsrc/menu-div0test/oo/implementation.h 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/oo/implementation.h 2007-11-02 09:23:10 UTC (rev 2887)
@@ -11,5 +11,6 @@
#undef EXTENDS
#undef METHOD
#undef ATTRIB
+#undef ATTRIBARRAY
#undef ENDCLASS
#endif
Modified: trunk/data/qcsrc/menu-div0test/skin.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/skin.qh 2007-11-02 06:20:33 UTC (rev 2886)
+++ trunk/data/qcsrc/menu-div0test/skin.qh 2007-11-02 09:23:10 UTC (rev 2887)
@@ -18,3 +18,5 @@
const float SKINHEIGHT_NORMAL_WITHSPACING = 2;
const float SKINWIDTH_SLIDERTEXT = 0.333333333333;
+
+const vector SKINTOLERANCE_SLIDER = '0.2 2 0';
More information about the nexuiz-commits
mailing list