123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- class InviteMenu extends UIScriptedMenu
- {
- private TextWidget m_LogoutTimeText;
- private MultilineTextWidget m_DescriptionText;
- private ButtonWidget m_bCancel;
- private ButtonWidget m_bCancelConsole;
- private int m_iTime;
-
- private ref FullTimeData m_FullTime;
- void InviteMenu()
- {
- m_iTime = 15;
- m_FullTime = new FullTimeData();
- if (GetGame().GetMission())
- {
- GetGame().GetMission().AddActiveInputExcludes({"menu"});
- GetGame().GetMission().GetHud().ShowHudUI(false);
- GetGame().GetMission().GetHud().ShowQuickbarUI(false);
- }
- }
-
- void ~InviteMenu()
- {
- if (GetGame() && GetGame().GetMission())
- {
- GetGame().GetMission().RemoveActiveInputExcludes({"menu"},true);
-
- GetGame().GetMission().GetHud().ShowHudUI(true);
- GetGame().GetMission().GetHud().ShowQuickbarUI(true);
-
- GetGame().GetMission().GetOnInputPresetChanged().Remove(OnInputPresetChanged);
- GetGame().GetMission().GetOnInputDeviceChanged().Remove(OnInputDeviceChanged);
- }
- }
-
- override Widget Init()
- {
- layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_invite_dialog.layout");
-
- m_LogoutTimeText = TextWidget.Cast(layoutRoot.FindAnyWidget("txtLogoutTime"));
- m_DescriptionText = MultilineTextWidget.Cast(layoutRoot.FindAnyWidget("txtDescription"));
- m_bCancel = ButtonWidget.Cast(layoutRoot.FindAnyWidget("bCancel"));
-
- m_DescriptionText.SetText("#layout_logout_dialog_note_invite");
- m_DescriptionText.Update();
-
- // player should sit down if possible
- PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
- if (player && player.GetEmoteManager() && !player.IsRestrained() && !player.IsUnconscious())
- {
- player.GetEmoteManager().CreateEmoteCBFromMenu(EmoteConstants.ID_EMOTE_SITA);
- player.GetEmoteManager().GetEmoteLauncher().SetForced(EmoteLauncher.FORCE_DIFFERENT);
- }
-
- if (GetGame().GetMission())
- {
- GetGame().GetMission().GetOnInputPresetChanged().Insert(OnInputPresetChanged);
- GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
- }
-
- OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
-
- SetTime(m_iTime);
- GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(UpdateTime, 1000, true);
- return layoutRoot;
- }
- override void Update(float timeslice)
- {
- if (GetUApi().GetInputByID(UAUIBack).LocalPress())
- Cancel();
-
- if (m_iTime <= 0)
- {
- GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Remove(this.UpdateTime);
- string ip;
- int port;
- OnlineServices.GetInviteServerInfo(ip, port);
- GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(g_Game.ConnectFromJoin, ip, port);
- }
- }
-
- override bool OnClick(Widget w, int x, int y, int button)
- {
- super.OnClick(w, x, y, button);
-
- if (w.GetUserID() == IDC_CANCEL)
- {
- Cancel();
- return true;
- }
- return false;
- }
-
- void SetTime(int time)
- {
- m_iTime = time;
- string text = "#layout_logout_dialog_until_logout_";
- TimeConversions.ConvertSecondsToFullTime(time, m_FullTime);
-
- if (m_FullTime.m_Days > 0)
- text += "dhms";
- else if (m_FullTime.m_Hours > 0)
- text += "hms";
- else if (m_FullTime.m_Minutes > 0)
- text += "ms";
- else
- text += "s";
-
- text = Widget.TranslateString(text);
- text = string.Format(text, m_FullTime.m_Seconds, m_FullTime.m_Minutes, m_FullTime.m_Hours, m_FullTime.m_Days);
- m_LogoutTimeText.SetText(text);
- }
-
- void UpdateTime()
- {
- if (m_iTime > 0)
- {
- m_iTime -= 1;
- SetTime(m_iTime);
- }
- }
- void Cancel()
- {
- GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Remove(this.UpdateTime);
-
- g_Game.SetGameState(DayZGameState.IN_GAME);
- g_Game.SetLoadState(DayZLoadState.CONNECT_CONTROLLER_SELECT);
- Close();
- }
-
- protected void OnInputPresetChanged()
- {
- #ifdef PLATFORM_CONSOLE
- UpdateControlsElements();
- #endif
- }
- protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
- {
- UpdateControlsElements();
- UpdateControlsElementVisibility();
- }
-
- protected void UpdateControlsElements()
- {
- RichTextWidget toolbarText = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ContextToolbarText"));
- string context = string.Format(" %1", InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "#dialog_cancel", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
-
- toolbarText.SetText(context);
- }
-
- protected void UpdateControlsElementVisibility()
- {
- bool toolbarShow = false;
- #ifdef PLATFORM_CONSOLE
- toolbarShow = !GetGame().GetInput().IsEnabledMouseAndKeyboard() || GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER;
- #endif
-
- layoutRoot.FindAnyWidget("BottomConsoleToolbar").Show(toolbarShow);
- m_bCancel.Show(!toolbarShow);
- }
- }
|