Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_Enum.c
Go to the documentation of this file.
1 class SCR_Enum
2 {
3  //------------------------------------------------------------------------------------------------
10  static bool HasFlag(int flags, int condition)
11  {
12  return (flags & condition) == condition;
13  }
14 
15  //------------------------------------------------------------------------------------------------
22  static bool HasPartialFlag(int flags, int condition)
23  {
24  return (condition & ~flags) != condition;
25  }
26 
27  //------------------------------------------------------------------------------------------------
34  static int SetFlag(int flags, int flagToSet)
35  {
36  flags |= flagToSet;
37  return flags;
38  }
39 
40  //------------------------------------------------------------------------------------------------
47  static int RemoveFlag(int flags, int flagToRemove)
48  {
49  flags &= ~flagToRemove;
50  return flags;
51  }
52 
53  //------------------------------------------------------------------------------------------------
58  static int BitToIntArray(int bitValue, out notnull array<int> intValues)
59  {
60  intValues.Clear();
61  int count = 0;
62  int i = 1;
63  while (i > 0 && i < int.MAX)
64  {
65  if (bitValue & i)
66  {
67  intValues.Insert(i);
68  count++;
69  }
70  i *= 2;
71  }
72  return count;
73  }
74 
75  //------------------------------------------------------------------------------------------------
79  static int IntToBitArray(notnull array<int> intValues)
80  {
81  int bitValue;
82  foreach (int intValue: intValues)
83  {
84  bitValue |= intValue;
85  }
86  return bitValue;
87  }
88 
89  //------------------------------------------------------------------------------------------------
96  static string GetEnumName(typename enumType, int enumValue)
97  {
98  return typename.EnumToString(enumType, enumValue);
99  }
100 
101  //------------------------------------------------------------------------------------------------
108  static int GetEnumNames(typename enumType, out notnull array<string> stringValues)
109  {
110  stringValues.Clear();
111  array<int> values = {};
112  GetEnumValues(enumType, values);
113  for (int i, count = values.Count(); i < count; i++)
114  {
115  stringValues.Insert(typename.EnumToString(enumType, values[i]));
116  }
117  return stringValues.Count();
118  }
119 
120  //------------------------------------------------------------------------------------------------
127  static int GetEnumValues(typename enumType, out notnull array<int> intValues)
128  {
129  int val;
130  for (int i, count = enumType.GetVariableCount(); i < count; i++)
131  {
132  if (enumType.GetVariableValue(null, i, val))
133  intValues.Insert(val);
134  }
135  return intValues.Count();
136  }
137 
138  //------------------------------------------------------------------------------------------------
144  static int GetFlagValues(typename enumType)
145  {
146  int val, flags;
147  for (int i, count = enumType.GetVariableCount(); i < count; i++)
148  {
149  if (enumType.GetVariableValue(null, i, val))
150  flags |= val;
151  }
152  return flags;
153  }
154 
155  //------------------------------------------------------------------------------------------------
163  static bool GetRange(typename enumType, out int min, out int max)
164  {
165  min = int.MAX;
166  max = int.MIN;
167  int val, count = enumType.GetVariableCount();
168  for (int i = 0; i < count; i++)
169  {
170  if (enumType.GetVariableValue(null, i, val))
171  {
172  min = Math.Min(min, val);
173  max = Math.Max(max, val);
174  }
175  }
176  return count > 0;
177  }
178 
179  //------------------------------------------------------------------------------------------------
188  static ParamEnumArray GetList(typename e, ParamEnum customValue1 = null, ParamEnum customValue2 = null, ParamEnum customValue3 = null)
189  {
190  ParamEnumArray params = ParamEnumArray.FromEnum(e);
191 
192  if (customValue3)
193  params.InsertAt(customValue3, 0);
194  if (customValue2)
195  params.InsertAt(customValue2, 0);
196  if (customValue1)
197  params.InsertAt(customValue1, 0);
198 
199  return params;
200  }
201 
202  //------------------------------------------------------------------------------------------------
208  static ParamEnumArray GetList(notnull array<string> names)
209  {
210  ParamEnumArray params = {};
211  for (int i, count = names.Count(); i < count; i++)
212  {
213  params.Insert(new ParamEnum(names[i], i.ToString()));
214  }
215  return params;
216  }
217 
218  //------------------------------------------------------------------------------------------------
224  static ParamEnumArray GetFlags(notnull array<string> names)
225  {
226  ParamEnumArray params = {};
227  for (int i, count = names.Count(); i < count; i++)
228  {
229  params.Insert(new ParamEnum(names[i], Math.Pow(2, i).ToString()));
230  }
231  return params;
232  }
233 
234  //------------------------------------------------------------------------------------------------
243  static string FlagsToString(typename e, int flags, string delimiter = ", ", string noValue = "N/A")
244  {
245  if (flags <= 0)
246  return noValue;
247 
248  array<int> outValues = {};
249 
250  int count = BitToIntArray(flags, outValues);
251  if (count == 0)
252  return string.Empty;
253 
254  string result = typename.EnumToString(e, outValues[0]);
255  for (int i = 1; i < count; i++)
256  {
257  result += delimiter;
258  result += typename.EnumToString(e, outValues[i]);
259  }
260  return result;
261  }
262 
263  //------------------------------------------------------------------------------------------------
269  static string GetDefault(int enumValue)
270  {
271  return string.Format("%1", enumValue);
272  }
273 
274  //------------------------------------------------------------------------------------------------
280  static string GetDefault(typename enumType)
281  {
282  return GetDefault(GetFlagValues(enumType));
283  }
284 };
SCR_Enum
Definition: SCR_Enum.c:1
params
Configs ServerBrowser KickDialogs params
Definition: SCR_NotificationSenderComponent.c:24