]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/checkbox_slider_invalid.c
the usual (forgot two files)
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / checkbox_slider_invalid.c
1 #ifdef INTERFACE
2 CLASS(NexuizSliderCheckBox) EXTENDS(CheckBox)
3         METHOD(NexuizSliderCheckBox, configureNexuizSliderCheckBox, void(entity, float, float, entity, string))
4         METHOD(NexuizSliderCheckBox, setChecked, void(entity, float))
5         METHOD(NexuizSliderCheckBox, draw, void(entity))
6         ATTRIB(NexuizSliderCheckBox, fontSize, float, SKINFONTSIZE_NORMAL)
7         ATTRIB(NexuizSliderCheckBox, image, string, SKINGFX_CHECKBOX)
8
9         ATTRIB(NexuizSliderCheckBox, color, vector, SKINCOLOR_CHECKBOX_N)
10         ATTRIB(NexuizSliderCheckBox, colorC, vector, SKINCOLOR_CHECKBOX_C)
11         ATTRIB(NexuizSliderCheckBox, colorF, vector, SKINCOLOR_CHECKBOX_F)
12         ATTRIB(NexuizSliderCheckBox, colorD, vector, SKINCOLOR_CHECKBOX_D)
13
14         ATTRIB(NexuizSliderCheckBox, alpha, float, SKINALPHA_TEXT)
15         ATTRIB(NexuizSliderCheckBox, disabledAlpha, float, SKINALPHA_DISABLED)
16
17         ATTRIB(NexuizSliderCheckBox, controlledSlider, entity, NULL)
18         ATTRIB(NexuizSliderCheckBox, offValue, float, -1)
19         ATTRIB(NexuizSliderCheckBox, inverted, float, 0)
20         ATTRIB(NexuizSliderCheckBox, savedValue, float, -1)
21 ENDCLASS(NexuizSliderCheckBox)
22 entity makeNexuizSliderCheckBox(float, float, entity, string);
23 #endif
24
25 #ifdef IMPLEMENTATION
26 entity makeNexuizSliderCheckBox(float theOffValue, float isInverted, entity theControlledSlider, string theText)
27 {
28         entity me;
29         me = spawnNexuizSliderCheckBox();
30         me.configureNexuizSliderCheckBox(me, theOffValue, isInverted, theControlledSlider, theText);
31         return me;
32 }
33 void configureNexuizSliderCheckBoxNexuizSliderCheckBox(entity me, float theOffValue, float isInverted, entity theControlledSlider, string theText)
34 {
35         me.offValue = theOffValue;
36         me.inverted = isInverted;
37         me.checked = (theControlledSlider.value == theOffValue);
38         if(theControlledSlider.value == median(theControlledSlider.valueMin, theControlledSlider.value, theControlledSlider.valueMax))
39                 me.savedValue = theControlledSlider.value;
40         else
41                 me.savedValue = theControlledSlider.valueMin; 
42         me.controlledSlider = theControlledSlider;
43         me.configureCheckBox(me, theText, me.fontSize, me.image);
44 }
45 void drawNexuizSliderCheckBox(entity me)
46 {
47         me.checked = ((me.controlledSlider.value == me.offValue) != me.inverted);
48         if(me.controlledSlider.value == median(me.controlledSlider.valueMin, me.controlledSlider.value, me.controlledSlider.valueMax))
49                 me.savedValue = me.controlledSlider.value;
50         drawCheckBox(me);
51 }
52 void setCheckedNexuizSliderCheckBox(entity me, float val)
53 {
54         if(me.checked == val)
55                 return;
56         me.checked = val;
57         if(val == me.inverted)
58                 me.controlledSlider.setValue(me.controlledSlider, median(me.controlledSlider.valueMin, me.savedValue, me.controlledSlider.valueMax));
59         else
60                 me.controlledSlider.setValue(me.controlledSlider, me.offValue);
61 }
62
63 #endif