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