123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- class RespawnDialogue extends UIScriptedMenu
- {
- const int ID_RESPAWN_CUSTOM = 101;
- const int ID_RESPAWN_RANDOM = 102;
-
- //tooltips
- protected Widget m_DetailsRoot;
- protected TextWidget m_DetailsLabel;
- protected RichTextWidget m_DetailsText;
-
- protected Widget m_CustomRespawn;
-
- //helper
- protected Widget m_CurrentlyHighlighted;
-
- void RespawnDialogue();
- void ~RespawnDialogue();
-
- override Widget Init()
- {
- layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_respawn_dialogue.layout");
- m_DetailsRoot = layoutRoot.FindAnyWidget("menu_details_tooltip");
- m_DetailsLabel = TextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_label"));
- m_DetailsText = RichTextWidget.Cast(m_DetailsRoot.FindAnyWidget("menu_details_tooltip_content"));
-
- m_CustomRespawn = layoutRoot.FindAnyWidget("respawn_button_custom");
- SetFocus(m_CustomRespawn);
- return layoutRoot;
- }
-
- override void Update(float timeslice)
- {
- super.Update(timeslice);
-
- if (GetUApi().GetInputByID(UAUIBack).LocalPress() || GetUApi().GetInputByID(UAUIMenu).LocalPress())
- Close();
- }
- override bool OnClick(Widget w, int x, int y, int button)
- {
- super.OnClick(w, x, y, button);
-
- switch (w.GetUserID())
- {
- case IDC_CANCEL:
- Close();
- return true;
- case ID_RESPAWN_CUSTOM:
- return RequestRespawn(false);
- case ID_RESPAWN_RANDOM:
- return RequestRespawn(true);
- }
- return false;
- }
-
- override bool OnMouseEnter(Widget w, int x, int y)
- {
- string tooltip_header = "";
- string tooltip_text = "";
- ColorHighlight(w);
- switch (w.GetUserID())
- {
- case ID_RESPAWN_RANDOM:
- tooltip_header = "#main_menu_respawn_random";
- tooltip_text = "#main_menu_respawn_random_tooltip";
- break;
-
- case ID_RESPAWN_CUSTOM:
- tooltip_header = "#main_menu_respawn_custom";
- tooltip_text = "#main_menu_respawn_custom_tooltip";
- break;
- }
- SetTooltipTexts(w, tooltip_header, tooltip_text);
- return true;
- }
-
- override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
- {
- ColorNormal(w);
- return true;
- }
-
- override void OnShow()
- {
- super.OnShow();
-
- SetFocus(m_CustomRespawn);
- }
-
- override bool OnFocus(Widget w, int x, int y)
- {
- string tooltip_header = "";
- string tooltip_text = "";
- if (IsFocusable(w))
- {
- ColorHighlight(w);
- switch (w.GetUserID())
- {
- case ID_RESPAWN_RANDOM:
- tooltip_header = "#main_menu_respawn_random";
- tooltip_text = "#main_menu_respawn_random_tooltip";
- break;
-
- case ID_RESPAWN_CUSTOM:
- tooltip_header = "#main_menu_respawn_custom";
- tooltip_text = "#main_menu_respawn_custom_tooltip";
- break;
- }
- SetTooltipTexts(w, tooltip_header, tooltip_text);
- return true;
- }
- SetTooltipTexts(w, tooltip_header, tooltip_text);
- return false;
- }
-
- override bool OnFocusLost(Widget w, int x, int y)
- {
- if (IsFocusable(w))
- {
- ColorNormal(w);
- return true;
- }
- return false;
- }
-
- bool IsFocusable(Widget w)
- {
- if (w)
- {
- if (w.GetUserID() == IDC_CANCEL || w.GetUserID() == ID_RESPAWN_CUSTOM || w.GetUserID() == ID_RESPAWN_RANDOM);
- return true;
- }
- return false;
- }
-
- protected void ColorHighlight(Widget w)
- {
- if (!w)
- return;
- if (m_CurrentlyHighlighted != w)
- {
- if (m_CurrentlyHighlighted)
- ColorNormal(m_CurrentlyHighlighted);
- m_CurrentlyHighlighted = w;
- }
- ButtonSetColor(w, ARGB(255, 0, 0, 0));
- ButtonSetTextColor(w, ARGB(255, 255, 0, 0));
- }
-
- protected void ColorNormal(Widget w)
- {
- if (!w)
- return;
-
- ButtonSetColor(w, ARGB(0, 0, 0, 0));
- ButtonSetTextColor(w, ARGB(255, 255, 255, 255));
- }
-
- protected void ButtonSetColor(Widget w, int color)
- {
- Widget panel = w.FindWidget(w.GetName() + "_panel");
- if (panel)
- panel.SetColor(color);
- }
-
- protected void ButtonSetTextColor(Widget w, int color)
- {
- TextWidget label = TextWidget.Cast(w.FindAnyWidget(w.GetName() + "_label"));
- if (label)
- label.SetColor(color);
- }
-
- void SetTooltipTexts(Widget w, string header = "", string desc = "")
- {
- bool show = header != "" && desc != "";
- m_DetailsRoot.Show(show);
- m_DetailsLabel.SetText(header);
- m_DetailsText.SetText(desc);
-
- m_DetailsText.Update();
- m_DetailsLabel.Update();
- m_DetailsRoot.Update();
- }
-
- bool RequestRespawn(bool random)
- {
- IngameHud.Cast(GetGame().GetMission().GetHud()).InitBadgesAndNotifiers();
- Man player = GetGame().GetPlayer();
- if (player && (player.GetPlayerState() == EPlayerStates.ALIVE && !player.IsUnconscious()))
- return false;
-
- #ifdef PLATFORM_CONSOLE
- InGameMenuXbox menu_ingame = InGameMenuXbox.Cast(GetGame().GetUIManager().FindMenu(MENU_INGAME));
- #else
- InGameMenu menu_ingame = InGameMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_INGAME));
- #endif
-
- if (!menu_ingame)
- return false;
-
- menu_ingame.MenuRequestRespawn(this, random);
- return true;
- }
- }
|