DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
LogoutMenu.c
Go to the documentation of this file.
1
2class LogoutMenu extends UIScriptedMenu
3{
6 private ButtonWidget m_bLogoutNow;
7 private ButtonWidget m_bCancel;
8 private ButtonWidget m_bCancelConsole;
9 private int m_iTime;
10
12
14 {
15 m_iTime = 0;
16 g_Game.SetKeyboardHandle(this);
17
18 m_FullTime = new FullTimeData();
19 }
20
22 {
23 g_Game.SetKeyboardHandle(null);
24 if (GetGame().GetMission())
25 Cancel(); //cancels request on irregular close (player death, suicide, some mass-menu closure...)
26
27 m_FullTime = null;
28 }
29
30 override Widget Init()
31 {
32 layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_logout_dialog.layout");
33
34 m_LogoutTimeText = TextWidget.Cast(layoutRoot.FindAnyWidget("txtLogoutTime"));
35 m_DescriptionText = TextWidget.Cast(layoutRoot.FindAnyWidget("txtDescription"));
36 m_bLogoutNow = ButtonWidget.Cast(layoutRoot.FindAnyWidget("bLogoutNow"));
37 m_bCancel = ButtonWidget.Cast(layoutRoot.FindAnyWidget("bCancel"));
38
39 #ifdef PLATFORM_CONSOLE
40 m_bCancel.Show(false);
41 m_bLogoutNow.Show(false);
42
43 layoutRoot.FindAnyWidget("toolbar_bg").Show(true);
44 RichTextWidget toolbar_b = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon"));
45 toolbar_b.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
46 #else
47 m_bCancel.Show(true);
48 m_bLogoutNow.Show(true);
49 layoutRoot.FindAnyWidget("toolbar_bg").Show(false);
50 #endif
51
52 UpdateInfo();
53
54 // player should sit down if possible
55 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
56 if (player.GetEmoteManager() && !player.IsRestrained() && !player.IsUnconscious())
57 {
58 player.GetEmoteManager().CreateEmoteCBFromMenu(EmoteConstants.ID_EMOTE_SITA);
59 player.GetEmoteManager().GetEmoteLauncher().SetForced(EmoteLauncher.FORCE_DIFFERENT);
60 }
61
62 return layoutRoot;
63 }
64
65 void Show()
66 {
67 if (layoutRoot)
68 layoutRoot.Show(true);
69 }
70
71 void Hide()
72 {
73 if (layoutRoot)
74 layoutRoot.Show(false);
75 }
76
77 override bool OnClick(Widget w, int x, int y, int button)
78 {
79 super.OnClick(w, x, y, button);
80
81 if (w == m_bLogoutNow)
82 {
84
85 return true;
86 }
87 else if (w == m_bCancel)
88 {
89 Hide();
90 Cancel();
91 return true;
92 }
93
94 return false;
95 }
96
97 override bool OnKeyDown(Widget w, int x, int y, int key)
98 {
99 super.OnKeyDown(w, x, y, key);
100
101 switch (key)
102 {
103 // TODO: just temporary until new inputs are done
104 case KeyCode.KC_W:
105 case KeyCode.KC_S:
106 case KeyCode.KC_A:
107 case KeyCode.KC_D:
108 case KeyCode.KC_UP:
109 case KeyCode.KC_DOWN:
110 case KeyCode.KC_LEFT:
111 case KeyCode.KC_RIGHT:
112 case KeyCode.KC_ESCAPE:
113 Cancel();
114 }
115
116 return true;
117 }
118
119 override void Update(float timeslice)
120 {
121 if (GetUApi().GetInputByID(UAUIBack).LocalPress())
122 {
123 Hide();
124 Cancel();
125 }
126 }
127
129 {
130 m_LogoutTimeText.SetText(" ");
131 }
132
133 void SetTime(int time)
134 {
135 m_iTime = time;
136 string text = "#layout_logout_dialog_until_logout_";
137
138 TimeConversions.ConvertSecondsToFullTime(time, m_FullTime);
139
140 if (m_FullTime.m_Days > 0)
141 text += "dhms";
142 else if (m_FullTime.m_Hours > 0)
143 text += "hms";
144 else if (m_FullTime.m_Minutes > 0)
145 text += "ms";
146 else
147 text += "s";
148
149 text = Widget.TranslateString(text);
150 text = string.Format(text, m_FullTime.m_Seconds, m_FullTime.m_Minutes, m_FullTime.m_Hours, m_FullTime.m_Days);
151 m_LogoutTimeText.SetText(text);
152 }
153
155 {
156
157 if (m_iTime > 0)
158 {
159 SetTime(--m_iTime);
160 }
161 else
162 {
163 Exit();
164 }
165 }
166
168 {
169 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
170 if (player.IsRestrained() || player.IsUnconscious())
171 {
172 // display killInfo
173 m_DescriptionText.SetText("#layout_logout_dialog_note_killed");
174 }
175 else
176 {
177 // hide killInfo
178 m_DescriptionText.SetText("#layout_logout_dialog_note");
179 }
180 }
181
182 void Exit()
183 {
184 // exit menu and logout screen
186
187 // stop updating of logout screen
189
190 // go back to main menu
192 }
193
194 void Cancel()
195 {
198
199 // request logout cancel from server
201 }
202}
DayZGame g_Game
Definition DayZGame.c:3654
Icon x
Icon y
PlayerBase GetPlayer()
proto native UAInputAPI GetUApi()
proto native Mission GetMission()
override ScriptCallQueue GetCallQueue(int call_category)
Definition DayZGame.c:1153
proto native WorkspaceWidget GetWorkspace()
proto native void LogoutRequestCancel()
static const int FORCE_DIFFERENT
struct that keeps Time relevant information for future formatting
static const float ICON_SCALE_TOOLBAR
Definition InputUtils.c:15
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
void AbortMission()
Definition gameplay.c:747
void Continue()
Definition gameplay.c:745
proto void Remove(func fn)
remove specific call from queue
private int m_iTime
Definition InviteMenu.c:5
override bool OnKeyDown(Widget w, int x, int y, int key)
Definition LogoutMenu.c:97
override void Update(float timeslice)
Definition LogoutMenu.c:119
private TextWidget m_DescriptionText
Definition LogoutMenu.c:5
void UpdateTime()
Definition LogoutMenu.c:154
void UpdateInfo()
Definition LogoutMenu.c:167
void SetTime(int time)
Definition LogoutMenu.c:133
void ~LogoutMenu()
Definition LogoutMenu.c:21
private TextWidget m_LogoutTimeText
Definition LogoutMenu.c:4
private ButtonWidget m_bCancelConsole
Definition LogoutMenu.c:8
private ButtonWidget m_bCancel
Definition LogoutMenu.c:7
override Widget Init()
Definition LogoutMenu.c:30
private ref FullTimeData m_FullTime
Definition LogoutMenu.c:11
private ButtonWidget m_bLogoutNow
Definition LogoutMenu.c:6
void LogoutMenu()
Definition LogoutMenu.c:13
override bool OnClick(Widget w, int x, int y, int button)
Definition LogoutMenu.c:77
void SetLogoutTime()
Definition LogoutMenu.c:128
proto native CGame GetGame()
const int ID_EMOTE_SITA
Definition constants.c:347
KeyCode
Definition EnSystem.c:157
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.