Include gmqcc binaries for Windows and Linux
[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         {\r
33                 if(me.cvarName == "menu_bgmvolume")\r
34                         me.value = 0.1 * floor(0.5 + 10.0 * log10(v * 2) * 10); // due to system settings, overall music volume must be twice as low\r
35                 else\r
36                         me.value = 0.1 * floor(0.5 + 10.0 * log10(v) * 10);\r
37         }\r
38 }\r
39 void saveCvarsVoretDecibelsSlider(entity me)\r
40 {\r
41         float v;\r
42 \r
43         if not(me.cvarName)\r
44                 return;\r
45 \r
46         if(me.value >= -0.1)\r
47                 cvar_set(me.cvarName, "1");\r
48         if(me.value < -33)\r
49                 cvar_set(me.cvarName, "0");\r
50         else\r
51         {\r
52                 v = pow(10, me.value / 10);\r
53                 if(me.cvarName == "menu_bgmvolume")\r
54                         v = v / 2; // due to system settings, overall music volume must be twice as low\r
55                 cvar_set(me.cvarName, ftos(v));\r
56         }\r
57 }\r
58 \r
59 string valueToTextVoretDecibelsSlider(entity me, float v)\r
60 {\r
61         if(v < -33)\r
62                 return "OFF";\r
63         else if(v >= -0.1)\r
64                 return "MAX";\r
65         return strcat(valueToTextSlider(me, v), " dB");\r
66 }\r
67 \r
68 #endif\r