Clients/Client2016/content/fonts/LoadingScript.lua

815 lines
24 KiB
Lua

--rbxsig%hm7SbDaf0GHizpUYxb6qQAHuUU7LfsWX8bgPnc64hv1MnSJFX+Komih+acv/5vqLxpzxHNtvBCnuAwN6l63fYukZ0Yat7mDBHBx0w0CPTaWSCs2P5WDx/W7P+L8AkqpaowXKgCKST9VBErgwqTlUySsi0r9+HfExO+cl3h2lXig=%
--rbxassetid%158948138%
-- Creates the generic "ROBLOX" loading screen on startup
-- Written by ArceusInator & Ben Tkacheff, 2014
--
-- Constants
local PLACEID = Game.PlaceId
local MPS = Game:GetService 'MarketplaceService'
local CP = Game:GetService 'ContentProvider'
local COLORS = {
BLACK = Color3.new(0, 0, 0),
DARK = Color3.new(35/255, 35/255, 38/255),
DARKMED = Color3.new(61/255, 61/255, 67/255),
DARKMED2 = Color3.new(75/255, 76/255, 85/255),
MED = Color3.new(118/255, 118/255, 129/255),
LIGHTMED = Color3.new(190/255, 192/255, 212/255),
LIGHT = Color3.new(217/255, 218/255, 231/255),
ERROR = Color3.new(253/255,68/255,72/255)
}
local IMAGES = {
BACKGROUND_THUMBNAIL_VIGNETTE = 'rbxasset://textures/loading/loadingvignette.png',
ROBLOX_LOGO_256 = 'rbxasset://textures/loading/robloxlogo.png',
GAME_THUMBNAIL = 'http://www.roblox.com/Thumbs/Asset.ashx?format=png&width=420&height=230&assetId=',
GAME_BACKGROUND = 'rbxasset://textures/loading/loadingTexture.png'
}
local VALID_TEXT_SIZES = {
12,
14,
18,
24,
36,
48
}
--
-- Variables
local GameAssetInfo -- loaded by InfoProvider:LoadAssets()
local currScreenGui = nil
local renderSteppedConnection = nil
--
-- Utility functions
local create = function(className, defaultParent)
return function(propertyList)
local object = Instance.new(className)
for index, value in next, propertyList do
if type(index) == 'string' then
object[index] = value
else
if type(value) == 'function' then
value(object)
elseif type(value) == 'userdata' then
value.Parent = object
end
end
end
if object.Parent == nil then
object.Parent = defaultParent
end
return object
end
end
--
-- Create objects
local MainGui = {}
local InfoProvider = {}
function InfoProvider:GetGameName()
if GameAssetInfo ~= nil then
return GameAssetInfo.Name
else
return ''
end
end
function InfoProvider:GetCreatorName()
if GameAssetInfo ~= nil then
return GameAssetInfo.Creator.Name
else
return ''
end
end
function InfoProvider:LoadAssets()
Spawn(function()
if PLACEID <= 0 then
while Game.PlaceId <= 0 do
wait()
end
PLACEID = Game.PlaceId
end
IMAGES.GAME_THUMBNAIL = IMAGES.GAME_THUMBNAIL .. tostring(PLACEID)
-- load game asset info
coroutine.resume(coroutine.create(function() GameAssetInfo = MPS:GetProductInfo(PLACEID) end))
while not currScreenGui do
wait()
end
currScreenGui.ThumbnailContainer.Thumbnail.Image = IMAGES.GAME_THUMBNAIL
-- load images
for imageName, imageContent in next, IMAGES do
CP:Preload(imageContent)
end
end)
end
--
-- Declare member functions
function MainGui:GenerateMain()
local screenGui = create 'ScreenGui' {
Name = 'RobloxLoadingGui'
}
--
-- create descendant frames
local mainBackgroundContainer = create 'Frame' {
Name = 'MainBackgroundContainer',
BackgroundColor3 = COLORS.DARK,
Size = UDim2.new(1, 0, 1, 0),
Active = true,
create 'Frame' {
Name = 'TopBar',
BackgroundColor3 = COLORS.DARKMED,
BorderColor3 = COLORS.MED,
BorderSizePixel = 3,
Position = UDim2.new(0, -220, 0, -205),
Rotation = -10,
Size = UDim2.new(0, 1000, 0, 220),
ZIndex = 5,
create 'ImageLabel' {
Name = 'RobloxLogo',
BackgroundTransparency = 1,
Image = IMAGES.ROBLOX_LOGO_256,
Position = UDim2.new(0, 214, 1, -80),
Rotation = 2,
Size = UDim2.new(0, 128, 0, 128),
ZIndex = 6,
create 'TextLabel' {
Name = 'PoweredBy',
BackgroundTransparency = 1,
Position = UDim2.new(0.5, -60, 0, 30),
Size = UDim2.new(0, 80, 0, 18),
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size18,
TextColor3 = Color3.new(1,1,1),
Text = "Powered By",
ZIndex = 6
}
}
},
create 'ImageButton' {
Name = 'CloseButton',
Image = 'rbxasset://textures/ui/CloseButton.png',
BackgroundTransparency = 1,
Position = UDim2.new(1, -27, 0, 5),
Size = UDim2.new(0, 22, 0, 22),
Active = true,
ZIndex = 10
},
create 'Frame' {
Name = 'ErrorFrame',
BackgroundColor3 = COLORS.ERROR,
BorderSizePixel = 0,
Position = UDim2.new(0.25,0,0,0),
Size = UDim2.new(0.5, 0, 0, 80),
ZIndex = 5,
Visible = false,
create 'TextLabel' {
Name = "ErrorText",
BackgroundTransparency = 1,
ZIndex = 6,
Position = UDim2.new(0,5,0,5),
Size = UDim2.new(1,-10,1,-10),
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size18,
Text = "",
TextColor3 = Color3.new(1,1,1),
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Center,
TextWrap = true
}
},
create 'Frame' {
Name = 'BottomBar',
BorderSizePixel = 0,
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 1, -150),
Size = UDim2.new(1, 0, 0, 300),
ZIndex = 5,
create 'Frame' {
Name = 'BottomBarActual',
BackgroundColor3 = COLORS.DARKMED,
BorderColor3 = COLORS.MED,
BorderSizePixel = 3,
Position = UDim2.new(0, 0, 0, 0),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 5,
create 'Frame' {
Name = 'TextContainer',
BackgroundTransparency = 1,
Position = UDim2.new(0, -5, 0, 5),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 8,
create 'TextLabel' {
Name = 'CreatorName',
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 70),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size48,
Text = InfoProvider:GetCreatorName(),
TextColor3 = COLORS.LIGHT,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'GameName',
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 30),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size48,
Text = InfoProvider:GetGameName(),
TextColor3 = COLORS.LIGHT,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'CreatorNamePrefix',
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size48,
Text = 'By',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'OnYourWay',
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size36,
Text = 'You\'re on your way to',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
}
}
}
},
create 'ImageLabel' {
Name = 'BackgroundThumbnailVignette',
BackgroundTransparency = 1,
Image = IMAGES.BACKGROUND_THUMBNAIL_VIGNETTE,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 3
},
create 'ImageLabel' {
Name = 'BackgroundThumbnail',
BackgroundTransparency = 1,
Image = IMAGES.GAME_BACKGROUND,
Size = UDim2.new(1.5, 0, 1.5, 0),
Position = UDim2.new(-0.5,0,0,0),
ZIndex = 2
},
Parent = screenGui
}
local thumbnailContainer = create 'Frame' {
Name = 'ThumbnailContainer',
BackgroundColor3 = COLORS.BLACK,
BorderColor3 = COLORS.MED,
BorderSizePixel = 4,
Position = UDim2.new(0.5, -210, 0.5, -115),
Size = UDim2.new(0, 420, 0, 230),
ZIndex = 8,
create 'ImageLabel' {
Name = 'Thumbnail',
BorderColor3 = COLORS.DARKMED2,
BorderSizePixel = 3,
Image = "",
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 8
},
create 'Frame' {
Name = 'LoadingInfoContainer',
BorderColor3 = COLORS.MED,
BackgroundColor3 = COLORS.DARKMED,
BorderSizePixel = 2,
Position = UDim2.new(0,20,1,0),
Size = UDim2.new(1,-40,0,40),
ZIndex = 7,
create 'TextLabel' {
Name = 'InstancesLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Instances',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'InstancesValue',
BackgroundTransparency = 1,
Position = UDim2.new(0,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'VoxelsLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.75,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Voxels',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'VoxelsValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.75,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'ConnectorsLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.5,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Connectors',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'ConnectorsValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.5,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'BricksLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.25,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Bricks',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'BricksValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.25,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
},
Parent = screenGui
}
--
-- recalculate everything
while not Game:GetService("CoreGui") do
wait()
end
screenGui.Parent = Game.CoreGui
MainGui:RecalculateSizes(screenGui)
--
-- return generated gui
return screenGui
end
function MainGui:RecalculateTextSize(screenGui)
local screenSize = screenGui.AbsoluteSize
local textSizeScale = math.min(screenSize.y/800, 1)
local closestValidSizePrevIndex = math.floor(textSizeScale*#VALID_TEXT_SIZES)-1
local closestValidSizePrevIndex2 = closestValidSizePrevIndex-1
local closestValidTextSize
local closestValidTextSizePrev
-- next can't take a 0 because it's a total wuss
if closestValidSizePrevIndex > 0 then
_, closestValidTextSize = next(VALID_TEXT_SIZES, closestValidSizePrevIndex)
if closestValidSizePrevIndex2 > 0 then
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES, closestValidSizePrevIndex2)
else
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES) -- not doing t[1] because this looks cleaner
end
else
_, closestValidTextSize = next(VALID_TEXT_SIZES)
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES)
end
local textSizeEnum = Enum.FontSize['Size'..closestValidTextSize]
local textSizePrevEnum = Enum.FontSize['Size'..closestValidTextSizePrev]
if not screenGui:FindFirstChild("MainBackgroundContainer") then return end
local TextContainer = screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer
local currentYBumpDistance = 0
TextContainer.OnYourWay.FontSize = textSizePrevEnum
currentYBumpDistance = currentYBumpDistance + closestValidTextSizePrev*(40/48)
TextContainer.GameName.Position = UDim2.new(0, 0, 0, currentYBumpDistance)
TextContainer.GameName.FontSize = textSizeEnum
currentYBumpDistance = currentYBumpDistance + closestValidTextSize*(40/48)
TextContainer.CreatorName.Position = UDim2.new(0, 0, 0, currentYBumpDistance)
TextContainer.CreatorName.FontSize = textSizeEnum
local currentXBumpDistance = -(TextContainer.CreatorName.TextBounds.X+5)
TextContainer.CreatorNamePrefix.Position = UDim2.new(0, currentXBumpDistance, 0, currentYBumpDistance)
TextContainer.CreatorNamePrefix.FontSize = textSizeEnum
-- recalculate bottom bar size
local sizeScale = closestValidTextSize/48
screenGui.MainBackgroundContainer.BottomBar.Size = UDim2.new(1, 0, 0, 300 * sizeScale)
screenGui.MainBackgroundContainer.BottomBar.Position = UDim2.new(0, 0, 1, -150 * sizeScale)
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.Position = UDim2.new(0, -130 * sizeScale,0,0)
end
function MainGui:RecalculateSizes(screenGui)
local screenSize = screenGui.AbsoluteSize
-- recalculate thumbnail size
local thumbnailSizeScale = math.min(math.max(screenSize.y/630, 50/230), 1)
local thumbnailSize = UDim2.new(0, thumbnailSizeScale*420, 0, thumbnailSizeScale*230)
local thumbnailPosition = UDim2.new(0.5, -thumbnailSizeScale*420/2, 0.5, -20 - thumbnailSizeScale*230/2 )
screenGui.ThumbnailContainer.Size = thumbnailSize
screenGui.ThumbnailContainer.Position = thumbnailPosition
screenGui.ThumbnailContainer.LoadingInfoContainer.Visible = (screenSize.Y > 500)
-- update names
-- if we don't have a name yet, keep trying!
if InfoProvider:GetCreatorName() == '' or InfoProvider:GetGameName() == '' then
Spawn(function()
while InfoProvider and InfoProvider:GetCreatorName() == '' or InfoProvider:GetGameName() == '' do
wait()
end
if screenGui and screenGui:FindFirstChild("MainBackgroundContainer") then
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.CreatorName.Text = InfoProvider:GetCreatorName()
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.GameName.Text = InfoProvider:GetGameName()
end
MainGui:RecalculateTextSize(screenGui)
end)
else
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.CreatorName.Text = InfoProvider:GetCreatorName()
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.GameName.Text = InfoProvider:GetGameName()
end
MainGui:RecalculateTextSize(screenGui)
end
function MainGui:Show()
currScreenGui = MainGui:GenerateMain()
currScreenGui.MainBackgroundContainer.Visible = true
currScreenGui.ThumbnailContainer.Visible = true
currScreenGui.Changed:connect(function(prop)
if prop == "AbsoluteSize" then
MainGui:RecalculateSizes(currScreenGui)
end
end)
end
---------------------------------------------------------
-- Main Script (show something now + setup connections)
-- start loading assets asap
InfoProvider:LoadAssets()
MainGui:Show()
local guiService = Game:GetService("GuiService")
local instanceCount = 0
local voxelCount = 0
local brickCount = 0
local connectorCount = 0
local setVerb = true
renderSteppedConnection = Game:GetService("RunService").RenderStepped:connect(function()
instanceCount = guiService:GetInstanceCount()
voxelCount = guiService:GetVoxelCount()
brickCount = guiService:GetBrickCount()
connectorCount = guiService:GetConnectorCount()
if not currScreenGui then return end
if setVerb then
currScreenGui.MainBackgroundContainer.CloseButton:SetVerb("Exit")
setVerb = false
end
currScreenGui.ThumbnailContainer.LoadingInfoContainer.InstancesValue.Text = tostring(instanceCount)
currScreenGui.ThumbnailContainer.LoadingInfoContainer.BricksValue.Text = tostring(brickCount)
currScreenGui.ThumbnailContainer.LoadingInfoContainer.ConnectorsValue.Text = tostring(connectorCount)
if voxelCount <= 0 then
currScreenGui.ThumbnailContainer.LoadingInfoContainer.VoxelsValue.Text = "0"
else
currScreenGui.ThumbnailContainer.LoadingInfoContainer.VoxelsValue.Text = tostring(voxelCount) .." million"
end
end)
guiService.ErrorMessageChanged:connect(function()
if guiService:GetErrorMessage() ~= '' then
currScreenGui.MainBackgroundContainer.ErrorFrame.ErrorText.Text = guiService:GetErrorMessage()
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = true
else
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = false
end
end)
if guiService:GetErrorMessage() ~= '' then
currScreenGui.MainBackgroundContainer.ErrorFrame.ErrorText.Text = guiService:GetErrorMessage()
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = true
end
local forceRemovalTime = 5
local destroyed = false
function removeLoadingScreen()
if renderSteppedConnection then
renderSteppedConnection:disconnect()
end
if currScreenGui then
currScreenGui:Destroy()
currScreenGui = nil
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
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
--------------------------------------------------------------------------
--
-- Animation (make the stuff we are showing look cool)
local blockSize = 10
local blockColor = Color3.new(33/255,66/255,209/255)
local yPosScale = 0
local yPosOffset = -blockSize * 3.5
local tweenStyle = Enum.EasingStyle.Sine
local tweenVelocity = 1500
local tweenTime = (currScreenGui.AbsoluteSize.X/2)/tweenVelocity
function createBlock()
local initBlock = Instance.new("Frame")
initBlock.ZIndex = 5
initBlock.Size = UDim2.new(0,blockSize,0,blockSize)
initBlock.BackgroundColor3 = COLORS.DARK
initBlock.BorderSizePixel = 0
initBlock.Position = UDim2.new(0,-blockSize,yPosScale,yPosOffset)
initBlock.Parent = currScreenGui.MainBackgroundContainer.BottomBar
return initBlock
end
local blocks = {}
for i = 1,6 do
blocks[i] = createBlock()
end
function getYOffset(newSize)
return yPosOffset - (newSize/3)
end
function rightScreenExit()
wait(tweenTime * 3)
if not currScreenGui then return end
local regSize = blocks[6].Size
local regPos = blocks[6].Position
blocks[6].Size = blocks[1].Size
blocks[6].Position = blocks[1].Position
blocks[1].Size = regSize
blocks[1].Position = regPos
wait()
for i = 1,6 do
local delayTime = tweenTime * (i - 1) * 0.5
Delay(delayTime, function()
if not currScreenGui then return end
local blockIndex = i
local blockSizeMultiplier = 4 - (i * 0.5)
blocks[blockIndex]:TweenPosition(UDim2.new(1,0,yPosScale,yPosOffset),
Enum.EasingDirection.Out,tweenStyle,
tweenTime,true)
if i == 6 then
blocks[6]:TweenSizeAndPosition(UDim2.new(0,blockSize,0,blockSize),
UDim2.new(1,0,yPosScale,yPosOffset),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime,true)
wait(tweenTime * 1.1)
leftScreenEntrance()
else
local newSize = blockSize * blockSizeMultiplier
blocks[6]:TweenSizeAndPosition(UDim2.new(0,newSize,0,newSize),
UDim2.new(0.5,-newSize/2,yPosScale,getYOffset(newSize)),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime * 0.75,true)
end
end)
end
end
function leftScreenEntrance()
if not currScreenGui then return end
for i = 1,6 do
blocks[i].Size = UDim2.new(0,blockSize,0,blockSize)
blocks[i].Position = UDim2.new(0,-blockSize,yPosScale,yPosOffset)
end
blocks[1]:TweenPosition(UDim2.new(0.5,-blockSize/2,yPosScale,yPosOffset),Enum.EasingDirection.Out,tweenStyle,tweenTime,true,function()
for i = 1, 6 do
local delayTime = tweenTime * (i - 1) * 0.5
Delay(delayTime, function()
if not currScreenGui then return end
local blockIndex = i
local blockSizeMultiplier = 1 + (i * 0.5)
blocks[blockIndex]:TweenPosition(UDim2.new(0.5,-blockSize/2,yPosScale,yPosOffset),
Enum.EasingDirection.Out,tweenStyle,
tweenTime,true)
local newSize = blockSize * blockSizeMultiplier
blocks[1]:TweenSizeAndPosition(UDim2.new(0,newSize,0,newSize),
UDim2.new(0.5,-newSize/2,yPosScale,getYOffset(newSize)),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime * 0.75,true)
if i == 4 then
rightScreenExit()
end
end)
end
end)
end
function startLoadingAnimation()
currScreenGui.MainBackgroundContainer.BackgroundThumbnail:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Linear,20,true)
leftScreenEntrance()
end
----------------------------------
-- Animation Begin
startLoadingAnimation()