Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
charactercreationmenu.c
Go to the documentation of this file.
1class CharacterCreationMenu extends UIScriptedMenu
2{
3 #ifdef PLATFORM_CONSOLE
4 DayZIntroSceneXbox m_Scene;
5 protected bool m_CharacterSaved;
6 #else
7 DayZIntroScenePC m_Scene;
8 #endif
9
10 const int TOOLTIP_ID_SAVE = 1;
11 const int TOOLTIP_ID_APPLY = 2;
12
13 protected Widget m_CharacterRotationFrame;
14 protected Widget m_Apply;
15 protected Widget m_Save;
16 protected Widget m_RandomizeCharacter;
17 protected Widget m_BackButton;
18 protected Widget m_PlayedCharacterInfo;
19 protected TextWidget m_Version;
20 protected Widget m_DetailsRoot; //tooltips
21 protected TextWidget m_DetailsLabel;
23 protected TextWidget m_CharacterHeaderText;
24
25 protected ref OptionSelectorEditbox m_NameSelector;
31
33
35
37 {
38 MissionMainMenu mission = MissionMainMenu.Cast(GetGame().GetMission());
39
40 #ifdef PLATFORM_CONSOLE
41 m_Scene = mission.GetIntroSceneXbox();
42 #else
43 m_Scene = mission.GetIntroScenePC();
44 #endif
45
46 m_Scene.ResetIntroCamera();
47 }
48
50 {
51 return m_Scene.GetIntroCharacter().GetCharacterObj();
52 }
53
54 protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
55 {
56 #ifdef PLATFORM_CONSOLE
57 switch (pInputDeviceType)
58 {
59 case EInputDeviceType.CONTROLLER:
60 if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
61 {
62 GetGame().GetUIManager().ShowUICursor(false);
63 }
64 CheckNewOptions(); //TODO - pick only the 'focus' bit
65 break;
66
67 default:
68 if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
69 {
70 GetGame().GetUIManager().ShowUICursor(true);
71 }
72 break;
73 }
74
76 #endif
77 }
78
79 override Widget Init()
80 {
81 #ifdef PLATFORM_CONSOLE
82 layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/character_creation/xbox/character_creation.layout");
83 m_CharacterSaved = false;
84 #else
85 layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/character_creation/pc/character_creation.layout");
86 #endif
87
88 m_CharacterRotationFrame = layoutRoot.FindAnyWidget("character_rotation_frame");
89 m_Apply = layoutRoot.FindAnyWidget("apply");
90 m_Save = layoutRoot.FindAnyWidget("save");
91 m_RandomizeCharacter = layoutRoot.FindAnyWidget("randomize_character");
92 m_BackButton = layoutRoot.FindAnyWidget("back");
93 m_Version = TextWidget.Cast(layoutRoot.FindAnyWidget("version"));
94 m_DetailsRoot = layoutRoot.FindAnyWidget("menu_details_tooltip");
95 m_DetailsLabel = TextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_label"));
96 m_DetailsText = RichTextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_tooltip_content"));
97 m_CharacterHeaderText = TextWidget.Cast(layoutRoot.FindAnyWidget("char_header_text"));
98 m_PlayedCharacterInfo = layoutRoot.FindAnyWidget("played_char_info");
99
100 string version;
101 GetGame().GetVersion(version);
102 #ifdef PLATFORM_CONSOLE
103 version = "#main_menu_version" + " " + version + " (" + g_Game.GetDatabaseID() + ")";
104 #else
105 version = "#main_menu_version" + " " + version;
106 #endif
107 m_Version.SetText(version);
108
109 if (m_Scene && m_Scene.GetIntroCharacter())
110 {
111 m_OriginalCharacterID = m_Scene.GetIntroCharacter().GetCharacterID();
112 }
113
114 m_NameSelector = new OptionSelectorEditbox(layoutRoot.FindAnyWidget("character_name_setting_option"), m_Scene.GetIntroCharacter().GetCharacterName(), null, false);
115 m_GenderSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_gender_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharGenderList());
116 if (m_Scene.GetIntroCharacter().IsCharacterFemale())
117 {
118 m_GenderSelector.SetValue("Female");
119 m_SkinSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_head_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharList(ECharGender.Female));
120 }
121 else
122 {
123 m_GenderSelector.SetValue("Male");
124 m_SkinSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_head_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharList(ECharGender.Male));
125 }
126
127 m_TopSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_top_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.BODY));
128 m_BottomSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_bottom_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.LEGS));
129 m_ShoesSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_shoes_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.FEET));
130
131 m_GenderSelector.ShowNavigationButtons(true);
132 m_SkinSelector.ShowNavigationButtons(true);
133 m_TopSelector.ShowNavigationButtons(true);
134 m_BottomSelector.ShowNavigationButtons(true);
135 m_ShoesSelector.ShowNavigationButtons(true);
136
137 if (!m_MultiOptionSelectors)
138 {
139 m_MultiOptionSelectors = new map<Widget, OptionSelectorMultistateCharacterMenu>;
140 m_MultiOptionSelectors.Insert(layoutRoot.FindAnyWidget("character_gender_button"), m_GenderSelector);
141 m_MultiOptionSelectors.Insert(layoutRoot.FindAnyWidget("character_head_button"), m_SkinSelector);
142 m_MultiOptionSelectors.Insert(layoutRoot.FindAnyWidget("character_top_button"), m_TopSelector);
143 m_MultiOptionSelectors.Insert(layoutRoot.FindAnyWidget("character_bottom_button"), m_BottomSelector);
144 m_MultiOptionSelectors.Insert(layoutRoot.FindAnyWidget("character_shoes_button"), m_ShoesSelector);
145 }
146
147 PlayerBase scene_char = GetPlayerObj();
148 if (scene_char)
149 {
150 Object obj = scene_char.GetInventory().FindAttachment(InventorySlots.BODY);
151 if (obj)
152 m_TopSelector.SetValue(obj.GetType(), false);
153
154 obj = scene_char.GetInventory().FindAttachment(InventorySlots.LEGS);
155 if (obj)
156 m_BottomSelector.SetValue(obj.GetType(), false);
157
158 obj = scene_char.GetInventory().FindAttachment(InventorySlots.FEET);
159 if (obj)
160 m_ShoesSelector.SetValue(obj.GetType(), false);
161
162 m_SkinSelector.SetValue(scene_char.GetType());
163 }
164
165 m_GenderSelector.m_OptionChanged.Insert(GenderChanged);
166 m_SkinSelector.m_OptionChanged.Insert(SkinChanged);
167 m_TopSelector.m_OptionChanged.Insert(TopChanged);
168 m_BottomSelector.m_OptionChanged.Insert(BottomChanged);
169 m_ShoesSelector.m_OptionChanged.Insert(ShoesChanged);
170
171 Refresh();
172 SetCharacter();
174
175 GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
176
177 return layoutRoot;
178 }
179
181 {
182 m_GenderSelector.m_OptionChanged.Remove(GenderChanged);
183 m_SkinSelector.m_OptionChanged.Remove(SkinChanged);
184 m_TopSelector.m_OptionChanged.Remove(TopChanged);
185 m_BottomSelector.m_OptionChanged.Remove(BottomChanged);
186 m_ShoesSelector.m_OptionChanged.Remove(ShoesChanged);
187 }
188
189 //Button Events
191 void Apply()
192 {
193 if (!m_Scene.GetIntroCharacter().IsDefaultCharacter())
194 {
195 string name = m_NameSelector.GetValue();
196 if (name == "")
197 name = GameConstants.DEFAULT_CHARACTER_NAME;
198
199 m_Scene.GetIntroCharacter().SaveCharName(name);
200 }
201
202 MainMenu menu_main = MainMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_MAIN));
203 if (menu_main)
204 {
205 menu_main.OnChangeCharacter(false);
206 }
207 GetGame().GetUIManager().Back();
208 }
209
211 void Save()
212 {
213 if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
214 {
215 string name = m_NameSelector.GetValue();
216 if (name == "")
217 name = GameConstants.DEFAULT_CHARACTER_NAME;
218
219 m_Scene.GetIntroCharacter().SaveCharName(name);
220 m_Scene.GetIntroCharacter().SaveDefaultCharacter();
221 m_Scene.GetIntroCharacter().SetToDefaultCharacter();
222 SetCharacterSaved(true);
223 }
224 }
225
226 void Back()
227 {
228 //bring back DefaultCharacter, if it exists (it should), or a previously played one.
229 GetGame().GetMenuData().RequestGetDefaultCharacterData();
230 #ifdef PLATFORM_CONSOLE
231 if (m_OriginalCharacterID != GameConstants.DEFAULT_CHARACTER_MENU_ID && m_CharacterSaved)
232 {
233 m_OriginalCharacterID = GameConstants.DEFAULT_CHARACTER_MENU_ID;
234 }
235 #endif
236 m_Scene.GetIntroCharacter().SetCharacterID(m_OriginalCharacterID);
237 m_Scene.GetIntroCharacter().CreateNewCharacterById(m_Scene.GetIntroCharacter().GetCharacterID());
238 GetGame().GetUIManager().Back();
239 }
240
242 {
243 if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
244 {
245 GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
246 }
247 }
248
250 {
251 m_Scene.GetIntroCharacter().SetToDefaultCharacter();
252
253 // make random selection
254 m_Scene.GetIntroCharacter().SetCharacterGender(Math.RandomInt(0, 2));
255
256 if (m_Scene.GetIntroCharacter().IsCharacterFemale())
257 {
258 m_GenderSelector.SetValue("Female");
259 m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(ECharGender.Female), 0);
260 m_SkinSelector.SetRandomValue();
261 }
262 else
263 {
264 m_GenderSelector.SetValue("Male");
265 m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(ECharGender.Male), 0);
266 m_SkinSelector.SetRandomValue();
267 }
268
269 GetGame().GetMenuDefaultCharacterData().GenerateRandomEquip();
270
271 m_TopSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.BODY),false);
272 m_BottomSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.LEGS),false);
273 m_ShoesSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.FEET),false);
274
275 Refresh();
276 SetCharacter();
277
279 }
280
281 //Selector Events
283 {
284 ECharGender gender = ECharGender.Male;
285
286 if (m_GenderSelector.GetStringValue() == "Female")
287 {
288 gender = ECharGender.Female;
289 }
290
291 m_Scene.GetIntroCharacter().SetCharacterGender(gender);
292
293 m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(gender) , 0);
294 m_SkinSelector.SetRandomValue();
295 SetCharacterSaved(false);
296 }
297
299 {
300 m_Scene.GetIntroCharacter().CreateNewCharacterByName(m_SkinSelector.GetStringValue(), false);
301 SetCharacterSaved(false);
302 }
303
305 {
306 GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.BODY,m_TopSelector.GetStringValue());
307 GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
308 SetCharacterSaved(false);
309 }
310
312 {
313 GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.LEGS,m_BottomSelector.GetStringValue());
314 GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
315 SetCharacterSaved(false);
316 }
317
319 {
320 GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.FEET,m_ShoesSelector.GetStringValue());
321 GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
322 SetCharacterSaved(false);
323 }
324
325 override bool OnKeyPress(Widget w, int x, int y, int key)
326 {
327 super.OnKeyPress(w, x, y, key);
328 return false;
329 }
330
331 override bool OnClick(Widget w, int x, int y, int button)
332 {
333 if (w == m_Apply)
334 {
335 Apply();
336 return true;
337 }
338 else if (w == m_Save)
339 {
340 Save();
341 GetGame().GetUIManager().Back();
342 return true;
343 }
344 else if (w == m_RandomizeCharacter)
345 {
347 return true;
348 }
349 else if (w == m_BackButton)
350 {
351 Back();
352 return true;
353 }
354 return false;
355 }
356
357 override bool OnMouseButtonDown(Widget w, int x, int y, int button)
358 {
359 #ifndef PLATFORM_CONSOLE
360 if (w == m_CharacterRotationFrame)
361 {
362 if (m_Scene)
364 return true;
365 }
366 #endif
367 return false;
368 }
369
370 override bool OnMouseButtonUp(Widget w, int x, int y, int button)
371 {
372 #ifndef PLATFORM_CONSOLE
373 if (m_Scene)
375 #endif
376 return false;
377 }
378
379 override bool OnMouseEnter(Widget w, int x, int y)
380 {
381 string tooltip_header = "";
382 string tooltip_text = "";
384 switch (w.GetUserID())
385 {
386 case TOOLTIP_ID_APPLY:
387 tooltip_header = "#layout_main_menu_rename";
388 tooltip_text = "#layout_character_creation_apply_tooltip";
389 break;
390
391 case TOOLTIP_ID_SAVE:
392 tooltip_header = "#layout_character_creation_save_character_alt";
393 tooltip_text = "#layout_character_creation_save_tooltip";
394 break;
395 }
396 SetTooltipTexts(w, tooltip_header, tooltip_text);
397 return true;
398 }
399
400 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
401 {
402 ColorNormal(w);
403 SetFocus(null);
404
405 return true;
406 }
407
408 override bool OnFocus(Widget w, int x, int y)
409 {
410 string tooltip_header = "";
411 string tooltip_text = "";
412 if (IsFocusable(w))
413 {
415 switch (w.GetUserID())
416 {
417 case TOOLTIP_ID_APPLY:
418 tooltip_header = "#layout_main_menu_rename";
419 tooltip_text = "#layout_character_creation_apply_tooltip";
420 break;
421
422 case TOOLTIP_ID_SAVE:
423 tooltip_header = "#layout_character_creation_save_character_alt";
424 tooltip_text = "#layout_character_creation_save_tooltip";
425 break;
426 }
427 SetTooltipTexts(w, tooltip_header, tooltip_text);
428 return true;
429 }
431 return false;
432 }
433
434 override bool OnFocusLost(Widget w, int x, int y)
435 {
436 if (IsFocusable(w))
437 {
438 ColorNormal(w);
439 return true;
440 }
441 return false;
442 }
443
444 bool IsFocusable(Widget w)
445 {
446 if (w)
447 {
448 return (w == m_Apply || w == m_Save || w == m_RandomizeCharacter || w == m_BackButton);
449 }
450 return false;
451 }
452
453 void SetTooltipTexts(Widget w, string header = "", string desc = "")
454 {
455 #ifndef PLATFORM_CONSOLE
456 bool show = header != "" && desc != "";
457 m_DetailsRoot.Show(show);
458 m_DetailsLabel.SetText(header);
459 m_DetailsText.SetText(desc);
460
461 //moves the widget to parent, setting is relative to widget alignment, case-specific implementation (getter missing!!!)
462 if (show)
463 {
464 float parent_pos_x, parent_pos_y;
465 float parent_size_x, parent_size_y;
466 float layout_size_x, layout_size_y;
467
468 w.GetScreenPos(parent_pos_x,parent_pos_y);
469 w.GetScreenSize(parent_size_x,parent_size_y);
470 layoutRoot.GetScreenSize(layout_size_x,layout_size_y);
471
472 float set_x = layout_size_x - parent_pos_x;
473 float set_y = layout_size_y - parent_pos_y - parent_size_y;
474 m_DetailsRoot.SetPos(set_x,set_y,true);
475 }
476
477 m_DetailsText.Update();
478 m_DetailsLabel.Update();
479 m_DetailsRoot.Update();
480 #endif
481 }
482
484 {
485 bool show_widgets = m_Scene.GetIntroCharacter().IsDefaultCharacter();
486 layoutRoot.FindAnyWidget("character_gender_button").Show(show_widgets);
487 layoutRoot.FindAnyWidget("character_head_button").Show(show_widgets);
488 layoutRoot.FindAnyWidget("character_top_button").Show(show_widgets);
489 layoutRoot.FindAnyWidget("character_bottom_button").Show(show_widgets);
490 layoutRoot.FindAnyWidget("character_shoes_button").Show(show_widgets);
491
492 if (show_widgets)
493 {
494 m_GenderSelector.Focus();
495 }
496 else
497 {
498 SetFocus(m_RandomizeCharacter);
499 }
500 }
501
502 override void OnShow()
503 {
504#ifdef PLATFORM_CONSOLE
505 m_GenderSelector.Focus();
506 OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
507#endif
509 }
510
511 override void Refresh()
512 {
513 string name;
514 #ifdef PLATFORM_CONSOLE
515 if (GetGame().GetUserManager() && GetGame().GetUserManager().GetSelectedUser())
516 {
517 name = GetGame().GetUserManager().GetSelectedUser().GetName();
518 if (name.LengthUtf8() > 16)
519 {
520 name = name.SubstringUtf8(0, 16);
521 name += "...";
522 }
523 }
524 #else
525 name = m_Scene.GetIntroCharacter().GetCharacterName();
526 if (name == "")
527 name = GameConstants.DEFAULT_CHARACTER_NAME;
528 #endif
529
530 m_NameSelector.SetValue(name);
531
532 string version;
533 GetGame().GetVersion(version);
534 #ifdef PLATFORM_CONSOLE
535 version = "#main_menu_version" + " " + version + " (" + g_Game.GetDatabaseID() + ")";
536
537 m_Apply.Show(m_CharacterSaved || !m_Scene.GetIntroCharacter().IsDefaultCharacter());
538 m_Save.Show(!m_CharacterSaved && m_Scene.GetIntroCharacter().IsDefaultCharacter());
539 #else
540 version = "#main_menu_version" + " " + version;
541 m_Apply.Show(!m_Scene.GetIntroCharacter().IsDefaultCharacter());
542 m_Save.Show(m_Scene.GetIntroCharacter().IsDefaultCharacter());
543 #endif
544 m_PlayedCharacterInfo.Show(!m_Scene.GetIntroCharacter().IsDefaultCharacter());
545
546 if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
547 {
548 m_CharacterHeaderText.SetText("#character_menu_header");
549 }
550 else
551 {
552 m_CharacterHeaderText.SetText("#server_browser_prev_play_filter");
553 }
554
555 m_Version.SetText(version);
556
557 #ifdef PLATFORM_CONSOLE
560 #endif
561 }
562
563 override void Update(float timeslice)
564 {
565 if (GetUApi().GetInputByID(UAUIBack).LocalPress())
566 {
567 Back();
568 }
569
570 if (GetUApi().GetInputByID(UAUICtrlX).LocalPress())
571 {
573 }
574
575 if (GetUApi().GetInputByID(UAUIRight).LocalPress())
576 {
577 NextOption();
578 }
579
580 if (GetUApi().GetInputByID(UAUILeft).LocalPress())
581 {
583 }
584
585 #ifdef PLATFORM_CONSOLE
586 if (GetUApi().GetInputByID(UAUICtrlY).LocalPress())
587 {
588 if (m_Scene.GetIntroCharacter().IsDefaultCharacter() && !m_CharacterSaved)
589 {
590 Save();
591 }
592 }
593 #endif
594 }
595
596 protected void NextOption()
597 {
598 Widget w = GetFocus();
599 if (!w)
600 return;
601
602 OptionSelectorMultistateCharacterMenu optionSelector = m_MultiOptionSelectors[w];
603 if (optionSelector)
604 optionSelector.SetNextOption();
605 }
606
607 protected void PreviousOption()
608 {
609 Widget w = GetFocus();
610 if (!w)
611 return;
612
613 OptionSelectorMultistateCharacterMenu optionSelector = m_MultiOptionSelectors[w];
614 if (optionSelector)
615 optionSelector.SetPrevOption();
616 }
617
618 override void OnHide()
619 {
620 }
621
622 //Coloring functions (Until WidgetStyles are useful)
623 void ColorHighlight(Widget w)
624 {
625 if (w.IsInherited(ButtonWidget))
626 {
627 ButtonWidget button = ButtonWidget.Cast(w);
628 button.SetTextColor(ARGB(255, 200, 0, 0));
629 }
630
631 w.SetColor(ARGB(255, 0, 0, 0));
632
633 TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
634 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
635 TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
636 ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
637 Widget option = Widget.Cast(w.FindAnyWidget(w.GetName() + "_option_wrapper"));
638 Widget option_label = w.FindAnyWidget("option_label");
639
640 if (text1)
641 {
642 text1.SetColor(ARGB(255, 255, 0, 0));
643 }
644
645 if (text2)
646 {
647 text2.SetColor(ARGB(255, 255, 0, 0));
648 }
649
650 if (text3)
651 {
652 text3.SetColor(ARGB(255, 255, 0, 0));
653 w.SetAlpha(1);
654 }
655
656 if (image)
657 {
658 image.SetColor(ARGB(255, 200, 0, 0));
659 }
660
661 if (option)
662 {
663 option.SetColor(ARGB(255, 255, 0, 0));
664 }
665
666 #ifndef PLATFORM_CONSOLE
667 if (option_label)
668 {
669 option_label.SetColor(ARGB(255, 255, 0, 0));
670 }
671 #endif
672 }
673
674 void ColorNormal(Widget w)
675 {
676 if (w.IsInherited(ButtonWidget))
677 {
678 ButtonWidget button = ButtonWidget.Cast(w);
679 button.SetTextColor(ColorManager.COLOR_NORMAL_TEXT);
680 }
681
682 TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
683 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
684 TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
685 ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
686 Widget option = w.FindAnyWidget(w.GetName() + "_option_wrapper");
687 Widget option_label = w.FindAnyWidget("option_label");
688
689 if (text1)
690 {
691 text1.SetColor(ColorManager.COLOR_NORMAL_TEXT);
692 }
693
694 if (text2)
695 {
696 text2.SetColor(ColorManager.COLOR_NORMAL_TEXT);
697 }
698
699 if (text3)
700 {
701 text3.SetColor(ColorManager.COLOR_NORMAL_TEXT);
702 w.SetAlpha(0);
703 }
704
705 if (image)
706 {
707 image.SetColor(ColorManager.COLOR_NORMAL_TEXT);
708 }
709
710 if (option)
711 {
712 option.SetColor(ARGB(150, 255, 255, 255));
713 }
714
715 #ifndef PLATFORM_CONSOLE
716 if (option_label)
717 {
718 option_label.SetColor(ColorManager.COLOR_NORMAL_TEXT);
719 }
720 #endif
721 }
722
723 void ColorDisable(Widget w)
724 {
725 #ifndef PLATFORM_CONSOLE
726 SetFocus(null);
727 #endif
728
729 if (w)
730 {
731 ButtonWidget button = ButtonWidget.Cast(w);
732 if (button)
733 {
734 button.SetTextColor(ColorManager.COLOR_DISABLED_TEXT);
735 }
736 }
737
738 TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
739 TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
740 TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
741 ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
742 Widget option = Widget.Cast(w.FindAnyWidget(w.GetName() + "_option_wrapper"));
743 Widget option_label = w.FindAnyWidget("option_label");
744
745 if (text1)
746 {
747 text1.SetColor(ColorManager.COLOR_DISABLED_TEXT);
748 }
749
750 if (text2)
751 {
752 text2.SetColor(ColorManager.COLOR_DISABLED_TEXT);
753 }
754
755 if (text3)
756 {
757 text3.SetColor(ColorManager.COLOR_DISABLED_TEXT);
758 w.SetAlpha(1);
759 }
760
761 if (image)
762 {
763 image.SetColor(ColorManager.COLOR_DISABLED_TEXT);
764 }
765
766 if (option)
767 {
768 option.SetColor(ColorManager.COLOR_DISABLED_TEXT);
769 }
770
771 #ifndef PLATFORM_CONSOLE
772 if (option_label)
773 {
774 option_label.SetColor(ColorManager.COLOR_DISABLED_TEXT);
775 }
776 #endif
777 }
778
779 void SetCharacterSaved(bool state)
780 {
781 #ifdef PLATFORM_CONSOLE
782 m_CharacterSaved = state;
783 Refresh();
784 #endif
785 }
786
787 protected void UpdateControlsElements()
788 {
789 #ifdef PLATFORM_CONSOLE
790 RichTextWidget toolbar_text = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ContextToolbarText"));
791 string text = "";
792 if (!m_CharacterSaved && m_Scene.GetIntroCharacter().IsDefaultCharacter()) //can be saved..
793 {
794 text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlY", "#layout_character_creation_save_character_alt", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
795 }
796 text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlX", "#layout_character_creation_toolbar_randomize", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
797 if (m_Scene.GetIntroCharacter().IsDefaultCharacter()) //edit options available
798 {
799 #ifdef PLATFORM_PS4
800 string result = string.Format("<image set=\"%1\" name=\"%2\" scale=\"%3\" />", "playstation_buttons", "DPAD_left_short", 1.92);
801 string result2 = string.Format("<image set=\"%1\" name=\"%2\" scale=\"%3\" />", "playstation_buttons", "DPAD_right_short", 1.92);
802 #else
803 string result = string.Format("<image set=\"%1\" name=\"%2\" scale=\"%3\" />", "xbox_buttons", "DPAD_left_short", 1.92);
804 string result2 = string.Format("<image set=\"%1\" name=\"%2\" scale=\"%3\" />", "xbox_buttons", "DPAD_right_short", 1.92);
805 #endif
806 text += string.Format(" %1%2 %3", result, result2, "#layout_character_creation_toolbar_select");
807 }
808 text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "#layout_character_creation_toolbar_back", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
809 toolbar_text.SetText(text);
810
811 RichTextWidget toolbar_b2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon0"));
812 RichTextWidget toolbar_x2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("RandomizeIcon0"));
813 RichTextWidget toolbar_y2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("SaveIcon0"));
814 RichTextWidget toolbar_y2_2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ApplyIcon0"));
815
816 string saveTextIcon = InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlY", "", EUAINPUT_DEVICE_CONTROLLER);
817 toolbar_b2.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "", EUAINPUT_DEVICE_CONTROLLER));
818 toolbar_x2.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlX", "", EUAINPUT_DEVICE_CONTROLLER));
819 toolbar_y2.SetText(saveTextIcon);
820 toolbar_y2_2.SetText(saveTextIcon);
821 #endif
822 }
823
825 {
826 #ifdef PLATFORM_CONSOLE
827 bool toolbarShow = !GetGame().GetInput().IsEnabledMouseAndKeyboard() || GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER;
828 layoutRoot.FindAnyWidget("toolbar_bg").Show(toolbarShow);
829 layoutRoot.FindAnyWidget("play_panel_root").Show(!toolbarShow);
830 #endif
831 }
832}
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
Definition inventory.c:175
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
proto native BiosUserManager GetUserManager()
MenuDefaultCharacterData GetMenuDefaultCharacterData(bool fill_data=true)
Definition game.c:1548
IntroSceneCharacter GetIntroCharacter()
static string GetRichtextButtonIconFromInputAction(notnull UAInput pInput, string pLocalizedDescription, int pInputDeviceType=EUAINPUT_DEVICE_CONTROLLER, float pScale=ICON_SCALE_NORMAL, bool pVertical=false)
Definition inpututils.c:167
static const float ICON_SCALE_TOOLBAR
Definition inpututils.c:15
provides access to slot configuration
Definition enmath.c:7
void UpdateControlsElementVisibility()
ref OptionSelectorMultistateCharacterMenu m_BottomSelector
ref OptionSelectorMultistateCharacterMenu m_TopSelector
RichTextWidget m_DetailsText
override bool OnMouseEnter(Widget w, int x, int y)
override void OnShow()
void ColorDisable(Widget w)
override bool OnFocus(Widget w, int x, int y)
override void Update(float timeslice)
override void Refresh()
TextWidget m_Version
TextWidget m_CharacterHeaderText
void ColorHighlight(Widget w)
bool IsFocusable(Widget w)
void SetTooltipTexts(Widget w, string header="", string desc="")
ref OptionSelectorMultistateCharacterMenu m_GenderSelector
ref OptionSelectorMultistateCharacterMenu m_SkinSelector
void Apply()
renames character
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
override bool OnKeyPress(Widget w, int x, int y, int key)
override void OnHide()
void SetCharacterSaved(bool state)
override bool OnMouseButtonUp(Widget w, int x, int y, int button)
override bool OnFocusLost(Widget w, int x, int y)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
ref OptionSelectorMultistateCharacterMenu m_ShoesSelector
void Save()
saves default character
override bool OnMouseButtonDown(Widget w, int x, int y, int button)
void UpdateControlsElements()
PlayerBase GetPlayerObj()
ref map< Widget, OptionSelectorMultistateCharacterMenu > m_MultiOptionSelectors
override Widget Init()
override bool OnClick(Widget w, int x, int y, int button)
void ColorNormal(Widget w)
ref OptionSelectorEditbox m_NameSelector
DayZGame g_Game
Definition dayzgame.c:3868
Mission mission
ECharGender
Definition echargender.c:2
proto native CGame GetGame()
const int MENU_MAIN
Definition constants.c:182
Icon x
Icon y
EInputDeviceType
Definition input.c:3
void OptionSelectorMultistateCharacterMenu(Widget parent, int current_index, ScriptedWidgetEventHandler parent_c, bool disabled, notnull array< string > options)
override float Get()
int ARGB(int a, int r, int g, int b)
Definition proto.c:322
Widget m_DetailsRoot
void Refresh()
proto native UAInputAPI GetUApi()