DefineClass.SplashScreen = { __parents = {"XDialog"}, Background = RGB(0, 0, 0), HandleMouse = true, MouseCursor = const.DefaultMouseCursor, } function SplashScreen:Init() XAspectWindow:new({ Id = "idContent", Fit = "FitInSafeArea", }, self) end function SplashScreen:OnMouseButtonDown(pt, button) if button == "L" then self:Close() end return "break" end function SplashScreen:OnShortcut(shortcut, source, ...) if shortcut == "ButtonB" or shortcut == "Escape" then self:Close() return "break" end XDialog.OnShortcut(self, shortcut, source, ...) end DefineClass.XSplashImage = { __parents = { "SplashScreen" }, Id = "idXSplashScreenImage", } function XSplashImage:Init() XImage:new({ Id = "idImage", Image = self.image, HAlign = "center", VAlign = "center", ImageFit = "smallest", FadeInTime = self.fadeInTime, FadeOutTime = self.fadeOutTime, }, self.idContent) self:CreateThread("wait", function() Sleep(self.fadeInTime) Sleep(self.time) self.idImage:Close() Sleep(self.fadeOutTime) self:Close() end) end DefineClass.XSplashMovie = { __parents = {"SplashScreen"}, Id = "idXSplashScreenMovie", } function XSplashMovie:Init() local video = XVideo:new({ Id = "idMovie", ZOrder = -1, FileName = self.movie, Sound = self.movie, }, self.idContent) video:SetAutoPlay(true) video.OnEnd = function() self:Close() end end function SplashImage(image, fadeInTime, fadeOutTime, time, aspect) local dlg = XSplashImage:new({ image = image, fadeInTime = fadeInTime, fadeOutTime = fadeOutTime, time = time, aspect = aspect, }, terminal.desktop) dlg:Open() return dlg end function SplashMovie(movie, aspect) local dlg = XSplashMovie:new({movie = movie, aspect = aspect}, terminal.desktop) dlg:Open() return dlg end DefineClass.XSplashText = { __parents = { "SplashScreen" }, Id = "idXSplashScreenText", } function XSplashText:Init() XText:new({ Id = "idText", Text = self.text, TextStyle = self.style, Translate = true, TextHAlign = "center", HAlign = "center", VAlign = "center", Margins = box(300, 0, 300, 0), FadeInTime = self.fadeInTime, FadeOutTime = self.fadeOutTime, }, self.idContent) XText:new({ Id = "idGamepad", TextStyle = self.style, Translate = true, HAlign = "right", VAlign = "bottom", Margins = box(0, 0, 80, 80), ContextUpdateOnOpen = true, OnContextUpdate = function(self) self:SetVisible(GetUIStyleGamepad()) end, }, self.idContent, "GamepadUIStyleChanged") self.idGamepad:SetText(T(296331304655, "")) self:CreateThread("wait", function() Sleep(self.fadeInTime) Sleep(self.time) self.idGamepad:Close() self.idText:Close() Sleep(self.fadeOutTime) self:Close() end) end function SplashText(text, style, fadeInTime, fadeOutTime, time) local dlg = XSplashText:new({ style = style, fadeInTime = fadeInTime, fadeOutTime = fadeOutTime, time = time, }, terminal.desktop) dlg:Open() dlg.idText:SetText(text) return dlg end