175 lines
4.9 KiB
Plaintext
175 lines
4.9 KiB
Plaintext
-- Creates the generic "ROBLOX" loading screen on startup
|
|
-- Written by Ben Tkacheff, 2014
|
|
|
|
local frame
|
|
local forceRemovalTime = 5
|
|
local destroyed = false
|
|
|
|
Game:GetService("ContentProvider"):Preload("rbxasset://textures/roblox-logo.png")
|
|
|
|
-- get control functions set up immediately
|
|
function removeLoadingScreen()
|
|
if frame then frame:Destroy() end
|
|
if script then script:Destroy() end
|
|
destroyed = true
|
|
end
|
|
|
|
function startForceLoadingDoneTimer()
|
|
wait(forceRemovalTime)
|
|
removeLoadingScreen()
|
|
end
|
|
|
|
function gameIsLoaded()
|
|
if Game.ReplicatedFirst:IsDefaultLoadingGuiRemoved() then
|
|
removeLoadingScreen()
|
|
else
|
|
startForceLoadingDoneTimer()
|
|
end
|
|
end
|
|
|
|
function makeDefaultLoadingScreen()
|
|
if not settings():GetFFlag("NewLoadingScreen") then return end
|
|
if destroyed then return end
|
|
|
|
frame = Instance.new("Frame")
|
|
frame.ZIndex = 10
|
|
frame.Active = true
|
|
frame.Size = UDim2.new(1,0,1,0)
|
|
frame.BackgroundColor3 = Color3.new(48/255,90/255,206/255)
|
|
|
|
local robloxLogo = Instance.new("ImageLabel")
|
|
robloxLogo.BackgroundTransparency = 1
|
|
robloxLogo.ZIndex = 10
|
|
robloxLogo.Image = "rbxasset://textures/roblox-logo.png"
|
|
robloxLogo.Size = UDim2.new(0,1031,0,265)
|
|
robloxLogo.Position = UDim2.new(0.5,-515,0.5,-132)
|
|
robloxLogo.Name = "RobloxLogo"
|
|
robloxLogo.Parent = frame
|
|
|
|
local poweredByText = Instance.new("TextLabel")
|
|
poweredByText.Font = Enum.Font.SourceSansBold
|
|
poweredByText.FontSize = Enum.FontSize.Size24
|
|
poweredByText.TextWrap = true
|
|
poweredByText.TextColor3 = Color3.new(1,1,1)
|
|
poweredByText.BackgroundTransparency = 1
|
|
poweredByText.ZIndex = 10
|
|
poweredByText.Text = "This Game Powered By"
|
|
poweredByText.TextXAlignment = Enum.TextXAlignment.Left
|
|
poweredByText.Size = UDim2.new(1,0,0,40)
|
|
poweredByText.Position = UDim2.new(0,0,0,-50)
|
|
poweredByText.Name = "PoweredByText"
|
|
poweredByText.Parent = robloxLogo
|
|
|
|
local exitButton = Instance.new("ImageButton")
|
|
exitButton.ZIndex = 10
|
|
exitButton.BackgroundTransparency = 1
|
|
exitButton.Image = "rbxasset://textures/ui/CloseButton.png"
|
|
exitButton.Size = UDim2.new(0,22,0,22)
|
|
exitButton.Position = UDim2.new(1,-23,0,1)
|
|
exitButton.Name = "ExitButton"
|
|
exitButton:SetVerb("Exit")
|
|
|
|
UserSettings().GameSettings.FullscreenChanged:connect(function ( isFullScreen )
|
|
if isFullScreen then
|
|
exitButton.Parent = frame
|
|
else
|
|
exitButton.Parent = nil
|
|
end
|
|
end)
|
|
if UserSettings().GameSettings:InFullScreen()then
|
|
exitButton.Parent = frame
|
|
end
|
|
|
|
-- put something visible up asap
|
|
frame.Parent = Game.CoreGui.RobloxGui
|
|
|
|
local instanceText = Instance.new("TextLabel")
|
|
instanceText.Font = Enum.Font.SourceSansBold
|
|
instanceText.FontSize = Enum.FontSize.Size18
|
|
instanceText.TextWrap = true
|
|
instanceText.TextColor3 = Color3.new(1,1,1)
|
|
instanceText.BackgroundTransparency = 1
|
|
instanceText.ZIndex = 10
|
|
instanceText.Text = ""
|
|
instanceText.Size = UDim2.new(1,0,0,40)
|
|
instanceText.Position = UDim2.new(0,0,1,-60)
|
|
instanceText.Name = "InstanceText"
|
|
instanceText.Parent = frame
|
|
|
|
local loadingText = Instance.new("TextLabel")
|
|
loadingText.Font = Enum.Font.SourceSansBold
|
|
loadingText.FontSize = Enum.FontSize.Size36
|
|
loadingText.TextWrap = true
|
|
loadingText.TextColor3 = Color3.new(1,1,1)
|
|
loadingText.BackgroundTransparency = 1
|
|
loadingText.ZIndex = 10
|
|
loadingText.Text = "Loading"
|
|
loadingText.Size = UDim2.new(1,0,0,40)
|
|
loadingText.Position = UDim2.new(0,0,1,20)
|
|
loadingText.Name = "LoadingText"
|
|
loadingText.Parent = robloxLogo
|
|
|
|
local howManyDots = 0
|
|
local lastUpdateTime = tick()
|
|
local minUpdateTime = 0.3
|
|
local aspectRatio = 1031/265
|
|
|
|
function ResolutionChanged( prop )
|
|
if prop == "AbsoluteSize" then
|
|
local size = Game.CoreGui.RobloxGui.AbsoluteSize
|
|
if size.X >= 1031 then
|
|
robloxLogo.Size = UDim2.new(0,1031,0,265)
|
|
robloxLogo.Position = UDim2.new(0.5,-515,0.5,-132)
|
|
else
|
|
local sizeReducer = -0.05
|
|
while size.X < robloxLogo.AbsoluteSize.X do
|
|
|
|
robloxLogo.Size = UDim2.new(sizeReducer,1031,0,265)
|
|
local newY = robloxLogo.AbsoluteSize.X * 265/1031
|
|
robloxLogo.Size = UDim2.new(sizeReducer,1031,0,newY)
|
|
robloxLogo.Position = UDim2.new(0.5 - (sizeReducer/2),-515,0.5,-132)
|
|
|
|
sizeReducer = sizeReducer - 0.1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
ResolutionChanged("AbsoluteSize")
|
|
Game.CoreGui.RobloxGui.Changed:connect(ResolutionChanged)
|
|
|
|
Game:GetService("RunService").RenderStepped:connect(function()
|
|
instanceText.Text = Game:GetMessage()
|
|
|
|
if tick() - lastUpdateTime >= minUpdateTime then
|
|
howManyDots = howManyDots + 1
|
|
if howManyDots > 5 then
|
|
howManyDots = 0
|
|
end
|
|
|
|
loadingText.Text = "Loading"
|
|
for i = 1, howManyDots do
|
|
loadingText.Text = loadingText.Text .. "."
|
|
end
|
|
lastUpdateTime = tick()
|
|
end
|
|
end)
|
|
end
|
|
|
|
makeDefaultLoadingScreen()
|
|
|
|
Game.ReplicatedFirst.RemoveDefaultLoadingGuiSignal:connect(function()
|
|
removeLoadingScreen()
|
|
end)
|
|
if Game.ReplicatedFirst:IsDefaultLoadingGuiRemoved() then
|
|
removeLoadingScreen()
|
|
return
|
|
end
|
|
|
|
Game.Loaded:connect(function()
|
|
gameIsLoaded()
|
|
end)
|
|
|
|
if Game:IsLoaded() then
|
|
gameIsLoaded()
|
|
end |