Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
pluginlocalprofile.c
Go to the documentation of this file.
2{
3 ref map<string, string> m_ConfigParams;
4 ref map<string, ref TStringArray> m_ConfigParamsArray;
5 ref map<string, ref map<string, string>> m_ConfigParamsInArray;
6 ref map<string, ref array<ref map<string, string>>> m_ConfigParamsArrayInArray;
7
9 {
10 m_ConfigParams = new map<string, string>;
11 m_ConfigParamsArray = new map<string, ref TStringArray>;
12 m_ConfigParamsInArray = new map<string, ref map<string, string>>;
13 m_ConfigParamsArrayInArray = new map<string, ref array<ref map<string, string>>>;
14 }
15
16 override string GetFileName()
17 {
19 }
20
21 override void OnInit()
22 {
23 super.OnInit();
24
25 LoadConfigFile();
26 }
27
28 bool LoadConfigFile()
29 {
30 TStringArray file_content = GetFileContent();
31
32 string line_content = "";
33 string param_name = "";
34 string param_value = "";
35 TStringArray param_content;
36 int pos_sep = -1;
37
38 for ( int i = 0; i < file_content.Count(); ++i )
39 {
40 line_content = file_content.Get(i);
41
42 param_content = ParseTextToParameter(line_content);
43
44 if ( param_content.Count() == 0 )
45 {
46 PrintString(GetFileName()+"("+i.ToString()+"): Error in config -> Maybe missing '=' !");
47 return false;
48 }
49
50 param_name = param_content.Get(0);
51 param_value = param_content.Get(1);
52
53 //{{name = apple, damage = 0.5, quantity = 2},{name = banana, damage = 0.5, quantity = 2}}
54
55 TStringArray array_items = new TStringArray;
56 ParseTextToArray(param_value, array_items);
57 //{name = apple, damage = 0.5, quantity = 2}
58 //{name = banana, damage = 0.5, quantity = 2}
59
60 TStringArray array_content_raw = new TStringArray;
61
62 if ( array_items.Count() > 0 )
63 {
64 m_ConfigParamsArray.Set(param_name, array_items);
65
66 for ( int j = 0; j < array_items.Count(); ++j )
67 {
68 string array_content = array_items.Get(j);
69 //{name = apple, damage = 0.5, quantity = 2}
70
71 array_content_raw.Clear();
72
73 ParseTextToArray(array_content, array_content_raw);
74 //name = apple
75 //damage = 0.5
76 //quantity = 2
77
78 if ( array_content_raw.Count() > 0 )
79 {
80 if ( !m_ConfigParamsArrayInArray.Contains(param_name) )
81 {
82 m_ConfigParamsArrayInArray.Set(param_name, new array<ref map<string, string>>);
83 }
84
85 array<ref map<string, string>> params_in_array = m_ConfigParamsArrayInArray.Get(param_name);
87
88 for ( int k = 0; k < array_content_raw.Count(); ++k )
89 {
90 string params = array_content_raw.Get(k);
91 TStringArray p = ParseTextToParameter(params);
92
93 if ( p.Count() == 2 )
94 {
95 parameters.Set(p.Get(0), p.Get(1));
96 }
97 }
98
99 params_in_array.Insert(parameters);
100 }
101 }
102 }
103 else
104 {
105 m_ConfigParams.Set(param_name, param_value);
106 }
107 }
108
109 return true;
110 }
111
112 void SaveConfigToFile()
113 {
114 ClearFileNoSave();
115
116 int i;
117 int j;
118 int k;
119
120 string variable_name;
121 string variable_value;
122 string text;
123 TStringArray variable_array;
124
125 for ( i = 0; i < m_ConfigParams.Count(); ++i)
126 {
127 variable_name = m_ConfigParams.GetKey(i);
128 variable_value = m_ConfigParams.GetElement(i);
129
130 text = variable_name + " = " + variable_value;
131
132 AddNewLineNoSave(text);
133 }
134
135 for ( i = 0; i < m_ConfigParamsArray.Count(); ++i)
136 {
137 variable_name = m_ConfigParamsArray.GetKey(i);
138 variable_array = m_ConfigParamsArray.GetElement(i);
139
140 if ( m_ConfigParamsArrayInArray.Contains(variable_name) )
141 {
142 continue;
143 }
144
145 text = variable_name + " = {";
146
147 for ( j = 0; j < variable_array.Count(); ++j )
148 {
149 if ( j > 0 )
150 {
151 text += ",";
152 }
153
154 text += variable_array.Get(j);
155 }
156
157 text += "}";
158
159 AddNewLineNoSave(text);
160 }
161
162 for ( i = 0; i < m_ConfigParamsArrayInArray.Count(); ++i)
163 {
164 variable_name = m_ConfigParamsArrayInArray.GetKey(i);
165 array<ref map<string, string>> variable_param = m_ConfigParamsArrayInArray.GetElement(i);
166
167 text = variable_name + " = {";
168
169 if ( variable_param != NULL )
170 {
171 for ( j = 0; j < variable_param.Count(); ++j )
172 {
173 if ( j > 0 )
174 {
175 text += ",";
176 }
177 text += "{";
178
179 map<string, string> params = variable_param.Get(j);
180 for ( k = 0; k < params.Count(); ++k )
181 {
182 if ( k > 0 )
183 {
184 text += ",";
185 }
186
187 string param_name = params.GetKey(k);
188 string param_value = params.GetElement(k);
189
190 text += param_name+"="+param_value;
191 }
192
193 text += "}";
194 }
195 }
196
197 text += "}";
198
199 AddNewLineNoSave(text);
200 }
201
202 SaveFile();
203 }
204
205 bool IsTextArray(string text)
206 {
207 if ( text.Length() > 0 && text.Substring(0, 1) == "{" )
208 {
209 if ( text.Substring(text.Length() - 1, 1) == "}" )
210 {
211 return true;
212 }
213 }
214
215 return false;
216 }
217
218 TStringArray ParseTextToParameter(string text)
219 {
220 TStringArray ret = new TStringArray;
221
222 int pos = text.IndexOf("=");
223
224 if ( pos > 0 )
225 {
226 string param_name = text.Substring(0, pos).Trim();
227 int pos_end = text.Length() - pos;
228 string param_value = text.Substring(pos + 1, pos_end - 1).Trim();
229
230 int lenght = param_value.Length();
231 if (lenght > 1 && param_value.Substring(0, 1) == "\"" && param_value.Substring(lenght - 1, 1) == "\"" )
232 {
233 param_value = param_value.Substring(1, lenght - 2);
234 }
235
236 ret.Insert(param_name);
237 ret.Insert(param_value);
238 }
239
240 return ret;
241 }
242
243 TStringArray ParseTextToArray(string text, out TStringArray ret)
244 {
245 if ( !IsTextArray(text) )
246 {
247 return NULL;
248 }
249
250 text = text.Substring(1, text.Length() - 2);
251
252 int pos_array_start = text.IndexOf("{");
253 int pos_array_end = text.IndexOf("}");
254
255 if ( pos_array_start > -1 && pos_array_end > -1 )
256 {
257 while ( true )
258 {
259 string array_value = text.Substring(pos_array_start , pos_array_end - pos_array_start + 1 );
260 ret.Insert(array_value);
261
262 pos_array_start = text.IndexOfFrom(pos_array_end, "{");
263 pos_array_end = text.IndexOfFrom(pos_array_start, "}");
264
265 if ( pos_array_start == -1 )
266 {
267 break;
268 }
269 }
270 }
271 else
272 {
273 text.Split(",", ret);
274 }
275
276 return ret;
277 }
278
279 array<ref map<string, string>> ParseTextArrayToParameters(string text)
280 {
281 TStringArray array_items = new TStringArray;
282 ParseTextToArray(text, array_items);
283
285
287
288 for ( int i = 0; i < array_items.Count(); ++i )
289 {
290 string param = array_items.Get(i);
291 TStringArray t_param = ParseTextToParameter(param);
292
293 string param_name = t_param.Get(0);
294 string param_value = t_param.Get(1);
295
296 ret_param.Set(param_name, param_value);
297 }
298
299 ret.Insert(ret_param);
300
301 return ret;
302 }
303
304 string LoadParameter(string param_name)
305 {
306 string ret_value = STRING_EMPTY;
307
308 if ( m_ConfigParams.Contains(param_name) )
309 {
310 ret_value = m_ConfigParams.Get(param_name);
311 }
312
313 return ret_value;
314 }
315
316 TStringArray LoadParameterArray(string param_name)
317 {
318 if ( m_ConfigParamsArray.Contains(param_name) )
319 {
320 return m_ConfigParamsArray.Get(param_name);
321 }
322
323 return NULL;
324 }
325
326 string LoadSubParameter(string param_name, int sub_array_index, string sub_param_name)
327 {
328 string ret_value = STRING_EMPTY;
331
332 if ( m_ConfigParamsArrayInArray.Contains(param_name) )
333 {
334 sub_arrays = m_ConfigParamsArrayInArray.Get(param_name);
335
336 if ( sub_arrays != NULL )
337 {
338 if ( sub_array_index < sub_arrays.Count() )
339 {
340 param = sub_arrays.Get(sub_array_index);
341
342 if ( param.Contains(sub_param_name) )
343 {
344 ret_value = param.Get(sub_param_name);
345 }
346 }
347 }
348 }
349
350 return ret_value;
351 }
352
353 void SaveParameter(string param_name, string value, bool save_in_file = true)
354 {
355 if ( param_name == "" || param_name == "scene_editor_scene" )
356 {
357 Log("SaveParameter: "+param_name+" = "+value, "");
358 }
359
360 m_ConfigParams.Set(param_name, value);
361
362 if ( save_in_file )
363 {
364 SaveConfigToFile();
365 }
366 }
367
368 void SaveParameterArray(string param_name, TStringArray value, bool save_in_file = true)
369 {
370 m_ConfigParamsArray.Set(param_name, value);
371
372 if ( save_in_file )
373 {
374 SaveConfigToFile();
375 }
376 }
377
378 void SaveSubParameterInArray(string param_name, int sub_array_index, string sub_param_name, string sub_param_value, bool save_in_file = true)
379 {
380 array<ref map<string, string>> sub_arrays = m_ConfigParamsArrayInArray.Get(param_name);
381 map<string, string> sub_parameter = sub_arrays.Get(sub_array_index);
382 sub_parameter.Set(sub_param_name, sub_param_value);
383
384 if ( save_in_file )
385 {
386 SaveConfigToFile();
387 }
388 }
389
390 void RenameParameter(string old_name, string new_name, bool save_in_file = true)
391 {
392 if ( m_ConfigParams.Contains(old_name) )
393 {
394 m_ConfigParams.ReplaceKey(old_name, new_name);
395
396 if ( save_in_file )
397 {
398 SaveConfigToFile();
399 }
400 }
401 }
402
403 void RenameParameterArray(string old_name, string new_name, bool save_in_file = true)
404 {
405 if ( m_ConfigParamsArray.Contains(old_name) )
406 {
407 m_ConfigParamsArray.ReplaceKey(old_name, new_name);
408
409 if ( save_in_file )
410 {
411 SaveConfigToFile();
412 }
413 }
414 }
415
416 void RemoveParameter(string name, bool save_in_file = true)
417 {
418 m_ConfigParams.Remove(name);
419
420 if ( save_in_file )
421 {
422 SaveConfigToFile();
423 }
424 }
425
426 void RemoveParameterArray(string name, bool save_in_file = true)
427 {
428 m_ConfigParamsArray.Remove(name);
429
430 if ( save_in_file )
431 {
432 SaveConfigToFile();
433 }
434 }
435
436 void SetParameterString(string name, string value, bool save_in_file = true)
437 {
438 string s = "\""+value+"\"";
439 SaveParameter(name, s, save_in_file);
440 }
441
442 void SetParameterInt(string name, int value, bool save_in_file = true)
443 {
444 SaveParameter(name, value.ToString(), save_in_file);
445 }
446
447 void SetParameterFloat(string name, float value, bool save_in_file = true)
448 {
449 SaveParameter(name, value.ToString(), save_in_file);
450 }
451
452 void SetParameterBool(string name, bool value, bool save_in_file = true)
453 {
454 SaveParameter(name, value.ToString(), save_in_file);
455 }
456
457 void SetParameterArray(string name, TStringArray value, bool save_in_file = true)
458 {
459 SaveParameterArray(name, value, save_in_file);
460 }
461
462 void SetSubParameterInArray(string param_name, int sub_array_index, string sub_param_name, string sub_param_value, bool save_in_file = true)
463 {
464 SaveSubParameterInArray(param_name, sub_array_index, sub_param_name, sub_param_value, save_in_file);
465 }
466
467 string GetParameterString(string name)
468 {
469 string loaded_param = LoadParameter(name);
470 string ret_value = STRING_EMPTY;
471
472 if ( loaded_param != "" )
473 {
474 TStringArray arr = new TStringArray;
475 loaded_param.Split("\"", arr);
476 if ( arr.Count() > 0 )
477 {
478 ret_value = arr.Get(0);
479 }
480 }
481 else
482 {
483 SetParameterString(name, ret_value);
484 }
485
486 return ret_value;
487 }
488
489 int GetParameterInt(string name)
490 {
491 string loaded_param = LoadParameter(name);
492 int ret_value = 0;
493
494 if ( loaded_param != "" )
495 {
496 ret_value = loaded_param.ToInt();
497 }
498 else
499 {
500 SetParameterInt(name, ret_value);
501 }
502
503 return ret_value;
504 }
505
506 float GetParameterFloat(string name)
507 {
508 string loaded_param = LoadParameter(name);
509 float ret_value = 0;
510
511 if ( loaded_param != "" )
512 {
513 ret_value = loaded_param.ToFloat();
514 }
515 else
516 {
517 SetParameterFloat(name, ret_value);
518 }
519
520 return ret_value;
521 }
522
523 bool GetParameterBool(string name)
524 {
525 string loaded_param = LoadParameter(name);
526 bool ret_value = false;
527
528 if ( loaded_param != "" )
529 {
530 int v = loaded_param.ToInt();
531 if ( v == 1 )
532 {
533 ret_value = true;
534 }
535 }
536 else
537 {
538 SetParameterBool(name, ret_value);
539 }
540
541 return ret_value;
542 }
543
544 TStringArray GetParameterArray(string name)
545 {
546 TStringArray ret_value;
547
548 if ( m_ConfigParamsArray.Contains(name) )
549 {
550 ret_value = m_ConfigParamsArray.Get(name);
551 }
552 else
553 {
554 ret_value = new TStringArray;
555 SetParameterArray(name, ret_value);
556 }
557
558 return ret_value;
559 }
560
561 string GetSubParameterInArrayString(string param_name, int sub_array_index, string sub_param_name)
562 {
563 string loaded_param = LoadSubParameter(param_name, sub_array_index, sub_param_name);
564 string ret_value = STRING_EMPTY;
565
566 TStringArray arr = new TStringArray;
567
568 if ( loaded_param != "" )
569 {
570 arr.Clear();
571 loaded_param.Split("\"", arr);
572 ret_value = arr.Get(1);
573 }
574
575 return ret_value;
576 }
577
578 TStringArray GetAllSubParametersInArrayString(string param_name, string sub_param_name)
579 {
580 TStringArray ret_value = NULL;
581
582 if ( m_ConfigParamsArrayInArray.Contains(param_name) )
583 {
584 ret_value = new TStringArray;
585
586 array<ref map<string, string>> arrays_in_parameter = m_ConfigParamsArrayInArray.Get(param_name);
587
588 for ( int i = 0; i < arrays_in_parameter.Count(); ++i )
589 {
590 map<string, string> sub_parameter = arrays_in_parameter.Get(i);
591
592 string sub_param = STRING_EMPTY;
593
594 if ( sub_parameter.Contains(sub_param_name) )
595 {
596 sub_param = sub_parameter.Get(sub_param_name);
597 }
598
599 ret_value.Insert(sub_param);
600 }
601 }
602
603 return ret_value;
604 }
605}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
const string CFG_FILE_USER_PROFILE
Definition constants.c:241
array< string > TStringArray
Definition enscript.c:709
class array< Class T > PrintString
const string STRING_EMPTY
Definition constants.c:54
class LogTemplates Log(string message, LogTemplateID template_id=0)
Creates debug log (optional) from LogTemplate which are registred.