if (type (Responsive) == 'table') then return Responsive; end -- local functions local math_abs = _G.math.abs local math_max = _G.math.max local math_min = _G.math.min local math_clamp = _G.math.clamp or (function(value, min, max) return math_max(min, math_min(value, max)) end) local getScreenSize = _G.guiGetScreenSize -- class functions local Responsive = {} function Responsive:Constructor(DevScreen) local screenX, screenY = getScreenSize() self.DevScreen = DevScreen or {x = 1920, y = 1080} self.Screen = {x = (screenX or 1920), y = (screenY or 1080)} if (math_abs(self.Screen.x / self.Screen.y) < 1.7) then self.Scale = math_clamp((self.Screen.x / self.DevScreen.x), 0.55, 2) else self.Scale = math_clamp((self.Screen.y / self.DevScreen.y), 0.55, 2) end self.ScaleX = math_clamp((self.Screen.x / self.DevScreen.x), 0.55, 2) self.ScaleY = math_clamp((self.Screen.y / self.DevScreen.y), 0.55, 2) self.ScaleInverted = (1 / self.Scale) self.ScaleXInverted = (1 / self.ScaleX) self.ScaleYInverted = (1 / self.ScaleY) if self.Screen.x < self.DevScreen.x then self.DifferenceX = math_abs(self.Screen.x - self.DevScreen.x * self.Scale) else -- ultrawide or bigger self.DifferenceX = 0 end if self.Screen.y < self.DevScreen.y then self.DifferenceY = math_abs(self.Screen.y - self.DevScreen.y * self.Scale) else -- ultrawide or bigger self.DifferenceY = 0 end return self end function Responsive:Respc(value) if (not value) then return end if (value == 0) then return 0 end return (value * self.Scale) end function Responsive:RespcX(value) if (not value) then return end if (value == 0) then return 0 end return (value * self.ScaleX) end function Responsive:RespcY(value) if (not value) then return end if (value == 0) then return 0 end return (value * self.ScaleY) end function Responsive:RespcInverted(value) if (not value) then return end return (value * self.ScaleInverted) end function Responsive:RespcXInverted(value) if (not value) then return end return (value * self.ScaleXInverted) end function Responsive:RespcYInverted(value) if (not value) then return end return (value * self.ScaleYInverted) end _G.Responsive = Responsive return Responsive