DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
TutorialsMenu.c
См. документацию.
1class TutorialsMenu extends UIScriptedMenu
2{
3 protected const string PATH_MOUSEKEY = "scripts/data/pagedatatutorials.json";
4 protected const string PATH_X1_OLD = "xbox/pagedatatutorials.json";
5 protected const string PATH_X1_NEW = "xbox/pagedatatutorialsalternate.json";
6 protected const string PATH_PS_OLD = "ps4/pagedatatutorials.json";
7 protected const string PATH_PS_NEW = "ps4/pagedatatutorialsalternate.json";
8
9 protected string m_BackButtonTextID;
10
13 protected ButtonWidget m_Back;
14
15 protected ImageWidget m_ControlsLayoutImage;
16 protected const int TABS_COUNT = 4;
17 protected ImageWidget m_tab_images[TABS_COUNT];
18 protected TabberUI m_TabScript;
19 protected ref TutorialKeybinds m_KeybindsTab;
20
21 //============================================
22 // Init
23 //============================================
24 override Widget Init()
25 {
26 #ifdef PLATFORM_CONSOLE
27 layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/tutorials/xbox/tutorials.layout");
28 #else
29 layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/tutorials/pc/tutorials.layout");
30 #endif
31
32 m_InfoTextLeft = layoutRoot.FindAnyWidget("InfoTextLeft");
33 m_InfoTextRight = layoutRoot.FindAnyWidget("InfoTextRight");
34
35 m_Back = ButtonWidget.Cast(layoutRoot.FindAnyWidget("back"));
36
37 layoutRoot.FindAnyWidget("Tabber").GetScript(m_TabScript);
38 m_TabScript.m_OnTabSwitch.Insert(DrawConnectingLines);
39
40 #ifdef PLATFORM_CONSOLE
41 if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
42 {
43 m_KeybindsTab = new TutorialKeybinds(layoutRoot.FindAnyWidget("Tab_6"), this);
44 m_TabScript.EnableTabControl(6, true);
45 }
46 #endif
47
48 m_tab_images[0] = ImageWidget.Cast(layoutRoot.FindAnyWidget("MovementTabBackdropImageWidget"));
49 m_tab_images[1] = ImageWidget.Cast(layoutRoot.FindAnyWidget("WeaponsAndActionsBackdropImageWidget"));
50 m_tab_images[2] = ImageWidget.Cast(layoutRoot.FindAnyWidget("InventoryTabBackdropImageWidget"));
51 m_tab_images[3] = ImageWidget.Cast(layoutRoot.FindAnyWidget("MenusTabBackdropImageWidget"));
52
55
56 PPERequesterBank.GetRequester(PPERequester_TutorialMenu).Start(new Param1<float>(0.6));
58
61
62 return layoutRoot;
63 }
64
66 {
67 m_TabScript.m_OnTabSwitch.Remove(DrawConnectingLines);
68 PPERequesterBank.GetRequester(PPERequester_TutorialMenu).Stop();
69 }
70
71 protected void OnInputPresetChanged()
72 {
73 #ifdef PLATFORM_CONSOLE
76 #endif
77 }
78
79 protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
80 {
83
84 switch (pInputDeviceType)
85 {
86 case EInputDeviceType.CONTROLLER:
87 if (mk && mkServer)
88 {
90 }
91 break;
92
93 default:
94 if (mk && mkServer)
95 {
97 }
98 break;
99 }
100
102 }
103
104 override void OnShow()
105 {
106 super.OnShow();
107
108 SetFocus(null);
109 OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
110 }
111
112 void Back()
113 {
115 }
116
117 void DrawConnectingLines(int index)
118 {
119 if (index == 6)
120 {
121 m_InfoTextLeft.Show(false);
122 m_InfoTextRight.Show(false);
123 }
124 else
125 {
126 m_InfoTextLeft.Show(true);
127 m_InfoTextRight.Show(true);
130
131 map<string, ref array<int>> button_marker_groups_unflitred = new map<string, ref array<int>>;
132 map<string, ref array<int>> button_marker_groups = new map<string, ref array<int>>;
133
134 float text_widget_pos_x, text_widget_pos_y;
135 float text_widget_width, text_widget_height;
136 float dot_pos_x, dot_pos_y;
137 float dot_width, dot_height;
138 float draw_pos_x, draw_pos_y;
139
140 CanvasWidget canvas_widget = CanvasWidget.Cast(layoutRoot.FindAnyWidget("CanvasWidget_" + index));
141 canvas_widget.Clear();
142 control_mapping_info = GetControlMappingInfo();
143
144 for (int i = 0; i < m_TabScript.GetTabCount(); i++)
145 {
146 tab_array.Insert(new array<ref JsonControlMappingInfo>);
147 for (int j = 0; j < 30; j++)
148 {
149 tab_array[i].Insert(NULL);
150 }
151 }
152
153 // insert json info to array by index, so it is sorted
154 for (i = 0; i < control_mapping_info.Count(); i++)
155 {
156 JsonControlMappingInfo info = control_mapping_info.Get(i);
157 tab_array[info.m_TabID][info.m_TextWidgetID] = info;
158 }
159
160 // create group of buttons which are connected together with line
161 for (int l = 0; l < control_mapping_info.Count(); l++)
162 {
163 JsonControlMappingInfo info1 = control_mapping_info[l];
164 string button_name = info1.m_ButtonName;
165 int text_widget_id = info1.m_TextWidgetID;
166 if (info1.m_TabID != index)
167 {
168 continue;
169 }
170 if (!button_marker_groups_unflitred.Contains(button_name))
171 {
172 button_marker_groups_unflitred.Insert(button_name, new array<int>);
173 button_marker_groups_unflitred.Get(button_name).Insert(text_widget_id);
174 }
175 else
176 {
177 button_marker_groups_unflitred.Get(button_name).Insert(text_widget_id);
178 }
179 }
180
181 // we want groups which are bigger than 1
182 for (l = 0; l < button_marker_groups_unflitred.Count(); l++)
183 {
184 if (button_marker_groups_unflitred.GetElement(l).Count() > 1)
185 {
186 string key = button_marker_groups_unflitred.GetKey(l);
187 button_marker_groups.Insert(button_marker_groups_unflitred.GetKey(l), button_marker_groups_unflitred.Get(key));
188 }
189 }
190
191 // hide all button markers
192 Widget xbox_controls_image = layoutRoot.FindAnyWidget("Markers_" + index);
193
194 Widget panel_widget;
195 Widget button_marker_widget;
196
197 for (l = 0; l < tab_array[index].Count(); l++)
198 {
199 panel_widget = layoutRoot.FindAnyWidget("PanelWidget" + l);
200 if (tab_array[index][l] != NULL)
201 {
202 TextWidget text_widget = TextWidget.Cast(panel_widget.FindAnyWidget("TextWidget" + l));
203 button_marker_widget = layoutRoot.FindAnyWidget("button_marker_" + tab_array[index][l].m_ButtonName);
204 text_widget.SetText(tab_array[index][l].m_InfoText);
205 panel_widget.Show(true);
206 panel_widget.Update();
207
208 if (!button_marker_groups.Contains(tab_array[index][l].m_ButtonName))
209 {
210 panel_widget.GetScreenPos(text_widget_pos_x, text_widget_pos_y);
211 panel_widget.GetScreenSize(text_widget_width,text_widget_height);
212
213 button_marker_widget.GetScreenPos(dot_pos_x, dot_pos_y);
214 button_marker_widget.GetScreenSize(dot_width, dot_height);
215
216 draw_pos_y = text_widget_pos_y + text_widget_height / 2;
217
218 if (l < 15)
219 {
220 draw_pos_x = text_widget_pos_x + text_widget_width - 1;
221 }
222 else
223 {
224 draw_pos_x = text_widget_pos_x;
225 }
226
227 canvas_widget.DrawLine(draw_pos_x, draw_pos_y, dot_pos_x+dot_width/2, draw_pos_y, 2, ARGBF(0.6, 1, 1, 1));
228 canvas_widget.DrawLine(dot_pos_x+dot_width/2, draw_pos_y, dot_pos_x+dot_width/2, dot_pos_y+dot_height/2, 2, ARGBF(0.6, 1, 1, 1));
229 }
230 }
231 else
232 {
233 panel_widget.Show(false);
234 }
235 panel_widget.Update();
236 }
237
238 // draw connecting lines
239 for (l = 0; l < button_marker_groups.Count(); l++)
240 {
241 text_widget_pos_x = 0;
242 text_widget_pos_y = 0;
243 text_widget_width = 0;
244 text_widget_height = 0;
245 float group_point_x = 0, group_point_y = 0;
246 float first_x = 0, first_y = 0;
247
248 ref array<int> element = button_marker_groups.GetElement(l);
249 string key_name = button_marker_groups.GetKey(l);
250 button_marker_widget = layoutRoot.FindAnyWidget("button_marker_" + key_name);
251
252 for (int g = 0; g < element.Count(); g++)
253 {
254 panel_widget = layoutRoot.FindAnyWidget("PanelWidget" + element[g]);
255
256 panel_widget.GetScreenPos(text_widget_pos_x, text_widget_pos_y);
257 panel_widget.GetScreenSize(text_widget_width, text_widget_height);
258
259 if (g == 0)
260 {
261 if (element[0] < 15)
262 {
263 first_x = text_widget_pos_x + text_widget_width +50;
264 }
265 else
266 {
267 first_x = text_widget_pos_x - 50;
268 }
269 first_y = text_widget_pos_y + text_widget_height/2;
270
271 }
272
273 group_point_x += text_widget_pos_x;
274 group_point_y += text_widget_pos_y;
275
276 if (element[0] < 15)
277 {
278 canvas_widget.DrawLine(text_widget_pos_x + text_widget_width - 1, text_widget_pos_y + text_widget_height/2, text_widget_pos_x + text_widget_width +50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
279 }
280 else
281 {
282 canvas_widget.DrawLine(text_widget_pos_x, text_widget_pos_y + text_widget_height/2, text_widget_pos_x - 50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
283 }
284 }
285
286 if (element[0] < 15)
287 {
288 group_point_x = group_point_x/element.Count() + text_widget_width + 50;
289 }
290 else
291 {
292 group_point_x = group_point_x/element.Count() - 50;
293 }
294
295 group_point_y = group_point_y/element.Count() + text_widget_height/2;
296
297 button_marker_widget.GetScreenPos(dot_pos_x, dot_pos_y);
298 button_marker_widget.GetScreenSize(dot_width, dot_height);
299
300 canvas_widget.DrawLine(group_point_x, group_point_y, dot_pos_x+dot_width/2, group_point_y, 2, ARGBF(0.6, 1, 1, 1));
301 canvas_widget.DrawLine(dot_pos_x+dot_width/2, group_point_y, dot_pos_x+dot_width/2, dot_pos_y, 2, ARGBF(0.6, 1, 1, 1));
302
303 if (element[0] < 15)
304 {
305 canvas_widget.DrawLine(first_x, first_y, text_widget_pos_x + text_widget_width +50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
306 }
307 else
308 {
309 canvas_widget.DrawLine(first_x, first_y, text_widget_pos_x - 50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
310 }
311 }
312 }
313 }
314
316 {
318 string file_path = PATH_MOUSEKEY; //remains set for PC vatiant
319 string profile_name = "";
320 GetGame().GetInput().GetProfileName(GetGame().GetInput().GetCurrentProfile(),profile_name);
321
322#ifdef PLATFORM_CONSOLE
323 if (!GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer())
324 {
325 if (profile_name == "#STR_UAPRESET_0")
326 {
327 #ifdef PLATFORM_XBOX
328 file_path = PATH_X1_OLD;
329 #else
330 file_path = PATH_PS_OLD;
331 #endif
332 }
333 else if (profile_name == "#STR_UAPRESET_1")
334 {
335 #ifdef PLATFORM_XBOX
336 file_path = PATH_X1_NEW;
337 #else
338 file_path = PATH_PS_NEW;
339 #endif
340 }
341 else
342 {
343 ErrorEx("Invalid file path!");
344 file_path = "";
345 }
346 }
347#endif
348 FileHandle file_handle = OpenFile(file_path, FileMode.READ);
350
351 string js_error = "";
352 string line_content = "";
353 string content = "";
354 if (file_handle)
355 {
356 while (FGets(file_handle, line_content) >= 0)
357 {
358 content += line_content;
359 }
360 CloseFile(file_handle);
361
362 if (js.ReadFromString(control_mapping_info, content, js_error))
363 {
364 return control_mapping_info;
365 }
366 else
367 {
368 ErrorEx("JSON ERROR => [TutorialsMenu]: " + js_error);
369 }
370 }
371 else
372 {
373 ErrorEx("FILEHANDLE ERROR => [TutorialsMenu]: " + js_error);
374 }
375
376 return control_mapping_info;
377 }
378
379 override void Update(float timeslice)
380 {
381 if (GetUApi().GetInputByID(UAUITabLeft).LocalPress())
382 {
383 m_TabScript.PreviousTab();
384 }
385
386 //RIGHT BUMPER - TAB RIGHT
387 if (GetUApi().GetInputByID(UAUITabRight).LocalPress())
388 {
389 m_TabScript.NextTab();
390 }
391
392 if (GetUApi().GetInputByID(UAUIBack).LocalPress())
393 {
394 Back();
395 }
396 }
397
399 protected void LoadFooterButtonTexts()
400 {
401 TextWidget uiBackText = TextWidget.Cast(layoutRoot.FindAnyWidget("BackText"));
402
403 if (uiBackText)
404 {
405 uiBackText.SetText(m_BackButtonTextID);
406 }
407 }
408
409 protected void LoadTextStrings()
410 {
411 #ifdef PLATFORM_PS4
412 m_BackButtonTextID = "ps4_ingame_menu_back";
413 #else
414 m_BackButtonTextID = "STR_rootFrame_toolbar_bg_ConsoleToolbar_Back_BackText0";
415 #endif
416 }
417
418 override bool OnClick(Widget w, int x, int y, int button)
419 {
420 if (button == MouseState.LEFT)
421 {
422 if (w == m_Back)
423 {
424 Back();
425 return true;
426 }
427 }
428 return false;
429 }
430
431 override bool OnMouseEnter(Widget w, int x, int y)
432 {
433 if (IsFocusable(w))
434 {
436 return true;
437 }
438 return false;
439 }
440
441 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
442 {
443 if (IsFocusable(w))
444 {
445 ColorNormal(w);
446 return true;
447 }
448 return false;
449 }
450
451 override bool OnFocus(Widget w, int x, int y)
452 {
453 if (IsFocusable(w))
454 {
456 return true;
457 }
458 return false;
459 }
460
461 override bool OnFocusLost(Widget w, int x, int y)
462 {
463 if (IsFocusable(w))
464 {
465 ColorNormal(w);
466 return true;
467 }
468 return false;
469 }
470
472 {
473 return (w && w == m_Back);
474 }
475
476 //Coloring functions (Until WidgetStyles are useful)
478 {
479 if (!w)
480 return;
481
482 int color_pnl = ARGB(255, 0, 0, 0);
483 int color_lbl = ARGB(255, 255, 0, 0);
484 int color_img = ARGB(255, 200, 0, 0);
485
486 #ifdef PLATFORM_CONSOLE
487 color_pnl = ARGB(255, 200, 0, 0);
488 color_lbl = ARGB(255, 255, 255, 255);
489 #endif
490
491 ButtonSetColor(w, color_pnl);
492 ButtonSetTextColor(w, color_lbl);
493 ImagenSetColor(w, color_img);
494 }
495
497 {
498 if (!w)
499 return;
500
501 int color_pnl = ARGB(0, 0, 0, 0);
502 int color_lbl = ARGB(255, 255, 255, 255);
503 int color_img = ARGB(255, 255, 255, 255);
504
505 ButtonSetColor(w, color_pnl);
506 ButtonSetTextColor(w, color_lbl);
507 ImagenSetColor(w, color_img);
508 }
509
510 void ButtonSetText(Widget w, string text)
511 {
512 if (!w)
513 return;
514
515 TextWidget label = TextWidget.Cast(w.FindWidget(w.GetName() + "_label"));
516
517 if (label)
518 {
519 label.SetText(text);
520 }
521
522 }
523
524 void ButtonSetColor(Widget w, int color)
525 {
526 if (!w)
527 return;
528
529 Widget panel = w.FindWidget(w.GetName() + "_panel");
530
531 if (panel)
532 {
533 panel.SetColor(color);
534 }
535 }
536
537 void ImagenSetColor(Widget w, int color)
538 {
539 if (!w)
540 return;
541
542 Widget panel = w.FindWidget(w.GetName() + "_image");
543
544 if (panel)
545 {
546 panel.SetColor(color);
547 }
548 }
549
550 void ButtonSetTextColor(Widget w, int color)
551 {
552 if (!w)
553 return;
554
555 TextWidget label = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
556 TextWidget text = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
557 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
558
559 if (label)
560 {
561 label.SetColor(color);
562 }
563
564 if (text)
565 {
566 text.SetColor(color);
567 }
568
569 if (text2)
570 {
571 text2.SetColor(color);
572 }
573 }
574
575 protected void UpdateControlsElements()
576 {
577 #ifdef PLATFORM_CONSOLE
578 RichTextWidget toolbar_text = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ContextToolbarText"));
579 if (toolbar_text)
580 {
581 string text = string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "#STR_settings_menu_root_toolbar_bg_ConsoleToolbar_Back_BackText0", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
582 toolbar_text.SetText(text);
583 }
584
585 RichTextWidget toolbar_b2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon0"));
586 toolbar_b2.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
587 #endif
588 }
589
591 {
592 bool toolbarShow = false;
593 #ifdef PLATFORM_CONSOLE
595 #endif
596
597 #ifdef PLATFORM_CONSOLE
598 layoutRoot.FindAnyWidget("toolbar_bg").Show(toolbarShow);
599 #endif
600 layoutRoot.FindAnyWidget("play_panel_root").Show(!toolbarShow);
601 }
602}
map
Определения ControlsXboxNew.c:4
Icon x
Icon y
proto native UAInputAPI GetUApi()
proto native UIManager GetUIManager()
proto native WorkspaceWidget GetWorkspace()
proto native Input GetInput()
proto native Mission GetMission()
proto native EInputDeviceType GetCurrentInputDevice()
proto int GetProfileName(int profile_index, out string name)
gets profile by index
proto native bool IsEnabledMouseAndKeyboard()
proto native bool IsEnabledMouseAndKeyboardEvenOnServer()
static string GetRichtextButtonIconFromInputAction(notnull UAInput pInput, string pLocalizedDescription, int pInputDeviceType=EUAINPUT_DEVICE_CONTROLLER, float pScale=ICON_SCALE_NORMAL, bool pVertical=false)
Определения InputUtils.c:167
static const float ICON_SCALE_TOOLBAR
Определения InputUtils.c:15
Определения InputUtils.c:2
int m_TabID
Определения ControlsXbox.c:7
int m_TextWidgetID
Определения ControlsXbox.c:8
string m_ButtonName
Определения ControlsXbox.c:9
proto bool ReadFromString(void variable_in, string jsonString, out string error)
Json string deserialization to script variable.
Class for sending RPC over network.
Определения gameplay.c:50
ScriptInvoker GetOnInputDeviceChanged()
Определения gameplay.c:851
ScriptInvoker GetOnInputPresetChanged()
Определения gameplay.c:859
Определения gameplay.c:317
proto bool Insert(func fn, int flags=EScriptInvokerInsertFlags.IMMEDIATE)
insert method to list
Определения EnWidgets.c:220
void ShowUICursor(bool visible)
Определения UIManager.c:244
bool Back()
Close top window on windows stack, returns true when any window is closed.
Определения UIManager.c:62
void UpdateControlsElementVisibility()
Определения ControlsXboxNew.c:540
void LoadFooterButtonTexts()
Initial texts load for the footer buttons.
Определения TutorialsMenu.c:399
override bool OnMouseEnter(Widget w, int x, int y)
Определения TutorialsMenu.c:431
override void OnShow()
Определения TutorialsMenu.c:104
const string PATH_PS_OLD
Определения TutorialsMenu.c:6
override bool OnFocus(Widget w, int x, int y)
Определения TutorialsMenu.c:451
ref TutorialKeybinds m_KeybindsTab
Определения TutorialsMenu.c:19
override void Update(float timeslice)
Определения TutorialsMenu.c:379
TabberUI m_TabScript
Определения ControlsXboxNew.c:40
const string PATH_MOUSEKEY
Определения TutorialsMenu.c:3
ImageWidget m_tab_images[TABS_COUNT]
Определения TutorialsMenu.c:17
string m_BackButtonTextID
Определения ControlsXboxNew.c:30
Widget m_InfoTextRight
Определения TutorialsMenu.c:12
void ColorHighlight(Widget w)
Определения ControlsXboxNew.c:446
bool IsFocusable(Widget w)
Определения CameraToolsMenu.c:960
const string PATH_X1_NEW
Определения TutorialsMenu.c:5
void LoadTextStrings()
Set correct bottom button texts based on platform (ps4 vs xbox texts)
Определения TutorialsMenu.c:409
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
Определения ControlsXboxNew.c:71
void ~TutorialsMenu()
Определения TutorialsMenu.c:65
void ButtonSetText(Widget w, string text)
Определения TutorialsMenu.c:510
const string PATH_PS_NEW
Определения TutorialsMenu.c:7
ImageWidget m_ControlsLayoutImage
Определения ControlsXboxNew.c:36
override bool OnFocusLost(Widget w, int x, int y)
Определения TutorialsMenu.c:461
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Определения TutorialsMenu.c:441
void Back()
Определения TutorialsMenu.c:112
void DrawConnectingLines(int index)
Определения ControlsXboxNew.c:130
Widget m_InfoTextLeft
Определения TutorialsMenu.c:11
const int TABS_COUNT
Определения TutorialsMenu.c:16
void UpdateControlsElements()
Определения ControlsXboxNew.c:527
void ButtonSetTextColor(Widget w, int color)
Определения ControlsXboxNew.c:502
ButtonWidget m_Back
Определения ControlsXboxNew.c:35
override Widget Init()
Определения TutorialsMenu.c:24
override bool OnClick(Widget w, int x, int y, int button)
Определения TutorialsMenu.c:418
void ImagenSetColor(Widget w, int color)
Определения MainMenu.c:686
void ButtonSetColor(Widget w, int color)
Определения ControlsXboxNew.c:489
const string PATH_X1_OLD
Определения TutorialsMenu.c:4
void ColorNormal(Widget w)
Определения ControlsXboxNew.c:463
array< ref JsonControlMappingInfo > GetControlMappingInfo()
Определения TutorialsMenu.c:315
void OnInputPresetChanged()
Определения ControlsXboxNew.c:63
Определения DayZGame.c:64
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
enum ShapeType ErrorEx
FileMode
Определения EnSystem.c:383
proto void CloseFile(FileHandle file)
Close the File.
proto int FGets(FileHandle file, string var)
Get line from file, every next call of this function returns next line.
proto FileHandle OpenFile(string name, FileMode mode)
Opens File.
int[] FileHandle
Определения EnSystem.c:390
MouseState
Определения EnSystem.c:311
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.
proto native void SetFocus(Widget w)
proto native void DrawLine(float x1, float y1, float x2, float y2, float width, int color)
EInputDeviceType
Определения input.c:3
int ARGB(int a, int r, int g, int b)
Определения proto.c:322
int ARGBF(float fa, float fr, float fg, float fb)
Converts <0.0, 1.0> ARGB into color.
Определения proto.c:332