Don't play any animation when loading the initial value of a slider since the animati...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / textslider.qc
1 // Note:
2 //   to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider
3 #ifndef ITEM_TEXTSLIDER_H
4 #define ITEM_TEXTSLIDER_H
5 #include "slider.qc"
6 CLASS(TextSlider, Slider)
7         METHOD(TextSlider, valueToText, string(entity, float));
8         METHOD(TextSlider, valueToIdentifier, string(entity, float));
9         METHOD(TextSlider, setValueFromIdentifier_allowAnim, void(entity, string, bool));
10         METHOD(TextSlider, setValueFromIdentifier_noAnim, void(entity, string));
11         METHOD(TextSlider, setValueFromIdentifier, void(entity, string));
12         METHOD(TextSlider, getIdentifier, string(entity));
13         METHOD(TextSlider, clearValues, void(entity));
14         METHOD(TextSlider, addValue, void(entity, string, string));
15         METHOD(TextSlider, insertValue, void(entity, float, string, string));
16         METHOD(TextSlider, configureTextSliderValues, void(entity, string));
17         ATTRIBARRAY(TextSlider, valueStrings, string, 256)
18         ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256)
19         ATTRIB(TextSlider, nValues, int, 0)
20 ENDCLASS(TextSlider)
21 #endif
22
23 #ifdef IMPLEMENTATION
24 string TextSlider_valueToIdentifier(entity me, int val)
25 {
26         if(val >= me.nValues)
27                 return "custom";
28         if(val < 0)
29                 return "custom";
30         return me.(valueIdentifiers[val]);
31 }
32 string TextSlider_valueToText(entity me, int val)
33 {
34         if(val >= me.nValues)
35                 return _("Custom");
36         if(val < 0)
37                 return _("Custom");
38         return me.(valueStrings[val]);
39 }
40 void TextSlider_setValueFromIdentifier_allowAnim(entity me, string id, bool allowAnim)
41 {
42         int i;
43         for(i = 0; i < me.nValues; ++i)
44                 if(me.valueToIdentifier(me, i) == id)
45                 {
46                         SUPER(TextSlider).setValue_allowAnim(me, i, allowAnim);
47                         return;
48                 }
49         SUPER(TextSlider).setValue_allowAnim(me, -1, allowAnim);
50 }
51 void TextSlider_setValueFromIdentifier_noAnim(entity me, string id)
52 {
53         TextSlider_setValueFromIdentifier_allowAnim(me, id, false);
54 }
55 void TextSlider_setValueFromIdentifier(entity me, string id)
56 {
57         TextSlider_setValueFromIdentifier_allowAnim(me, id, true);
58 }
59 string TextSlider_getIdentifier(entity me)
60 {
61         return me.valueToIdentifier(me, me.value);
62 }
63 void TextSlider_clearValues(entity me)
64 {
65         me.nValues = 0;
66 }
67 void TextSlider_addValue(entity me, string theString, string theIdentifier)
68 {
69         me.(valueStrings[me.nValues]) = theString;
70         me.(valueIdentifiers[me.nValues]) = theIdentifier;
71         me.nValues += 1;
72 }
73 void TextSlider_insertValue(entity me, int pos, string theString, string theIdentifier)
74 {
75         int i;
76         for (i = me.nValues; i > pos; --i)
77         {
78                 me.(valueStrings[i]) = me.(valueStrings[i-1]);
79                 me.(valueIdentifiers[i]) = me.(valueIdentifiers[i-1]);
80         }
81         me.(valueStrings[pos]) = theString;
82         me.(valueIdentifiers[pos]) = theIdentifier;
83         me.nValues += 1;
84 }
85 void TextSlider_configureTextSliderValues(entity me, string theDefault)
86 {
87         me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
88         me.setValueFromIdentifier_noAnim(me, theDefault);
89 }
90 #endif