Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
mixedslider.qc File Reference
#include "mixedslider.qh"
Include dependency graph for mixedslider.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void MixedSlider_addRange (entity me, float theValueMin, float theValueMax, float theValueStep)
void MixedSlider_addText (entity me, string theString, float theIdentifier)
void MixedSlider_adjustDigitsForStep (entity me, float valueStep)
void MixedSlider_clearValues (entity me)
void MixedSlider_configureMixedSliderValues (entity me, float theDefault)
float MixedSlider_getNumberIdentifier (entity me)
void MixedSlider_insertRange (entity me, int pos, float theValueMin, float theValueMax, float theValueStep)
void MixedSlider_insertText (entity me, int pos, string theString, float theIdentifier)
string MixedSlider_rangedIdentifierToText (entity me, float id)
void MixedSlider_setValueFromNumberIdentifier (entity me, float id, bool allowAnim)
float MixedSlider_valueToNumberIdentifier (entity me, int val)
string MixedSlider_valueToText (entity me, int val)

Function Documentation

◆ MixedSlider_addRange()

void MixedSlider_addRange ( entity me,
float theValueMin,
float theValueMax,
float theValueStep )

Definition at line 49 of file mixedslider.qc.

50 {
51 me.adjustDigitsForStep(me, theValueStep);
52 for (float id = theValueMin; id <= theValueMax + theValueStep / 2; id += theValueStep)
53 { // plus half to prevent almost all floating point errors
54 me.(valueStrings[me.nValues]) = strzone(me.rangedIdentifierToText(me, id));
55 me.(valueNumberIdentifiers[me.nValues]) = stof(ftos_decimals(id, me.valueDigits));
56 ++me.nValues;
57 }
58 }
float stof(string val,...)
string strzone(string s)
ERASEABLE string ftos_decimals(float number, int decimals)
converts a number to a string with the indicated number of decimals
Definition string.qh:469

References entity(), ftos_decimals(), stof(), and strzone().

◆ MixedSlider_addText()

void MixedSlider_addText ( entity me,
string theString,
float theIdentifier )

Definition at line 59 of file mixedslider.qc.

60 {
61 me.(valueStrings[me.nValues]) = theString;
62 me.(valueNumberIdentifiers[me.nValues]) = theIdentifier;
63 ++me.nValues;
64 }

References entity().

◆ MixedSlider_adjustDigitsForStep()

void MixedSlider_adjustDigitsForStep ( entity me,
float valueStep )

Definition at line 33 of file mixedslider.qc.

34 {
35 float newDigits = 3;
36 if (fabs(floor(valueStep * 100 + 0.5) - (valueStep * 100)) < 0.01) // about a whole number of 100ths
37 newDigits = 2;
38 if (fabs(floor(valueStep * 10 + 0.5) - (valueStep * 10)) < 0.01) // about a whole number of 10ths
39 newDigits = 1;
40 if (fabs(floor(valueStep * 1 + 0.5) - (valueStep * 1)) < 0.01) // about a whole number
41 newDigits = 0;
42 if (newDigits > me.valueDigits)
43 me.valueDigits = newDigits;
44 }
float fabs(float f)
float floor(float f)

References entity(), fabs(), and floor().

◆ MixedSlider_clearValues()

void MixedSlider_clearValues ( entity me)

Definition at line 45 of file mixedslider.qc.

46 {
47 me.nValues = 0;
48 }

References entity().

◆ MixedSlider_configureMixedSliderValues()

void MixedSlider_configureMixedSliderValues ( entity me,
float theDefault )

Definition at line 96 of file mixedslider.qc.

97 {
98 me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
99 me.setValueFromNumberIdentifier(me, theDefault, false);
100 }

References entity().

◆ MixedSlider_getNumberIdentifier()

float MixedSlider_getNumberIdentifier ( entity me)

Definition at line 25 of file mixedslider.qc.

26 {
27 return me.valueToNumberIdentifier(me, me.value);
28 }

References entity().

◆ MixedSlider_insertRange()

void MixedSlider_insertRange ( entity me,
int pos,
float theValueMin,
float theValueMax,
float theValueStep )

Definition at line 65 of file mixedslider.qc.

66 {
67 me.adjustDigitsForStep(me, theValueStep);
68 // calculate insertedCount first to prevent needing to duplicate valueStrings and valueNumberIdentifiers
69 int insertedCount = ceil((theValueMax - theValueMin) / theValueStep + 0.5);
70 me.nValues += insertedCount;
71
72 for (int i = me.nValues - 1; i > pos; --i)
73 {
74 me.(valueStrings[i]) = me.(valueStrings[i - insertedCount]);
75 me.(valueNumberIdentifiers[i]) = me.(valueNumberIdentifiers[i - insertedCount]);
76 }
77 for (float id = theValueMin; id <= theValueMax + theValueStep / 2; id += theValueStep)
78 {
79 string rounded_id_str = me.rangedIdentifierToText(me, id);
80 me.(valueStrings[pos]) = strzone(rounded_id_str);
81 me.(valueNumberIdentifiers[pos]) = stof(rounded_id_str);
82 ++pos;
83 }
84 }
float ceil(float f)

References ceil(), entity(), stof(), and strzone().

◆ MixedSlider_insertText()

void MixedSlider_insertText ( entity me,
int pos,
string theString,
float theIdentifier )

Definition at line 85 of file mixedslider.qc.

86 {
87 ++me.nValues;
88 for (int i = me.nValues - 1; i > pos; --i)
89 {
90 me.(valueStrings[i]) = me.(valueStrings[i - 1]);
91 me.(valueNumberIdentifiers[i]) = me.(valueNumberIdentifiers[i - 1]);
92 }
93 me.(valueStrings[pos]) = theString;
94 me.(valueNumberIdentifiers[pos]) = theIdentifier;
95 }

References entity().

◆ MixedSlider_rangedIdentifierToText()

string MixedSlider_rangedIdentifierToText ( entity me,
float id )

Definition at line 29 of file mixedslider.qc.

30 {
31 return formatStringSpecial(me.formatString, id, me.valueDigits);
32 }
string formatStringSpecial(string formatStr, float value, int decs)
Definition slider.qc:6

References entity(), and formatStringSpecial().

◆ MixedSlider_setValueFromNumberIdentifier()

void MixedSlider_setValueFromNumberIdentifier ( entity me,
float id,
bool allowAnim )

Definition at line 15 of file mixedslider.qc.

16 {
17 for (int i = 0; i < me.nValues; ++i)
18 if (me.valueToNumberIdentifier(me, i) == id)
19 {
20 SUPER(MixedSlider).setValue(me, i, allowAnim);
21 return;
22 }
23 SUPER(MixedSlider).setValue(me, -1, allowAnim);
24 }
#define SUPER(cname)
Definition oo.qh:231

References entity(), and SUPER.

◆ MixedSlider_valueToNumberIdentifier()

float MixedSlider_valueToNumberIdentifier ( entity me,
int val )

Definition at line 9 of file mixedslider.qc.

10 {
11 if (val >= me.nValues || val < 0)
12 return -1; // this shouldn't occur
13 return me.(valueNumberIdentifiers[val]);
14 }

References entity().

◆ MixedSlider_valueToText()

string MixedSlider_valueToText ( entity me,
int val )

Definition at line 3 of file mixedslider.qc.

4 {
5 if (val >= me.nValues || val < 0)
6 return _("Custom");
7 return me.(valueStrings[val]);
8 }

References entity().