Advertisement
Guest User

Untitled

a guest
May 26th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. local InterfaceModules = {}
  2. local UIVals = {}
  3.  
  4. function Initialize(comm_vals)
  5. local interface_modules = script:WaitForChild("InterfaceModules")
  6. local interface_resources = script:WaitForChild("UIResources")
  7. comm_vals["UIResources"] = interface_resources
  8.  
  9. for i, v in pairs(interface_modules:GetChildren()) do
  10. if v:IsA("ModuleScript") then
  11. local success = pcall(function()
  12. InterfaceModules[v.Name] = require(v)
  13. end)
  14. if not success then
  15. warn("Could not load uimodule: " .. v.Name)
  16. end
  17. end
  18. end
  19. for nm, module in pairs(InterfaceModules) do
  20. local ui_vals
  21. local success = pcall(function()
  22. ui_vals = module.InitializeUI(comm_vals)
  23. end)
  24. if success and ui_vals then
  25. for nm, item in pairs(ui_vals) do
  26. UIVals[nm] = item
  27. end
  28. else
  29. warn("Could not initialize uimodule: " .. nm)
  30. end
  31. end
  32. local game_ui = comm_vals.GameUI
  33. local last_screen_size
  34. comm_vals.Heartbeat:connect(function()
  35. local screen_size = game_ui.AbsoluteSize
  36. if last_screen_size ~= screen_size then
  37. last_screen_size = screen_size
  38. UpdateScale()
  39. end
  40. end)
  41. end
  42.  
  43. function SetupUIConnections()
  44. for _, m_functs in pairs(InterfaceModules) do
  45. if m_functs.SetupConnections then
  46. m_functs.SetupConnections()
  47. end
  48. end
  49. end
  50.  
  51. function TriggerUIModule(module_nm, function_nm, arguements)
  52. local module_functions = InterfaceModules[module_nm]
  53. if module_functions then
  54. local m_function = module_functions[function_nm]
  55. if m_function then
  56. m_function(unpack(arguements))
  57. end
  58. end
  59. end
  60.  
  61. local ScaleData = {
  62. {"TauntsUI", "Single", {SizeY = {"TauntsUI", "SizeX", 0.2}, PositionY = {"TauntsUI", "SizeY", -1.5}}};
  63. {"TauntsHolder", "Holder", {SizeX = {"TauntsHolder", "SizeX", 0.2}, SizeY = {"TauntsHolder", "SizeX", 0.14}}};
  64. }
  65.  
  66. function UpdateScale()
  67. for _, scale in pairs(ScaleData) do
  68. local item_nm, scale_type, scale_data = unpack(scale)
  69. local ui_items = {}
  70. if scale_type == "Single" then
  71. ui_items = {UIVals[item_nm]}
  72. elseif scale_type == "Holder" then
  73. if UIVals[item_nm] then
  74. for i, item in pairs(UIVals[item_nm]:GetChildren()) do
  75. if item:IsA("GuiObject") then
  76. ui_items[#ui_items + 1] = item
  77. end
  78. end
  79. else
  80. warn("Missing UI element! (" .. item_nm .. ")")
  81. end
  82. end
  83. for _, ui_item in pairs(ui_items) do
  84. for i_prop, scale_info in pairs(scale_data) do
  85. local dependancy, d_prop, scale_f = unpack(scale_info)
  86. if UIVals[dependancy] then
  87. local dependancy = UIVals[dependancy]
  88. local d_typ = "Absolute" .. string.sub(d_prop, 0, string.len(d_prop) - 1)
  89. local d_axis = string.sub(d_prop, string.len(d_prop))
  90. local new_value = dependancy[d_typ][d_axis] * scale_f
  91. if i_prop == "SizeY" then
  92. local ui_size = ui_item.Size
  93. ui_item.Size = UDim2.new(ui_size.X.Scale, ui_size.X.Offset, ui_size.Y.Scale, new_value)
  94. elseif i_prop == "SizeX" then
  95. local ui_size = ui_item.Size
  96. ui_item.Size = UDim2.new(ui_size.X.Scale, new_value, ui_size.Y.Scale, ui_size.Y.Offset)
  97. elseif i_prop == "PositionY" then
  98. local ui_pos = ui_item.Position
  99. ui_item.Position = UDim2.new(ui_pos.X.Scale, ui_pos.X.Offset, ui_pos.Y.Scale, new_value)
  100. elseif i_prop == "PositionX" then
  101. local ui_pos = ui_item.Position
  102. ui_item.Position = UDim2.new(ui_pos.X.Scale, new_value, ui_pos.Y.Scale, ui_pos.Y.Offset)
  103. end
  104. end
  105. end
  106. end
  107. end
  108. end
  109.  
  110. return {
  111. Initialize = Initialize;
  112. SetupUIConnections = SetupUIConnections;
  113. TriggerUIModule = TriggerUIModule
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement