charactercreationmenu.c 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772
  1. class 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. const int TOOLTIP_ID_SAVE = 1;
  10. const int TOOLTIP_ID_APPLY = 2;
  11. protected Widget m_CharacterRotationFrame;
  12. protected Widget m_Apply;
  13. protected Widget m_Save;
  14. protected Widget m_RandomizeCharacter;
  15. protected Widget m_BackButton;
  16. protected Widget m_PlayedCharacterInfo;
  17. protected TextWidget m_Version;
  18. protected Widget m_DetailsRoot; //tooltips
  19. protected TextWidget m_DetailsLabel;
  20. protected RichTextWidget m_DetailsText;
  21. protected TextWidget m_CharacterHeaderText;
  22. protected ref OptionSelectorEditbox m_NameSelector;
  23. protected ref OptionSelectorMultistateCharacterMenu m_GenderSelector;
  24. protected ref OptionSelectorMultistateCharacterMenu m_SkinSelector;
  25. protected ref OptionSelectorMultistateCharacterMenu m_TopSelector;
  26. protected ref OptionSelectorMultistateCharacterMenu m_BottomSelector;
  27. protected ref OptionSelectorMultistateCharacterMenu m_ShoesSelector;
  28. int m_OriginalCharacterID;
  29. void CharacterCreationMenu()
  30. {
  31. MissionMainMenu mission = MissionMainMenu.Cast(GetGame().GetMission());
  32. #ifdef PLATFORM_CONSOLE
  33. m_Scene = mission.GetIntroSceneXbox();
  34. #else
  35. m_Scene = mission.GetIntroScenePC();
  36. #endif
  37. m_Scene.ResetIntroCamera();
  38. }
  39. PlayerBase GetPlayerObj()
  40. {
  41. return m_Scene.GetIntroCharacter().GetCharacterObj();
  42. }
  43. protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
  44. {
  45. #ifdef PLATFORM_CONSOLE
  46. switch (pInputDeviceType)
  47. {
  48. case EInputDeviceType.CONTROLLER:
  49. if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
  50. {
  51. GetGame().GetUIManager().ShowUICursor(false);
  52. }
  53. CheckNewOptions(); //TODO - pick only the 'focus' bit
  54. break;
  55. default:
  56. if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
  57. {
  58. GetGame().GetUIManager().ShowUICursor(true);
  59. }
  60. break;
  61. }
  62. UpdateControlsElementVisibility();
  63. #endif
  64. }
  65. override Widget Init()
  66. {
  67. #ifdef PLATFORM_CONSOLE
  68. layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/character_creation/xbox/character_creation.layout");
  69. m_CharacterSaved = false;
  70. #else
  71. layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/character_creation/pc/character_creation.layout");
  72. #endif
  73. m_CharacterRotationFrame = layoutRoot.FindAnyWidget("character_rotation_frame");
  74. m_Apply = layoutRoot.FindAnyWidget("apply");
  75. m_Save = layoutRoot.FindAnyWidget("save");
  76. m_RandomizeCharacter = layoutRoot.FindAnyWidget("randomize_character");
  77. m_BackButton = layoutRoot.FindAnyWidget("back");
  78. m_Version = TextWidget.Cast(layoutRoot.FindAnyWidget("version"));
  79. m_DetailsRoot = layoutRoot.FindAnyWidget("menu_details_tooltip");
  80. m_DetailsLabel = TextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_label"));
  81. m_DetailsText = RichTextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_tooltip_content"));
  82. m_CharacterHeaderText = TextWidget.Cast(layoutRoot.FindAnyWidget("char_header_text"));
  83. m_PlayedCharacterInfo = layoutRoot.FindAnyWidget("played_char_info");
  84. string version;
  85. GetGame().GetVersion(version);
  86. #ifdef PLATFORM_CONSOLE
  87. version = "#main_menu_version" + " " + version + " (" + g_Game.GetDatabaseID() + ")";
  88. #else
  89. version = "#main_menu_version" + " " + version;
  90. #endif
  91. m_Version.SetText(version);
  92. if (m_Scene && m_Scene.GetIntroCharacter())
  93. {
  94. m_OriginalCharacterID = m_Scene.GetIntroCharacter().GetCharacterID();
  95. }
  96. m_NameSelector = new OptionSelectorEditbox(layoutRoot.FindAnyWidget("character_name_setting_option"), m_Scene.GetIntroCharacter().GetCharacterName(), null, false);
  97. m_GenderSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_gender_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharGenderList());
  98. if (m_Scene.GetIntroCharacter().IsCharacterFemale())
  99. {
  100. m_GenderSelector.SetValue("Female");
  101. m_SkinSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_head_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharList(ECharGender.Female));
  102. }
  103. else
  104. {
  105. m_GenderSelector.SetValue("Male");
  106. m_SkinSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_head_setting_option"), 0, null, false, m_Scene.GetIntroCharacter().GetCharList(ECharGender.Male));
  107. }
  108. m_TopSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_top_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.BODY));
  109. m_BottomSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_bottom_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.LEGS));
  110. m_ShoesSelector = new OptionSelectorMultistateCharacterMenu(layoutRoot.FindAnyWidget("character_shoes_setting_option"), 0, null, false, DefaultCharacterCreationMethods.GetConfigAttachmentTypes(InventorySlots.FEET));
  111. PlayerBase scene_char = GetPlayerObj();
  112. if (scene_char)
  113. {
  114. Object obj = scene_char.GetInventory().FindAttachment(InventorySlots.BODY);
  115. if (obj)
  116. m_TopSelector.SetValue(obj.GetType(), false);
  117. obj = scene_char.GetInventory().FindAttachment(InventorySlots.LEGS);
  118. if (obj)
  119. m_BottomSelector.SetValue(obj.GetType(), false);
  120. obj = scene_char.GetInventory().FindAttachment(InventorySlots.FEET);
  121. if (obj)
  122. m_ShoesSelector.SetValue(obj.GetType(), false);
  123. m_SkinSelector.SetValue(scene_char.GetType());
  124. }
  125. m_GenderSelector.m_OptionChanged.Insert(GenderChanged);
  126. m_SkinSelector.m_OptionChanged.Insert(SkinChanged);
  127. m_TopSelector.m_OptionChanged.Insert(TopChanged);
  128. m_BottomSelector.m_OptionChanged.Insert(BottomChanged);
  129. m_ShoesSelector.m_OptionChanged.Insert(ShoesChanged);
  130. Refresh();
  131. SetCharacter();
  132. CheckNewOptions();
  133. GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
  134. return layoutRoot;
  135. }
  136. void ~CharacterCreationMenu()
  137. {
  138. m_GenderSelector.m_OptionChanged.Remove(GenderChanged);
  139. m_SkinSelector.m_OptionChanged.Remove(SkinChanged);
  140. m_TopSelector.m_OptionChanged.Remove(TopChanged);
  141. m_BottomSelector.m_OptionChanged.Remove(BottomChanged);
  142. m_ShoesSelector.m_OptionChanged.Remove(ShoesChanged);
  143. }
  144. //Button Events
  145. //! renames character
  146. void Apply()
  147. {
  148. if (!m_Scene.GetIntroCharacter().IsDefaultCharacter())
  149. {
  150. string name = m_NameSelector.GetValue();
  151. if (name == "")
  152. name = GameConstants.DEFAULT_CHARACTER_NAME;
  153. m_Scene.GetIntroCharacter().SaveCharName(name);
  154. }
  155. MainMenu menu_main = MainMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_MAIN));
  156. if (menu_main)
  157. {
  158. menu_main.OnChangeCharacter(false);
  159. }
  160. GetGame().GetUIManager().Back();
  161. }
  162. //! saves default character
  163. void Save()
  164. {
  165. if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
  166. {
  167. string name = m_NameSelector.GetValue();
  168. if (name == "")
  169. name = GameConstants.DEFAULT_CHARACTER_NAME;
  170. m_Scene.GetIntroCharacter().SaveCharName(name);
  171. m_Scene.GetIntroCharacter().SaveDefaultCharacter();
  172. m_Scene.GetIntroCharacter().SetToDefaultCharacter();
  173. SetCharacterSaved(true);
  174. }
  175. }
  176. void Back()
  177. {
  178. //bring back DefaultCharacter, if it exists (it should), or a previously played one.
  179. GetGame().GetMenuData().RequestGetDefaultCharacterData();
  180. #ifdef PLATFORM_CONSOLE
  181. if (m_OriginalCharacterID != GameConstants.DEFAULT_CHARACTER_MENU_ID && m_CharacterSaved)
  182. {
  183. m_OriginalCharacterID = GameConstants.DEFAULT_CHARACTER_MENU_ID;
  184. }
  185. #endif
  186. m_Scene.GetIntroCharacter().SetCharacterID(m_OriginalCharacterID);
  187. m_Scene.GetIntroCharacter().CreateNewCharacterById(m_Scene.GetIntroCharacter().GetCharacterID());
  188. GetGame().GetUIManager().Back();
  189. }
  190. void SetCharacter()
  191. {
  192. if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
  193. {
  194. GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
  195. }
  196. }
  197. void RandomizeCharacter()
  198. {
  199. m_Scene.GetIntroCharacter().SetToDefaultCharacter();
  200. // make random selection
  201. m_Scene.GetIntroCharacter().SetCharacterGender(Math.RandomInt(0, 2));
  202. if (m_Scene.GetIntroCharacter().IsCharacterFemale())
  203. {
  204. m_GenderSelector.SetValue("Female");
  205. m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(ECharGender.Female), 0);
  206. m_SkinSelector.SetRandomValue();
  207. }
  208. else
  209. {
  210. m_GenderSelector.SetValue("Male");
  211. m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(ECharGender.Male), 0);
  212. m_SkinSelector.SetRandomValue();
  213. }
  214. GetGame().GetMenuDefaultCharacterData().GenerateRandomEquip();
  215. m_TopSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.BODY),false);
  216. m_BottomSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.LEGS),false);
  217. m_ShoesSelector.SetValue(GetGame().GetMenuDefaultCharacterData().GetAttachmentMap().Get(InventorySlots.FEET),false);
  218. Refresh();
  219. SetCharacter();
  220. CheckNewOptions();
  221. }
  222. //Selector Events
  223. void GenderChanged()
  224. {
  225. ECharGender gender = ECharGender.Male;
  226. if (m_GenderSelector.GetStringValue() == "Female")
  227. {
  228. gender = ECharGender.Female;
  229. }
  230. m_Scene.GetIntroCharacter().SetCharacterGender(gender);
  231. m_SkinSelector.LoadNewValues(m_Scene.GetIntroCharacter().GetCharList(gender) , 0);
  232. m_SkinSelector.SetRandomValue();
  233. SetCharacterSaved(false);
  234. }
  235. void SkinChanged()
  236. {
  237. m_Scene.GetIntroCharacter().CreateNewCharacterByName(m_SkinSelector.GetStringValue(), false);
  238. SetCharacterSaved(false);
  239. }
  240. void TopChanged()
  241. {
  242. GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.BODY,m_TopSelector.GetStringValue());
  243. GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
  244. SetCharacterSaved(false);
  245. }
  246. void BottomChanged()
  247. {
  248. GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.LEGS,m_BottomSelector.GetStringValue());
  249. GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
  250. SetCharacterSaved(false);
  251. }
  252. void ShoesChanged()
  253. {
  254. GetGame().GetMenuDefaultCharacterData().SetDefaultAttachment(InventorySlots.FEET,m_ShoesSelector.GetStringValue());
  255. GetGame().GetMenuDefaultCharacterData().EquipDefaultCharacter(m_Scene.GetIntroCharacter().GetCharacterObj());
  256. SetCharacterSaved(false);
  257. }
  258. override bool OnKeyPress(Widget w, int x, int y, int key)
  259. {
  260. super.OnKeyPress(w, x, y, key);
  261. return false;
  262. }
  263. override bool OnClick(Widget w, int x, int y, int button)
  264. {
  265. if (w == m_Apply)
  266. {
  267. Apply();
  268. return true;
  269. }
  270. else if (w == m_Save)
  271. {
  272. Save();
  273. GetGame().GetUIManager().Back();
  274. return true;
  275. }
  276. else if (w == m_RandomizeCharacter)
  277. {
  278. RandomizeCharacter();
  279. return true;
  280. }
  281. else if (w == m_BackButton)
  282. {
  283. Back();
  284. return true;
  285. }
  286. return false;
  287. }
  288. override bool OnMouseButtonDown(Widget w, int x, int y, int button)
  289. {
  290. #ifndef PLATFORM_CONSOLE
  291. if (w == m_CharacterRotationFrame)
  292. {
  293. if (m_Scene)
  294. DayZIntroScenePC.Cast(m_Scene).CharacterRotationStart();
  295. return true;
  296. }
  297. #endif
  298. return false;
  299. }
  300. override bool OnMouseButtonUp(Widget w, int x, int y, int button)
  301. {
  302. #ifndef PLATFORM_CONSOLE
  303. if (m_Scene)
  304. DayZIntroScenePC.Cast(m_Scene).CharacterRotationStop();
  305. #endif
  306. return false;
  307. }
  308. override bool OnMouseEnter(Widget w, int x, int y)
  309. {
  310. string tooltip_header = "";
  311. string tooltip_text = "";
  312. ColorHighlight(w);
  313. switch (w.GetUserID())
  314. {
  315. case TOOLTIP_ID_APPLY:
  316. tooltip_header = "#layout_main_menu_rename";
  317. tooltip_text = "#layout_character_creation_apply_tooltip";
  318. break;
  319. case TOOLTIP_ID_SAVE:
  320. tooltip_header = "#layout_character_creation_save_character_alt";
  321. tooltip_text = "#layout_character_creation_save_tooltip";
  322. break;
  323. }
  324. SetTooltipTexts(w, tooltip_header, tooltip_text);
  325. return true;
  326. }
  327. override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
  328. {
  329. ColorNormal(w);
  330. SetFocus(null);
  331. return true;
  332. }
  333. override bool OnFocus(Widget w, int x, int y)
  334. {
  335. string tooltip_header = "";
  336. string tooltip_text = "";
  337. if (IsFocusable(w))
  338. {
  339. ColorHighlight(w);
  340. switch (w.GetUserID())
  341. {
  342. case TOOLTIP_ID_APPLY:
  343. tooltip_header = "#layout_main_menu_rename";
  344. tooltip_text = "#layout_character_creation_apply_tooltip";
  345. break;
  346. case TOOLTIP_ID_SAVE:
  347. tooltip_header = "#layout_character_creation_save_character_alt";
  348. tooltip_text = "#layout_character_creation_save_tooltip";
  349. break;
  350. }
  351. SetTooltipTexts(w, tooltip_header, tooltip_text);
  352. return true;
  353. }
  354. SetTooltipTexts(w);
  355. return false;
  356. }
  357. override bool OnFocusLost(Widget w, int x, int y)
  358. {
  359. if (IsFocusable(w))
  360. {
  361. ColorNormal(w);
  362. return true;
  363. }
  364. return false;
  365. }
  366. bool IsFocusable(Widget w)
  367. {
  368. if (w)
  369. {
  370. return (w == m_Apply || w == m_Save || w == m_RandomizeCharacter || w == m_BackButton);
  371. }
  372. return false;
  373. }
  374. void SetTooltipTexts(Widget w, string header = "", string desc = "")
  375. {
  376. #ifndef PLATFORM_CONSOLE
  377. bool show = header != "" && desc != "";
  378. m_DetailsRoot.Show(show);
  379. m_DetailsLabel.SetText(header);
  380. m_DetailsText.SetText(desc);
  381. //moves the widget to parent, setting is relative to widget alignment, case-specific implementation (getter missing!!!)
  382. if (show)
  383. {
  384. float parent_pos_x, parent_pos_y;
  385. float parent_size_x, parent_size_y;
  386. float layout_size_x, layout_size_y;
  387. w.GetScreenPos(parent_pos_x,parent_pos_y);
  388. w.GetScreenSize(parent_size_x,parent_size_y);
  389. layoutRoot.GetScreenSize(layout_size_x,layout_size_y);
  390. float set_x = layout_size_x - parent_pos_x;
  391. float set_y = layout_size_y - parent_pos_y - parent_size_y;
  392. m_DetailsRoot.SetPos(set_x,set_y,true);
  393. }
  394. m_DetailsText.Update();
  395. m_DetailsLabel.Update();
  396. m_DetailsRoot.Update();
  397. #endif
  398. }
  399. void CheckNewOptions()
  400. {
  401. bool show_widgets = m_Scene.GetIntroCharacter().IsDefaultCharacter();
  402. bool was_visible = layoutRoot.FindAnyWidget("character_gender_button").IsVisible();
  403. layoutRoot.FindAnyWidget("character_gender_button").Show(show_widgets);
  404. layoutRoot.FindAnyWidget("character_head_button").Show(show_widgets);
  405. layoutRoot.FindAnyWidget("character_top_button").Show(show_widgets);
  406. layoutRoot.FindAnyWidget("character_bottom_button").Show(show_widgets);
  407. layoutRoot.FindAnyWidget("character_shoes_button").Show(show_widgets);
  408. if (!was_visible && show_widgets)
  409. m_GenderSelector.Focus();
  410. if (!show_widgets)
  411. SetFocus(m_RandomizeCharacter);
  412. }
  413. override void OnShow()
  414. {
  415. #ifdef PLATFORM_CONSOLE
  416. m_GenderSelector.Focus();
  417. OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
  418. #endif
  419. CheckNewOptions();
  420. }
  421. override void Refresh()
  422. {
  423. string name;
  424. #ifdef PLATFORM_CONSOLE
  425. if (GetGame().GetUserManager() && GetGame().GetUserManager().GetSelectedUser())
  426. {
  427. name = GetGame().GetUserManager().GetSelectedUser().GetName();
  428. if (name.LengthUtf8() > 16)
  429. {
  430. name = name.SubstringUtf8(0, 16);
  431. name += "...";
  432. }
  433. }
  434. #else
  435. name = m_Scene.GetIntroCharacter().GetCharacterName();
  436. if (name == "")
  437. name = GameConstants.DEFAULT_CHARACTER_NAME;
  438. #endif
  439. m_NameSelector.SetValue(name);
  440. string version;
  441. GetGame().GetVersion(version);
  442. #ifdef PLATFORM_CONSOLE
  443. version = "#main_menu_version" + " " + version + " (" + g_Game.GetDatabaseID() + ")";
  444. m_Apply.Show(m_CharacterSaved || !m_Scene.GetIntroCharacter().IsDefaultCharacter());
  445. m_Save.Show(!m_CharacterSaved && m_Scene.GetIntroCharacter().IsDefaultCharacter());
  446. #else
  447. version = "#main_menu_version" + " " + version;
  448. m_Apply.Show(!m_Scene.GetIntroCharacter().IsDefaultCharacter());
  449. m_Save.Show(m_Scene.GetIntroCharacter().IsDefaultCharacter());
  450. #endif
  451. m_PlayedCharacterInfo.Show(!m_Scene.GetIntroCharacter().IsDefaultCharacter());
  452. if (m_Scene.GetIntroCharacter().IsDefaultCharacter())
  453. {
  454. m_CharacterHeaderText.SetText("#character_menu_header");
  455. }
  456. else
  457. {
  458. m_CharacterHeaderText.SetText("#server_browser_prev_play_filter");
  459. }
  460. m_Version.SetText(version);
  461. #ifdef PLATFORM_CONSOLE
  462. UpdateControlsElements();
  463. UpdateControlsElementVisibility();
  464. #endif
  465. }
  466. override void Update(float timeslice)
  467. {
  468. if (GetUApi().GetInputByID(UAUIBack).LocalPress())
  469. {
  470. Back();
  471. }
  472. if (GetUApi().GetInputByID(UAUICtrlX).LocalPress())
  473. {
  474. RandomizeCharacter();
  475. }
  476. #ifdef PLATFORM_CONSOLE
  477. if (GetUApi().GetInputByID(UAUICtrlY).LocalPress())
  478. {
  479. if (m_Scene.GetIntroCharacter().IsDefaultCharacter() && !m_CharacterSaved)
  480. {
  481. Save();
  482. }
  483. }
  484. #endif
  485. }
  486. override void OnHide()
  487. {
  488. }
  489. //Coloring functions (Until WidgetStyles are useful)
  490. void ColorHighlight(Widget w)
  491. {
  492. if (w.IsInherited(ButtonWidget))
  493. {
  494. ButtonWidget button = ButtonWidget.Cast(w);
  495. button.SetTextColor(ARGB(255, 200, 0, 0));
  496. }
  497. w.SetColor(ARGB(255, 0, 0, 0));
  498. TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
  499. TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
  500. TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
  501. ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
  502. Widget option = Widget.Cast(w.FindAnyWidget(w.GetName() + "_option_wrapper"));
  503. Widget option_label = w.FindAnyWidget("option_label");
  504. if (text1)
  505. {
  506. text1.SetColor(ARGB(255, 255, 0, 0));
  507. }
  508. if (text2)
  509. {
  510. text2.SetColor(ARGB(255, 255, 0, 0));
  511. }
  512. if (text3)
  513. {
  514. text3.SetColor(ARGB(255, 255, 0, 0));
  515. w.SetAlpha(1);
  516. }
  517. if (image)
  518. {
  519. image.SetColor(ARGB(255, 200, 0, 0));
  520. }
  521. if (option)
  522. {
  523. option.SetColor(ARGB(255, 255, 0, 0));
  524. }
  525. #ifndef PLATFORM_CONSOLE
  526. if (option_label)
  527. {
  528. option_label.SetColor(ARGB(255, 255, 0, 0));
  529. }
  530. #endif
  531. }
  532. void ColorNormal(Widget w)
  533. {
  534. if (w.IsInherited(ButtonWidget))
  535. {
  536. ButtonWidget button = ButtonWidget.Cast(w);
  537. button.SetTextColor(ColorManager.COLOR_NORMAL_TEXT);
  538. }
  539. TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
  540. TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
  541. TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
  542. ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
  543. Widget option = w.FindAnyWidget(w.GetName() + "_option_wrapper");
  544. Widget option_label = w.FindAnyWidget("option_label");
  545. if (text1)
  546. {
  547. text1.SetColor(ColorManager.COLOR_NORMAL_TEXT);
  548. }
  549. if (text2)
  550. {
  551. text2.SetColor(ColorManager.COLOR_NORMAL_TEXT);
  552. }
  553. if (text3)
  554. {
  555. text3.SetColor(ColorManager.COLOR_NORMAL_TEXT);
  556. w.SetAlpha(0);
  557. }
  558. if (image)
  559. {
  560. image.SetColor(ColorManager.COLOR_NORMAL_TEXT);
  561. }
  562. if (option)
  563. {
  564. option.SetColor(ARGB(150, 255, 255, 255));
  565. }
  566. #ifndef PLATFORM_CONSOLE
  567. if (option_label)
  568. {
  569. option_label.SetColor(ColorManager.COLOR_NORMAL_TEXT);
  570. }
  571. #endif
  572. }
  573. void ColorDisable(Widget w)
  574. {
  575. #ifndef PLATFORM_CONSOLE
  576. SetFocus(null);
  577. #endif
  578. if (w)
  579. {
  580. ButtonWidget button = ButtonWidget.Cast(w);
  581. if (button)
  582. {
  583. button.SetTextColor(ColorManager.COLOR_DISABLED_TEXT);
  584. }
  585. }
  586. TextWidget text1 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text"));
  587. TextWidget text2 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
  588. TextWidget text3 = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_text_1"));
  589. ImageWidget image = ImageWidget.Cast(w.FindAnyWidget(w.GetName() + "_image"));
  590. Widget option = Widget.Cast(w.FindAnyWidget(w.GetName() + "_option_wrapper"));
  591. Widget option_label = w.FindAnyWidget("option_label");
  592. if (text1)
  593. {
  594. text1.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  595. }
  596. if (text2)
  597. {
  598. text2.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  599. }
  600. if (text3)
  601. {
  602. text3.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  603. w.SetAlpha(1);
  604. }
  605. if (image)
  606. {
  607. image.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  608. }
  609. if (option)
  610. {
  611. option.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  612. }
  613. #ifndef PLATFORM_CONSOLE
  614. if (option_label)
  615. {
  616. option_label.SetColor(ColorManager.COLOR_DISABLED_TEXT);
  617. }
  618. #endif
  619. }
  620. void SetCharacterSaved(bool state)
  621. {
  622. #ifdef PLATFORM_CONSOLE
  623. m_CharacterSaved = state;
  624. Refresh();
  625. #endif
  626. }
  627. protected void UpdateControlsElements()
  628. {
  629. #ifdef PLATFORM_CONSOLE
  630. RichTextWidget toolbar_text = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ContextToolbarText"));
  631. string text = "";
  632. if (!m_CharacterSaved && m_Scene.GetIntroCharacter().IsDefaultCharacter()) //can be saved..
  633. {
  634. text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlY", "#layout_character_creation_save_character_alt", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
  635. }
  636. text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlX", "#layout_character_creation_toolbar_randomize", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
  637. if (m_Scene.GetIntroCharacter().IsDefaultCharacter()) //edit options available
  638. {
  639. text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUISelect", "#layout_character_creation_toolbar_select", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
  640. }
  641. text += string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "#layout_character_creation_toolbar_back", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
  642. toolbar_text.SetText(text);
  643. RichTextWidget toolbar_b2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon0"));
  644. RichTextWidget toolbar_x2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("RandomizeIcon0"));
  645. RichTextWidget toolbar_y2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("SaveIcon0"));
  646. RichTextWidget toolbar_y2_2 = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ApplyIcon0"));
  647. string saveTextIcon = InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlY", "", EUAINPUT_DEVICE_CONTROLLER);
  648. toolbar_b2.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "", EUAINPUT_DEVICE_CONTROLLER));
  649. toolbar_x2.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUICtrlX", "", EUAINPUT_DEVICE_CONTROLLER));
  650. toolbar_y2.SetText(saveTextIcon);
  651. toolbar_y2_2.SetText(saveTextIcon);
  652. #endif
  653. }
  654. protected void UpdateControlsElementVisibility()
  655. {
  656. #ifdef PLATFORM_CONSOLE
  657. bool toolbarShow = !GetGame().GetInput().IsEnabledMouseAndKeyboard() || GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER;
  658. layoutRoot.FindAnyWidget("toolbar_bg").Show(toolbarShow);
  659. layoutRoot.FindAnyWidget("play_panel_root").Show(!toolbarShow);
  660. #endif
  661. }
  662. }