c699588631cd084fa549a36192d5db282841714d
[voretournament/voretournament.git] / data / qcsrc / menu / voret / slider_decibels.c
1 #ifdef INTERFACE\r
2 CLASS(VoretDecibelsSlider) EXTENDS(VoretSlider)\r
3         METHOD(VoretDecibelsSlider, loadCvars, void(entity))\r
4         METHOD(VoretDecibelsSlider, saveCvars, void(entity))\r
5         METHOD(VoretDecibelsSlider, valueToText, string(entity, float))\r
6 ENDCLASS(VoretDecibelsSlider)\r
7 entity makeVoretDecibelsSlider(float, float, float, string);\r
8 #endif\r
9 \r
10 #ifdef IMPLEMENTATION\r
11 \r
12 entity makeVoretDecibelsSlider(float theValueMin, float theValueMax, float theValueStep, string theCvar)\r
13 {\r
14         entity me;\r
15         me = spawnVoretDecibelsSlider();\r
16         me.configureVoretSlider(me, theValueMin, theValueMax, theValueStep, theCvar);\r
17         return me;\r
18 }\r
19 void loadCvarsVoretDecibelsSlider(entity me)\r
20 {\r
21         float v;\r
22 \r
23         if not(me.cvarName)\r
24                 return;\r
25 \r
26         v = cvar(me.cvarName);\r
27         if(v >= 0.98)\r
28                 me.value = 0;\r
29         else if(v < 0.0005)\r
30                 me.value = -1000000;\r
31         else\r
32                 me.value = 0.1 * floor(0.5 + 10.0 * log10(cvar(me.cvarName)) * 10);\r
33 }\r
34 void saveCvarsVoretDecibelsSlider(entity me)\r
35 {\r
36         if not(me.cvarName)\r
37                 return;\r
38 \r
39         if(me.value >= -0.1)\r
40                 cvar_set(me.cvarName, "1");\r
41         if(me.value < -33)\r
42                 cvar_set(me.cvarName, "0");\r
43         else\r
44                 cvar_set(me.cvarName, ftos(pow(10, me.value / 10)));\r
45 }\r
46 \r
47 string valueToTextVoretDecibelsSlider(entity me, float v)\r
48 {\r
49         if(v < -33)\r
50                 return "OFF";\r
51         else if(v >= -0.1)\r
52                 return "MAX";\r
53         return strcat(valueToTextSlider(me, v), " dB");\r
54 }\r
55 \r
56 #endif\r