Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local InterfaceModules = {}
- local UIVals = {}
- function Initialize(comm_vals)
- local interface_modules = script:WaitForChild("InterfaceModules")
- local interface_resources = script:WaitForChild("UIResources")
- comm_vals["UIResources"] = interface_resources
- for i, v in pairs(interface_modules:GetChildren()) do
- if v:IsA("ModuleScript") then
- local success = pcall(function()
- InterfaceModules[v.Name] = require(v)
- end)
- if not success then
- warn("Could not load uimodule: " .. v.Name)
- end
- end
- end
- for nm, module in pairs(InterfaceModules) do
- local ui_vals
- local success = pcall(function()
- ui_vals = module.InitializeUI(comm_vals)
- end)
- if success and ui_vals then
- for nm, item in pairs(ui_vals) do
- UIVals[nm] = item
- end
- else
- warn("Could not initialize uimodule: " .. nm)
- end
- end
- local game_ui = comm_vals.GameUI
- local last_screen_size
- comm_vals.Heartbeat:connect(function()
- local screen_size = game_ui.AbsoluteSize
- if last_screen_size ~= screen_size then
- last_screen_size = screen_size
- UpdateScale()
- end
- end)
- end
- function SetupUIConnections()
- for _, m_functs in pairs(InterfaceModules) do
- if m_functs.SetupConnections then
- m_functs.SetupConnections()
- end
- end
- end
- function TriggerUIModule(module_nm, function_nm, arguements)
- local module_functions = InterfaceModules[module_nm]
- if module_functions then
- local m_function = module_functions[function_nm]
- if m_function then
- m_function(unpack(arguements))
- end
- end
- end
- local ScaleData = {
- {"TauntsUI", "Single", {SizeY = {"TauntsUI", "SizeX", 0.2}, PositionY = {"TauntsUI", "SizeY", -1.5}}};
- {"TauntsHolder", "Holder", {SizeX = {"TauntsHolder", "SizeX", 0.2}, SizeY = {"TauntsHolder", "SizeX", 0.14}}};
- }
- function UpdateScale()
- for _, scale in pairs(ScaleData) do
- local item_nm, scale_type, scale_data = unpack(scale)
- local ui_items = {}
- if scale_type == "Single" then
- ui_items = {UIVals[item_nm]}
- elseif scale_type == "Holder" then
- if UIVals[item_nm] then
- for i, item in pairs(UIVals[item_nm]:GetChildren()) do
- if item:IsA("GuiObject") then
- ui_items[#ui_items + 1] = item
- end
- end
- else
- warn("Missing UI element! (" .. item_nm .. ")")
- end
- end
- for _, ui_item in pairs(ui_items) do
- for i_prop, scale_info in pairs(scale_data) do
- local dependancy, d_prop, scale_f = unpack(scale_info)
- if UIVals[dependancy] then
- local dependancy = UIVals[dependancy]
- local d_typ = "Absolute" .. string.sub(d_prop, 0, string.len(d_prop) - 1)
- local d_axis = string.sub(d_prop, string.len(d_prop))
- local new_value = dependancy[d_typ][d_axis] * scale_f
- if i_prop == "SizeY" then
- local ui_size = ui_item.Size
- ui_item.Size = UDim2.new(ui_size.X.Scale, ui_size.X.Offset, ui_size.Y.Scale, new_value)
- elseif i_prop == "SizeX" then
- local ui_size = ui_item.Size
- ui_item.Size = UDim2.new(ui_size.X.Scale, new_value, ui_size.Y.Scale, ui_size.Y.Offset)
- elseif i_prop == "PositionY" then
- local ui_pos = ui_item.Position
- ui_item.Position = UDim2.new(ui_pos.X.Scale, ui_pos.X.Offset, ui_pos.Y.Scale, new_value)
- elseif i_prop == "PositionX" then
- local ui_pos = ui_item.Position
- ui_item.Position = UDim2.new(ui_pos.X.Scale, new_value, ui_pos.Y.Scale, ui_pos.Y.Offset)
- end
- end
- end
- end
- end
- end
- return {
- Initialize = Initialize;
- SetupUIConnections = SetupUIConnections;
- TriggerUIModule = TriggerUIModule
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement