123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- class ConnectionDialogue extends UIScriptedMenu
- {
- protected bool m_DebugMonitorHidden;
- protected MultilineTextWidget m_Description;
- protected ButtonWidget m_DisconnectBtn;
- #ifdef PLATFORM_CONSOLE
- protected RichTextWidget m_DisconnectBtnLabel;
- protected Widget m_ConsoleToolbar;
- #endif
-
- void ConnectionDialogue() {}
-
- void ~ConnectionDialogue()
- {
- #ifdef PLATFORM_CONSOLE
- if (GetGame().GetMission())
- {
- GetGame().GetMission().GetOnInputDeviceChanged().Remove(OnInputDeviceChanged);
- }
- #endif
- }
-
- override Widget Init()
- {
- layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_connection_dialogue.layout");
- m_DisconnectBtn = ButtonWidget.Cast(layoutRoot.FindAnyWidget("DCButton"));
- #ifdef PLATFORM_CONSOLE
- m_DisconnectBtnLabel = RichTextWidget.Cast(layoutRoot.FindAnyWidget("DCButtonLabel"));
- m_ConsoleToolbar = layoutRoot.FindAnyWidget("ConsoleToolbar");
- #endif
-
- #ifdef PLATFORM_CONSOLE
- if (GetGame().GetMission())
- {
- GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
- }
- #endif
-
- RichTextWidget toolbar_text = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ContextToolbarText"));
- string context = string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUISelect", "#main_menu_exit", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
- toolbar_text.SetText(context);
-
- #ifdef PLATFORM_CONSOLE
- OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
- #endif
-
- return layoutRoot;
- }
-
- #ifdef PLATFORM_CONSOLE
- protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
- {
- switch (pInputDeviceType)
- {
- case EInputDeviceType.CONTROLLER:
- {
- GetGame().GetUIManager().ShowUICursor(false);
- m_DisconnectBtnLabel.SetText("#main_menu_exit");
- SetFocus(m_DisconnectBtn);
- }
- break;
- default:
- {
- if (GetGame().GetInput().IsEnabledMouseAndKeyboard())
- {
- GetGame().GetUIManager().ShowUICursor(true);
- m_DisconnectBtnLabel.SetText(string.Format(" %1",InputUtils.GetRichtextButtonIconFromInputAction("UAUISelect", "#main_menu_exit", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_NORMAL)));
- SetFocus(null);
- }
- }
- break;
- }
- UpdateControlsElementVisibility();
- }
- protected void UpdateControlsElementVisibility()
- {
- bool toolbarShow = !GetGame().GetInput().IsEnabledMouseAndKeyboard() || GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER;
- m_ConsoleToolbar.Show(toolbarShow);
- }
- override bool OnFocus(Widget w, int x, int y)
- {
- if (w == m_DisconnectBtn)
- {
- m_DisconnectBtn.SetColor(ARGB(255, 255, 0, 0));
- return true;
- }
- return false;
- }
-
- override bool OnFocusLost(Widget w, int x, int y)
- {
- if (w == m_DisconnectBtn)
- {
- m_DisconnectBtn.SetColor(ARGB(0, 0, 0, 0));
- return true;
- }
- return false;
- }
- #endif
-
- override bool OnClick(Widget w, int x, int y, int button)
- {
- super.OnClick(w, x, y, button);
- if (w == m_DisconnectBtn)
- {
- CloseDialog();
- }
- return false;
- }
-
- override bool OnMouseEnter(Widget w, int x, int y)
- {
- if (w == m_DisconnectBtn)
- {
- m_DisconnectBtn.SetColor(ARGB(255, 255, 0, 0));
- return true;
- }
- return false;
- }
-
- override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
- {
- if (w == m_DisconnectBtn)
- {
- m_DisconnectBtn.SetColor(ARGB(0, 0, 0, 0));
- return true;
- }
- return false;
- }
-
- override void OnShow()
- {
- super.OnShow();
- SetFocus(null);
- PPERequesterBank.GetRequester(PPERequester_LatencyBlur).Start();
- MissionGameplay mission = MissionGameplay.Cast(GetGame().GetMission());
- if (mission)
- {
- mission.GetHud().ShowHud(false);
- mission.GetHud().ShowQuickBar(false);
- mission.AddActiveInputExcludes({"menu"});
- mission.AddActiveInputRestriction(EInputRestrictors.INVENTORY);
- GetUApi().SupressNextFrame(true);
-
- //! Hide debug monitor if it is shown
- if (mission && mission.m_DebugMonitor && mission.m_DebugMonitor.IsVisible())
- {
- mission.m_DebugMonitor.Hide();
- m_DebugMonitorHidden = true;
- }
- }
-
- if (GetDayZGame())
- {
- GetDayZGame().SetConnectivityStatState(EConnectivityStatType.CONN_LOST, EConnectivityStatLevel.LEVEL1);
- }
-
- #ifdef PLATFORM_PS4
- OnlineServices.SetMultiplayState(false);
- #endif
- }
-
- override void OnHide()
- {
- super.OnHide();
- PPERequesterBank.GetRequester(PPERequester_LatencyBlur).Stop();
- MissionGameplay mission = MissionGameplay.Cast(GetGame().GetMission());
- if (mission)
- {
- // make sure certain input restrictions are removed if present
- mission.RemoveActiveInputExcludes({"menu"}, true);
- mission.RemoveActiveInputRestriction(EInputRestrictors.INVENTORY);
- mission.GetHud().ShowHud(true);
- mission.GetHud().ShowQuickBar(true);
-
- //! Show debug monitor again if it was shown before
- if (m_DebugMonitorHidden)
- {
- if (mission.m_DebugMonitor)
- {
- mission.m_DebugMonitor.Show();
- }
- m_DebugMonitorHidden = false;
- }
- }
-
- if (GetDayZGame())
- {
- GetDayZGame().SetConnectivityStatState(EConnectivityStatType.CONN_LOST, EConnectivityStatLevel.OFF);
- }
-
- #ifdef PLATFORM_PS4
- OnlineServices.SetMultiplayState(true);
- #endif
- }
-
- override void Update(float timeslice)
- {
- #ifdef PLATFORM_CONSOLE
- if (GetUApi().GetInputByID(UAUISelect).LocalValue())
- {
- CloseDialog();
- return;
- }
- #endif
- }
-
- void CloseDialog()
- {
- if (GetGame())
- {
- GetGame().GetUIManager().CloseMenu(MENU_CONNECTION_DIALOGUE);
- g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).Call(GetGame().DisconnectSessionForce);
- }
- }
- }
|