Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
videoplayer.c
Go to the documentation of this file.
1
class
VideoPlayer
extends
ScriptedWidgetEventHandler
2
{
3
protected
Widget
m_Root
;
4
5
protected
ButtonWidget
m_PlayButton
;
6
protected
ButtonWidget
m_PauseButton
;
7
8
protected
ButtonWidget
m_StopButton
;
9
10
protected
ButtonWidget
m_OnceButton
;
11
protected
ButtonWidget
m_RepeatButton
;
12
13
protected
ButtonWidget
m_LoadButton
;
14
protected
GridSpacerWidget
m_LoadVideo
;
15
16
protected
SliderWidget
m_Progress
;
17
18
protected
TextWidget
m_CurrentTime
;
19
protected
TextWidget
m_TotalTime
;
20
21
protected
ImageWidget
m_Buffering
;
22
/*protected*/
VideoWidget
m_VideoWidget
;
23
24
void
VideoPlayer
(
Widget
parent)
25
{
26
m_Root
=
g_Game
.GetWorkspace().CreateWidgets(
"gui/layouts/new_ui/video_player.layout"
, parent);
27
m_Root
.SetHandler(
this
);
28
m_Root
.SetSort(333);
29
Init
();
30
}
31
32
void
~VideoPlayer
()
33
{
34
}
35
36
void
Show
(
bool
show)
37
{
38
m_Root
.Show(show);
39
}
40
41
private
void
Init
()
42
{
43
m_PlayButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_PlayButton"
));
44
m_PauseButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_PauseButton"
));
45
m_StopButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_StopButton"
));
46
47
m_OnceButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_OnceButton"
));
48
m_RepeatButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_RepeatButton"
));
49
50
m_LoadButton
= ButtonWidget.Cast(
m_Root
.FindAnyWidget(
"vp_LoadButton"
));
51
m_LoadVideo
= GridSpacerWidget.Cast(
m_Root
.FindAnyWidget(
"vp_LoadVideo"
));
52
m_LoadVideo
.Show(
false
);
53
54
m_Progress
= SliderWidget.Cast(
m_Root
.FindAnyWidget(
"vp_Progress"
));
55
m_Progress
.SetCurrent(0);
56
57
m_CurrentTime
=
TextWidget
.Cast(
m_Root
.FindAnyWidget(
"vp_CurrentTime"
));
58
m_TotalTime
=
TextWidget
.Cast(
m_Root
.FindAnyWidget(
"vp_TotalTime"
));
59
60
m_Buffering
= ImageWidget.Cast(
m_Root
.FindAnyWidget(
"vp_Buffering"
));
61
m_Buffering
.Show(
false
);
62
m_VideoWidget
= VideoWidget.Cast(
m_Root
.FindAnyWidget(
"vp_Video"
));
63
64
m_VideoWidget
.SetCallback(
VideoCallback
.ON_PLAY,
OnPlaybackStart
);
65
m_VideoWidget
.SetCallback(
VideoCallback
.ON_PAUSE,
OnPlaybackStop
);
66
m_VideoWidget
.SetCallback(
VideoCallback
.ON_STOP,
OnPlaybackStop
);
67
m_VideoWidget
.SetCallback(
VideoCallback
.ON_END,
OnPlaybackStop
);
68
m_VideoWidget
.SetCallback(
VideoCallback
.ON_LOAD,
OnPlaybackStop
);
69
m_VideoWidget
.SetCallback(
VideoCallback
.ON_SEEK,
UpdateCurrentTime
);
70
m_VideoWidget
.SetCallback(
VideoCallback
.ON_BUFFERING_START,
OnBufferingStart
);
71
m_VideoWidget
.SetCallback(
VideoCallback
.ON_BUFFERING_END,
OnBufferingEnd
);
72
}
73
74
private
void
InitVideoLoading
()
75
{
76
string
path
=
"video\\*"
;
77
78
string
fileName;
79
FileAttr
fileAttr;
80
81
FindFileHandle
handle =
FindFile
(
path
, fileName, fileAttr,
FindFileFlags
.DIRECTORIES);
82
83
if
(fileName !=
""
)
84
{
85
CreateVideoLoadingEntry
(fileName);
86
}
87
88
while
(
FindNextFile
(handle, fileName, fileAttr))
89
{
90
CreateVideoLoadingEntry
(fileName);
91
}
92
93
CloseFindFile
(handle);
94
}
95
96
private
void
CreateVideoLoadingEntry
(
string
entryName)
97
{
98
Widget
entry =
g_Game
.GetWorkspace().CreateWidgets(
"gui/layouts/new_ui/video_player_entry.layout"
,
m_LoadVideo
);
99
ButtonWidget entryButton = ButtonWidget.Cast(entry.GetChildren());
100
entryButton.SetText(entryName);
101
entryButton.SetUserID(333);
102
}
103
104
private
void
UpdateCurrentTime
()
105
{
106
int
time =
m_VideoWidget
.GetTime();
107
UpdateTime
(
m_CurrentTime
, time);
108
109
m_Progress
.SetCurrent(time);
110
}
111
112
// This can be an async op
113
private
void
UpdateTotalTime
()
114
{
115
int
time =
m_VideoWidget
.GetTotalTime();
116
117
if
(time != 0)
118
{
119
UpdateTime
(
m_TotalTime
, time);
120
m_Progress
.SetMinMax(0, time);
121
g_Game
.GetCallQueue(
CALL_CATEGORY_SYSTEM
).Remove(
UpdateTotalTime
);
122
}
123
}
124
125
private
void
UpdateTime
(
TextWidget
widget,
int
time)
126
{
127
FullTimeData
timeData =
new
FullTimeData
();
128
TimeConversions.ConvertSecondsToFullTime(time / 1000, timeData);
129
widget.SetText(timeData.
FormatedAsTimestamp
());
130
}
131
132
override
bool
OnChange
(
Widget
w,
int
x
,
int
y
,
bool
finished)
133
{
134
if
(w ==
m_Progress
)
135
{
136
m_VideoWidget
.SetTime(
m_Progress
.GetCurrent(), finished);
137
}
138
139
return
super.OnChange(w,
x
,
y
, finished);
140
}
141
142
override
bool
OnClick
(
Widget
w,
int
x
,
int
y
,
int
button)
143
{
144
if
(w ==
m_PlayButton
)
145
{
146
PlayVideo
();
147
}
148
else
if
(w ==
m_PauseButton
)
149
{
150
PauseVideo
();
151
}
152
else
if
(w ==
m_StopButton
)
153
{
154
StopVideo
();
155
}
156
else
if
(w ==
m_OnceButton
)
157
{
158
OnceVideo
();
159
}
160
else
if
(w ==
m_RepeatButton
)
161
{
162
RepeatVideo
();
163
}
164
else
if
(w ==
m_LoadButton
)
165
{
166
ToggleVideoSelection
();
167
}
168
else
if
(w ==
m_Progress
)
169
{
170
Print
(
x
);
171
Print
(
y
);
172
Print
(button);
173
}
174
else
if
(w.GetUserID() == 333)
175
{
176
string
name
;
177
ButtonWidget.Cast(w).GetText(
name
);
178
LoadVideo
(
name
);
179
ToggleVideoSelection
();
180
}
181
182
return
super.OnClick(w,
x
,
y
, button);
183
}
184
185
protected
void
OnPlaybackStart
()
186
{
187
m_PlayButton
.Show(
false
);
188
m_PauseButton
.Show(
true
);
189
190
g_Game
.GetCallQueue(
CALL_CATEGORY_SYSTEM
).CallLater(
UpdateCurrentTime
, 0,
true
);
191
}
192
193
protected
void
OnPlaybackStop
()
194
{
195
m_PlayButton
.Show(
true
);
196
m_PauseButton
.Show(
false
);
197
198
UpdateCurrentTime
();
199
200
g_Game
.GetCallQueue(
CALL_CATEGORY_SYSTEM
).Remove(
UpdateCurrentTime
);
201
}
202
203
protected
void
OnBufferingStart
()
204
{
205
m_Buffering
.Show(
true
);
206
}
207
208
protected
void
OnBufferingEnd
()
209
{
210
m_Buffering
.Show(
false
);
211
}
212
213
void
ToggleVideoSelection
()
214
{
215
if
(!
m_LoadVideo
.IsVisible())
216
{
217
InitVideoLoading
();
218
}
219
else
220
{
221
Widget
child =
m_LoadVideo
.GetChildren();
222
223
while
(child)
224
{
225
Widget
c = child;
226
child = child.GetSibling();
227
c.Unlink();
228
}
229
}
230
231
m_LoadVideo
.Show(!
m_LoadVideo
.IsVisible());
232
}
233
234
void
LoadVideo
(
string
videoPath)
235
{
236
string
path
;
237
#ifdef PLATFORM_WINDOWS
238
path
=
".\\video\\"
;
239
#endif
240
#ifdef PLATFORM_MSSTORE
241
path
=
".\\video\\"
;
242
#endif
243
#ifdef PLATFORM_PS4
244
path
=
"/app0/video/"
;
245
#endif
246
#ifdef PLATFORM_XBOX
247
path
=
"G:\\video\\"
;
248
#endif
249
250
m_VideoWidget
.Load(
path
+ videoPath,
m_VideoWidget
.IsLooping());
251
252
g_Game
.GetCallQueue(
CALL_CATEGORY_SYSTEM
).CallLater(
UpdateTotalTime
, 0,
true
);
253
}
254
255
void
PlayVideo
()
256
{
257
m_VideoWidget
.Play();
258
}
259
260
void
PauseVideo
()
261
{
262
m_VideoWidget
.Pause();
263
}
264
265
void
StopVideo
()
266
{
267
m_VideoWidget
.Stop();
268
m_PlayButton
.Show(
true
);
269
m_PauseButton
.Show(
false
);
270
}
271
272
void
OnceVideo
()
273
{
274
m_VideoWidget
.SetLooping(
false
);
275
m_OnceButton
.Show(
false
);
276
m_RepeatButton
.Show(
true
);
277
}
278
279
void
RepeatVideo
()
280
{
281
m_VideoWidget
.SetLooping(
true
);
282
m_RepeatButton
.Show(
false
);
283
m_OnceButton
.Show(
true
);
284
}
285
286
void
KillVideo
()
287
{
288
m_VideoWidget
.Unload();
289
}
290
}
name
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
FullTimeData
struct that keeps Time relevant information for future formatting
Definition
timeconversions.c:5
FullTimeData::FormatedAsTimestamp
int m_Days int m_Hours int m_Minutes int m_Seconds string FormatedAsTimestamp()
Definition
timeconversions.c:11
ScriptedWidgetEventHandler
map: item x vector(index, width, height)
Definition
enwidgets.c:657
ScriptedWidgetEventHandler::m_TotalTime
TextWidget m_TotalTime
Definition
videoplayer.c:19
ScriptedWidgetEventHandler::m_Progress
SliderWidget m_Progress
Definition
videoplayer.c:16
ScriptedWidgetEventHandler::OnPlaybackStart
void OnPlaybackStart()
Definition
videoplayer.c:185
ScriptedWidgetEventHandler::InitVideoLoading
void InitVideoLoading()
Definition
videoplayer.c:74
ScriptedWidgetEventHandler::OnChange
override bool OnChange(Widget w, int x, int y, bool finished)
Definition
videoplayer.c:132
ScriptedWidgetEventHandler::m_Root
Widget m_Root
Definition
sizetochild.c:9
ScriptedWidgetEventHandler::m_LoadButton
ButtonWidget m_LoadButton
Definition
videoplayer.c:13
ScriptedWidgetEventHandler::Init
void Init()
Definition
mainmenupromo.c:48
ScriptedWidgetEventHandler::VideoPlayer
void VideoPlayer(Widget parent)
Definition
videoplayer.c:24
ScriptedWidgetEventHandler::OnceVideo
void OnceVideo()
Definition
videoplayer.c:272
ScriptedWidgetEventHandler::OnPlaybackStop
void OnPlaybackStop()
Definition
videoplayer.c:193
ScriptedWidgetEventHandler::m_StopButton
ButtonWidget m_StopButton
Definition
videoplayer.c:8
ScriptedWidgetEventHandler::RepeatVideo
void RepeatVideo()
Definition
videoplayer.c:279
ScriptedWidgetEventHandler::UpdateCurrentTime
void UpdateCurrentTime()
Definition
videoplayer.c:104
ScriptedWidgetEventHandler::PauseVideo
void PauseVideo()
Definition
mainmenupromo.c:126
ScriptedWidgetEventHandler::m_OnceButton
ButtonWidget m_OnceButton
Definition
videoplayer.c:10
ScriptedWidgetEventHandler::m_RepeatButton
ButtonWidget m_RepeatButton
Definition
videoplayer.c:11
ScriptedWidgetEventHandler::m_LoadVideo
GridSpacerWidget m_LoadVideo
Definition
videoplayer.c:14
ScriptedWidgetEventHandler::UpdateTotalTime
void UpdateTotalTime()
Definition
videoplayer.c:113
ScriptedWidgetEventHandler::ToggleVideoSelection
void ToggleVideoSelection()
Definition
videoplayer.c:213
ScriptedWidgetEventHandler::OnBufferingStart
void OnBufferingStart()
Definition
videoplayer.c:203
ScriptedWidgetEventHandler::Show
void Show(bool show)
Definition
videoplayer.c:36
ScriptedWidgetEventHandler::KillVideo
void KillVideo()
Definition
videoplayer.c:286
ScriptedWidgetEventHandler::m_VideoWidget
VideoWidget m_VideoWidget
Definition
mainmenupromo.c:17
ScriptedWidgetEventHandler::LoadVideo
void LoadVideo(string videoPath)
Definition
videoplayer.c:234
ScriptedWidgetEventHandler::m_CurrentTime
TextWidget m_CurrentTime
Definition
videoplayer.c:18
ScriptedWidgetEventHandler::m_PlayButton
ButtonWidget m_PlayButton
Definition
videoplayer.c:5
ScriptedWidgetEventHandler::UpdateTime
void UpdateTime(TextWidget widget, int time)
Definition
videoplayer.c:125
ScriptedWidgetEventHandler::CreateVideoLoadingEntry
void CreateVideoLoadingEntry(string entryName)
Definition
videoplayer.c:96
ScriptedWidgetEventHandler::PlayVideo
void PlayVideo()
Definition
videoplayer.c:255
ScriptedWidgetEventHandler::~VideoPlayer
void ~VideoPlayer()
Definition
videoplayer.c:32
ScriptedWidgetEventHandler::StopVideo
void StopVideo()
Definition
mainmenupromo.c:121
ScriptedWidgetEventHandler::OnBufferingEnd
void OnBufferingEnd()
Definition
videoplayer.c:208
ScriptedWidgetEventHandler::m_Buffering
ImageWidget m_Buffering
Definition
videoplayer.c:21
ScriptedWidgetEventHandler::OnClick
override bool OnClick(Widget w, int x, int y, int button)
Definition
videoplayer.c:142
ScriptedWidgetEventHandler::m_PauseButton
ButtonWidget m_PauseButton
Definition
videoplayer.c:6
TextWidget
Definition
enwidgets.c:220
Widget
Definition
enwidgets.c:190
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
Print
proto void Print(void var)
Prints content of variable to console/log.
CloseFindFile
proto native void CloseFindFile(FindFileHandle handle)
FindFile
enum FindFileFlags FindFile(string pattern, out string fileName, out FileAttr fileAttributes, FindFileFlags flags)
FindFileFlags
FindFileFlags
Definition
ensystem.c:514
FindNextFile
proto bool FindNextFile(FindFileHandle handle, out string fileName, out FileAttr fileAttributes)
FindFileHandle
int[] FindFileHandle
Definition
ensystem.c:503
FileAttr
FileAttr
Definition
ensystem.c:506
CALL_CATEGORY_SYSTEM
const int CALL_CATEGORY_SYSTEM
Definition
tools.c:8
VideoCallback
VideoCallback
Definition
enwidgets.c:531
Widget
WorkspaceWidget Widget
Defined in code.
x
Icon x
y
Icon y
path
string path
Definition
optionselectormultistate.c:142
m_Root
Widget m_Root
Definition
sizetochild.c:91
Games
Dayz
scripts
5_mission
gui
newui
videoplayer.c
Generated by
1.17.0