add gs
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
--[[
|
||||
// LoadingWidget.lua
|
||||
|
||||
// Created by Kip Turner
|
||||
// Copyright Roblox 2015
|
||||
]]
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
|
||||
local Modules = GuiRoot:FindFirstChild("Modules")
|
||||
local ShellModules = Modules:FindFirstChild("Shell")
|
||||
|
||||
local Utility = require(ShellModules:FindFirstChild('Utility'))
|
||||
|
||||
local function CreateLoadingWidget(properties, loadingFunctions, continuous)
|
||||
properties = properties or {}
|
||||
loadingFunctions = loadingFunctions or {}
|
||||
|
||||
local this = {}
|
||||
|
||||
local completedFunctions = {}
|
||||
local cancelled = false
|
||||
local ImageTransparency = properties.ImageTransparency or 0
|
||||
local finishedConn = Utility.Signal()
|
||||
|
||||
local loadIcon = Utility.Create'ImageLabel'
|
||||
{
|
||||
Name = "LoadIcon";
|
||||
BackgroundTransparency = 1;
|
||||
Image = 'rbxasset://textures/ui/Shell/Icons/LoadingSpinner@1080.png';
|
||||
Size = properties.Size or UDim2.new(0, 100, 0, 100);
|
||||
ZIndex = properties.ZIndex or 7;
|
||||
Parent = properties.Parent;
|
||||
ImageTransparency = ImageTransparency;
|
||||
AnchorPoint = Vector2.new(0.5, 0.5);
|
||||
Position = properties.Position or UDim2.new(0.5, 0, 0.5, 0);
|
||||
}
|
||||
|
||||
if properties.Visible == false then
|
||||
loadIcon.Visible = false
|
||||
end
|
||||
|
||||
local function isLoadingComplete()
|
||||
if continuous then
|
||||
return false
|
||||
end
|
||||
return #completedFunctions == #loadingFunctions
|
||||
end
|
||||
|
||||
function this:AwaitFinished()
|
||||
if isLoadingComplete() then
|
||||
return true
|
||||
end
|
||||
finishedConn:wait()
|
||||
if cancelled then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function this:Cleanup()
|
||||
loadIcon.Parent = nil
|
||||
loadIcon.ImageTransparency = 1
|
||||
loadIcon:Destroy()
|
||||
cancelled = true
|
||||
end
|
||||
|
||||
function this:SetTransparency(transparency)
|
||||
ImageTransparency = transparency
|
||||
end
|
||||
|
||||
function this:SetParent(parent)
|
||||
loadIcon.Parent = parent
|
||||
end
|
||||
|
||||
function this:GetTransparency()
|
||||
return ImageTransparency
|
||||
end
|
||||
|
||||
-- Run it!
|
||||
for _, loadingFunction in pairs(loadingFunctions) do
|
||||
spawn(function()
|
||||
loadingFunction()
|
||||
table.insert(completedFunctions, loadingFunction)
|
||||
end)
|
||||
end
|
||||
|
||||
spawn(function()
|
||||
local t = tick()
|
||||
while not (cancelled or isLoadingComplete()) do
|
||||
local now = tick()
|
||||
local rotation = (now - t) * 360
|
||||
if loadIcon.Parent then
|
||||
loadIcon.ImageTransparency = ImageTransparency
|
||||
loadIcon.Rotation = loadIcon.Rotation + rotation
|
||||
end
|
||||
t = now
|
||||
wait()
|
||||
end
|
||||
finishedConn.fire()
|
||||
end)
|
||||
|
||||
return this
|
||||
end
|
||||
|
||||
return CreateLoadingWidget
|
||||
Reference in New Issue
Block a user