Files
watrbx-game-engine/content/scripts/Modules/VoteFrame.lua
T
2025-09-18 17:55:52 -04:00

75 lines
2.0 KiB
Lua

--[[
// VoteFrame.lua
// Creates a vote frame for a game
]]
local CoreGui = Game:GetService("CoreGui")
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
local Modules = GuiRoot:FindFirstChild("Modules")
local AssetManager = require(Modules:FindFirstChild('AssetManager'))
local GlobalSettings = require(Modules:FindFirstChild('GlobalSettings'))
local Utility = require(Modules:FindFirstChild('Utility'))
local CreateVoteFrame = function(parent, position)
local this = {}
-- Assume 1080p
local MAX_SIZE = 203
local voteContainer = Utility.Create'Frame'
{
Name = "VoteContainer";
Size = UDim2.new(0, MAX_SIZE, 0, 16);
Position = position;
BackgroundTransparency = 1;
Visible = false;
Parent = parent;
}
local batteryImageRed = Utility.Create'ImageLabel'
{
Name = "BatteryImageRed";
BackgroundTransparency = 1;
ImageColor3 = GlobalSettings.RedTextColor;
Parent = voteContainer;
}
AssetManager.LocalImage(batteryImageRed,
'rbxasset://textures/ui/Shell/Icons/RatingBar', {['720'] = UDim2.new(0,134,0,11); ['1080'] = UDim2.new(0,203,0,16);})
local batteryImageGreen = batteryImageRed:Clone()
batteryImageGreen.ImageColor3 = GlobalSettings.GreenTextColor
batteryImageGreen.ZIndex = 2
batteryImageGreen.Parent = batteryImageRed
--[[ Public API ]]--
function this:SetPercentFilled(percent)
if not percent then
batteryImageGreen.Size = batteryImageRed.Size
batteryImageGreen.ImageRectSize = Vector2.new(0, 0)
batteryImageGreen.ImageColor3 = GlobalSettings.GreyTextColor
else
percent = Utility.Round(percent, 0.1)
local drawSize = math.floor(percent * MAX_SIZE)
batteryImageGreen.ImageColor3 = GlobalSettings.GreenTextColor
batteryImageGreen.Size = UDim2.new(0, drawSize, 0, batteryImageGreen.Size.Y.Offset)
batteryImageGreen.ImageRectSize = Vector2.new(drawSize, 0)
end
end
function this:SetVisible(value)
voteContainer.Visible = value
end
function this:GetContainer()
return voteContainer
end
function this:Destroy()
voteContainer:Destroy()
this = nil
end
return this
end
return CreateVoteFrame