]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/menu/voret/checkbox_slider_invalid.c
Tweak the Effects menu, and add iris adaptation to it as well.
[voretournament/voretournament.git] / data / qcsrc / menu / voret / checkbox_slider_invalid.c
1 #ifdef INTERFACE\r
2 CLASS(VoretSliderCheckBox) EXTENDS(CheckBox)\r
3         METHOD(VoretSliderCheckBox, configureVoretSliderCheckBox, void(entity, float, float, entity, string))\r
4         METHOD(VoretSliderCheckBox, setChecked, void(entity, float))\r
5         METHOD(VoretSliderCheckBox, draw, void(entity))\r
6         ATTRIB(VoretSliderCheckBox, fontSize, float, SKINFONTSIZE_NORMAL)\r
7         ATTRIB(VoretSliderCheckBox, image, string, SKINGFX_CHECKBOX)\r
8 \r
9         ATTRIB(VoretSliderCheckBox, color, vector, SKINCOLOR_CHECKBOX_N)\r
10         ATTRIB(VoretSliderCheckBox, colorC, vector, SKINCOLOR_CHECKBOX_C)\r
11         ATTRIB(VoretSliderCheckBox, colorF, vector, SKINCOLOR_CHECKBOX_F)\r
12         ATTRIB(VoretSliderCheckBox, colorD, vector, SKINCOLOR_CHECKBOX_D)\r
13 \r
14         ATTRIB(VoretSliderCheckBox, alpha, float, SKINALPHA_TEXT)\r
15         ATTRIB(VoretSliderCheckBox, disabledAlpha, float, SKINALPHA_DISABLED)\r
16 \r
17         ATTRIB(VoretSliderCheckBox, controlledSlider, entity, NULL)\r
18         ATTRIB(VoretSliderCheckBox, offValue, float, -1)\r
19         ATTRIB(VoretSliderCheckBox, inverted, float, 0)\r
20         ATTRIB(VoretSliderCheckBox, savedValue, float, -1)\r
21 ENDCLASS(VoretSliderCheckBox)\r
22 entity makeVoretSliderCheckBox(float, float, entity, string);\r
23 #endif\r
24 \r
25 #ifdef IMPLEMENTATION\r
26 entity makeVoretSliderCheckBox(float theOffValue, float isInverted, entity theControlledSlider, string theText)\r
27 {\r
28         entity me;\r
29         me = spawnVoretSliderCheckBox();\r
30         me.configureVoretSliderCheckBox(me, theOffValue, isInverted, theControlledSlider, theText);\r
31         return me;\r
32 }\r
33 void configureVoretSliderCheckBoxVoretSliderCheckBox(entity me, float theOffValue, float isInverted, entity theControlledSlider, string theText)\r
34 {\r
35         me.offValue = theOffValue;\r
36         me.inverted = isInverted;\r
37         me.checked = (theControlledSlider.value == theOffValue);\r
38         if(theControlledSlider.value == median(theControlledSlider.valueMin, theControlledSlider.value, theControlledSlider.valueMax))\r
39                 me.savedValue = theControlledSlider.value;\r
40         else\r
41                 me.savedValue = theControlledSlider.valueMin; \r
42         me.controlledSlider = theControlledSlider;\r
43         me.configureCheckBox(me, theText, me.fontSize, me.image);\r
44         me.tooltip = theControlledSlider.tooltip;\r
45 }\r
46 void drawVoretSliderCheckBox(entity me)\r
47 {\r
48         me.checked = ((me.controlledSlider.value == me.offValue) != me.inverted);\r
49         if(me.controlledSlider.value == median(me.controlledSlider.valueMin, me.controlledSlider.value, me.controlledSlider.valueMax))\r
50                 me.savedValue = me.controlledSlider.value;\r
51         drawCheckBox(me);\r
52 }\r
53 void setCheckedVoretSliderCheckBox(entity me, float val)\r
54 {\r
55         if(me.checked == val)\r
56                 return;\r
57         me.checked = val;\r
58         if(val == me.inverted)\r
59                 me.controlledSlider.setValue(me.controlledSlider, median(me.controlledSlider.valueMin, me.savedValue, me.controlledSlider.valueMax));\r
60         else\r
61                 me.controlledSlider.setValue(me.controlledSlider, me.offValue);\r
62 }\r
63 \r
64 #endif\r