init
This commit is contained in:
@@ -0,0 +1,509 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)); -- Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local S = E:GetModule("Skins")
|
||||
|
||||
--Lua functions
|
||||
local _G = _G
|
||||
local unpack = unpack
|
||||
local type, ipairs, tonumber = type, ipairs, tonumber
|
||||
local floor, select = floor, select
|
||||
--WoW API / Variables
|
||||
local CreateFrame = CreateFrame
|
||||
local IsAddOnLoaded = IsAddOnLoaded
|
||||
local InCombatLockdown = InCombatLockdown
|
||||
local EditBox_ClearFocus = EditBox_ClearFocus
|
||||
local RESET = RESET
|
||||
|
||||
local selectedValue, grid = "ALL"
|
||||
|
||||
E.ConfigModeLayouts = {
|
||||
"ALL",
|
||||
"GENERAL",
|
||||
"SOLO",
|
||||
"PARTY",
|
||||
"ARENA",
|
||||
"RAID",
|
||||
"ACTIONBARS"
|
||||
}
|
||||
|
||||
E.ConfigModeLocalizedStrings = {
|
||||
ALL = ALL,
|
||||
GENERAL = GENERAL,
|
||||
SOLO = SOLO,
|
||||
PARTY = PARTY,
|
||||
ARENA = ARENA,
|
||||
RAID = RAID,
|
||||
ACTIONBARS = ACTIONBARS_LABEL
|
||||
}
|
||||
|
||||
function E:Grid_Show()
|
||||
if not grid then
|
||||
E:Grid_Create()
|
||||
elseif grid.boxSize ~= E.db.gridSize then
|
||||
grid:Hide()
|
||||
E:Grid_Create()
|
||||
else
|
||||
grid:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function E:Grid_Hide()
|
||||
if grid then
|
||||
grid:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
function E:ToggleMoveMode(override, configType)
|
||||
if InCombatLockdown() then return end
|
||||
if override ~= nil and override ~= "" then E.ConfigurationMode = override end
|
||||
|
||||
if E.ConfigurationMode ~= true then
|
||||
E:Grid_Show()
|
||||
|
||||
if not ElvUIMoverPopupWindow then
|
||||
E:CreateMoverPopup()
|
||||
end
|
||||
|
||||
ElvUIMoverPopupWindow:Show()
|
||||
|
||||
if IsAddOnLoaded("ElvUI_OptionsUI") then
|
||||
if E.Libs.AceConfigDialog then
|
||||
E.Libs.AceConfigDialog:Close("ElvUI")
|
||||
end
|
||||
|
||||
GameTooltip:Hide()
|
||||
end
|
||||
|
||||
E.ConfigurationMode = true
|
||||
else
|
||||
E:Grid_Hide()
|
||||
|
||||
if ElvUIMoverPopupWindow then
|
||||
ElvUIMoverPopupWindow:Hide()
|
||||
end
|
||||
|
||||
E.ConfigurationMode = false
|
||||
end
|
||||
|
||||
if type(configType) ~= "string" then
|
||||
configType = nil
|
||||
end
|
||||
|
||||
self:ToggleMovers(E.ConfigurationMode, configType or "ALL")
|
||||
end
|
||||
|
||||
function E:Grid_GetRegion()
|
||||
if grid then
|
||||
if grid.regionCount and grid.regionCount > 0 then
|
||||
local line = select(grid.regionCount, grid:GetRegions())
|
||||
grid.regionCount = grid.regionCount - 1
|
||||
line:SetAlpha(1)
|
||||
return line
|
||||
else
|
||||
return grid:CreateTexture()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function E:Grid_Create()
|
||||
if not grid then
|
||||
grid = CreateFrame("Frame", "ElvUIGrid", E.UIParent)
|
||||
grid:SetFrameStrata("BACKGROUND")
|
||||
else
|
||||
grid.regionCount = 0
|
||||
local numRegions = grid:GetNumRegions()
|
||||
for i = 1, numRegions do
|
||||
local region = select(i, grid:GetRegions())
|
||||
if region and region.IsObjectType and region:IsObjectType("Texture") then
|
||||
grid.regionCount = grid.regionCount + 1
|
||||
region:SetAlpha(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local size = E.mult
|
||||
local width, height = E.UIParent:GetSize()
|
||||
|
||||
local ratio = width / height
|
||||
local hStepheight = height * ratio
|
||||
local wStep = width / E.db.gridSize
|
||||
local hStep = hStepheight / E.db.gridSize
|
||||
|
||||
grid.boxSize = E.db.gridSize
|
||||
grid:SetPoint("CENTER", E.UIParent)
|
||||
grid:SetSize(width, height)
|
||||
grid:Show()
|
||||
|
||||
for i = 0, E.db.gridSize do
|
||||
local tx = E:Grid_GetRegion()
|
||||
if i == E.db.gridSize / 2 then
|
||||
tx:SetTexture(1, 0, 0)
|
||||
tx:SetDrawLayer("BORDER")
|
||||
else
|
||||
tx:SetTexture(0, 0, 0)
|
||||
tx:SetDrawLayer("BACKGROUND")
|
||||
end
|
||||
tx:ClearAllPoints()
|
||||
tx:Point("TOPLEFT", grid, "TOPLEFT", i*wStep - (size/2), 0)
|
||||
tx:Point("BOTTOMRIGHT", grid, "BOTTOMLEFT", i*wStep + (size/2), 0)
|
||||
end
|
||||
|
||||
do
|
||||
local tx = E:Grid_GetRegion()
|
||||
tx:SetTexture(1, 0, 0)
|
||||
tx:SetDrawLayer("BORDER")
|
||||
tx:ClearAllPoints()
|
||||
tx:Point("TOPLEFT", grid, "TOPLEFT", 0, -(height/2) + (size/2))
|
||||
tx:Point("BOTTOMRIGHT", grid, "TOPRIGHT", 0, -(height/2 + size/2))
|
||||
end
|
||||
|
||||
for i = 1, floor((height/2)/hStep) do
|
||||
local tx = E:Grid_GetRegion()
|
||||
tx:SetTexture(0, 0, 0)
|
||||
tx:SetDrawLayer("BACKGROUND")
|
||||
tx:ClearAllPoints()
|
||||
tx:Point("TOPLEFT", grid, "TOPLEFT", 0, -(height/2+i*hStep) + (size/2))
|
||||
tx:Point("BOTTOMRIGHT", grid, "TOPRIGHT", 0, -(height/2+i*hStep + size/2))
|
||||
|
||||
tx = E:Grid_GetRegion()
|
||||
tx:SetTexture(0, 0, 0)
|
||||
tx:SetDrawLayer("BACKGROUND")
|
||||
tx:ClearAllPoints()
|
||||
tx:Point("TOPLEFT", grid, "TOPLEFT", 0, -(height/2-i*hStep) + (size/2))
|
||||
tx:Point("BOTTOMRIGHT", grid, "TOPRIGHT", 0, -(height/2-i*hStep + size/2))
|
||||
end
|
||||
end
|
||||
|
||||
local function ConfigMode_OnClick(self)
|
||||
selectedValue = self.value
|
||||
E:ToggleMoveMode(false, self.value)
|
||||
UIDropDownMenu_SetSelectedValue(ElvUIMoverPopupWindowDropDown, self.value)
|
||||
end
|
||||
|
||||
local function ConfigMode_Initialize()
|
||||
local info = _G.UIDropDownMenu_CreateInfo()
|
||||
info.func = ConfigMode_OnClick
|
||||
|
||||
for _, configMode in ipairs(E.ConfigModeLayouts) do
|
||||
info.text = E.ConfigModeLocalizedStrings[configMode]
|
||||
info.value = configMode
|
||||
UIDropDownMenu_AddButton(info)
|
||||
end
|
||||
|
||||
UIDropDownMenu_SetSelectedValue(ElvUIMoverPopupWindowDropDown, selectedValue)
|
||||
end
|
||||
|
||||
function E:NudgeMover(nudgeX, nudgeY)
|
||||
local mover = ElvUIMoverNudgeWindow.child
|
||||
local x, y, point = E:CalculateMoverPoints(mover, nudgeX, nudgeY)
|
||||
|
||||
mover:ClearAllPoints()
|
||||
mover:Point(mover.positionOverride or point, E.UIParent, mover.positionOverride and "BOTTOMLEFT" or point, x, y)
|
||||
E:SaveMoverPosition(mover.name)
|
||||
|
||||
--Update coordinates in Nudge Window
|
||||
E:UpdateNudgeFrame(mover, x, y)
|
||||
end
|
||||
|
||||
function E:UpdateNudgeFrame(mover, x, y)
|
||||
if not (x and y) then
|
||||
x, y = E:CalculateMoverPoints(mover)
|
||||
end
|
||||
|
||||
x = E:Round(x, 0)
|
||||
y = E:Round(y, 0)
|
||||
|
||||
local ElvUIMoverNudgeWindow = ElvUIMoverNudgeWindow
|
||||
ElvUIMoverNudgeWindow.xOffset:SetText(x)
|
||||
ElvUIMoverNudgeWindow.yOffset:SetText(y)
|
||||
ElvUIMoverNudgeWindow.xOffset.currentValue = x
|
||||
ElvUIMoverNudgeWindow.yOffset.currentValue = y
|
||||
ElvUIMoverNudgeWindow.title:SetText(mover.textString)
|
||||
end
|
||||
|
||||
function E:AssignFrameToNudge()
|
||||
ElvUIMoverNudgeWindow.child = self
|
||||
E:UpdateNudgeFrame(self)
|
||||
end
|
||||
|
||||
function E:CreateMoverPopup()
|
||||
local f = CreateFrame("Frame", "ElvUIMoverPopupWindow", UIParent)
|
||||
f:SetFrameStrata("DIALOG")
|
||||
f:SetToplevel(true)
|
||||
f:EnableMouse(true)
|
||||
f:SetMovable(true)
|
||||
f:SetFrameLevel(99)
|
||||
f:SetClampedToScreen(true)
|
||||
f:Width(360)
|
||||
f:Height(195)
|
||||
f:SetTemplate("Transparent")
|
||||
f:Point("BOTTOM", UIParent, "CENTER", 0, 100)
|
||||
f:SetScript("OnHide", function()
|
||||
if ElvUIMoverPopupWindowDropDown then
|
||||
UIDropDownMenu_SetSelectedValue(ElvUIMoverPopupWindowDropDown, "ALL")
|
||||
end
|
||||
end)
|
||||
f:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
f:CreateShadow(5)
|
||||
f:Hide()
|
||||
|
||||
local header = CreateFrame("Button", nil, f)
|
||||
header:SetTemplate(nil, true)
|
||||
header:Width(100)
|
||||
header:Height(25)
|
||||
header:Point("CENTER", f, "TOP")
|
||||
header:SetFrameLevel(header:GetFrameLevel() + 2)
|
||||
header:EnableMouse(true)
|
||||
header:RegisterForClicks("AnyUp", "AnyDown")
|
||||
header:SetScript("OnMouseDown", function() f:StartMoving() end)
|
||||
header:SetScript("OnMouseUp", function() f:StopMovingOrSizing() end)
|
||||
header:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
|
||||
local title = header:CreateFontString("OVERLAY")
|
||||
title:FontTemplate()
|
||||
title:Point("CENTER", header, "CENTER")
|
||||
title:SetText("ElvUI")
|
||||
|
||||
local desc = f:CreateFontString("ARTWORK")
|
||||
desc:SetFontObject("GameFontHighlight")
|
||||
desc:SetJustifyV("TOP")
|
||||
desc:SetJustifyH("LEFT")
|
||||
desc:Point("TOPLEFT", 18, -32)
|
||||
desc:Point("BOTTOMRIGHT", -18, 48)
|
||||
desc:SetText(L["DESC_MOVERCONFIG"])
|
||||
|
||||
local snapping = CreateFrame("CheckButton", f:GetName().."CheckButton", f, "OptionsCheckButtonTemplate")
|
||||
_G[snapping:GetName().."Text"]:SetText(L["Sticky Frames"])
|
||||
|
||||
snapping:SetScript("OnShow", function(cb)
|
||||
cb:SetChecked(E.db.general.stickyFrames)
|
||||
end)
|
||||
|
||||
snapping:SetScript("OnClick", function(cb)
|
||||
E.db.general.stickyFrames = cb:GetChecked()
|
||||
end)
|
||||
|
||||
local lock = CreateFrame("Button", f:GetName().."CloseButton", f, "OptionsButtonTemplate")
|
||||
_G[lock:GetName().."Text"]:SetText(L["Lock"])
|
||||
|
||||
lock:SetScript("OnClick", function()
|
||||
E:ToggleMoveMode(true)
|
||||
|
||||
if IsAddOnLoaded("ElvUI_OptionsUI") and E.Libs.AceConfigDialog then
|
||||
E.Libs.AceConfigDialog:Open("ElvUI")
|
||||
end
|
||||
|
||||
selectedValue = "ALL"
|
||||
UIDropDownMenu_SetSelectedValue(ElvUIMoverPopupWindowDropDown, selectedValue)
|
||||
end)
|
||||
|
||||
local align = CreateFrame("EditBox", f:GetName().."EditBox", f, "InputBoxTemplate")
|
||||
align:Width(24)
|
||||
align:Height(17)
|
||||
align:SetAutoFocus(false)
|
||||
align:SetScript("OnEscapePressed", function(eb)
|
||||
eb:SetText(E.db.gridSize)
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
align:SetScript("OnEnterPressed", function(eb)
|
||||
local text = eb:GetText()
|
||||
if tonumber(text) then
|
||||
if tonumber(text) <= 256 and tonumber(text) >= 4 then
|
||||
E.db.gridSize = tonumber(text)
|
||||
else
|
||||
eb:SetText(E.db.gridSize)
|
||||
end
|
||||
else
|
||||
eb:SetText(E.db.gridSize)
|
||||
end
|
||||
E:Grid_Show()
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
align:SetScript("OnEditFocusLost", function(eb)
|
||||
eb:SetText(E.db.gridSize)
|
||||
end)
|
||||
align:SetScript("OnEditFocusGained", align.HighlightText)
|
||||
align:SetScript("OnShow", function(eb)
|
||||
EditBox_ClearFocus(eb)
|
||||
eb:SetText(E.db.gridSize)
|
||||
end)
|
||||
|
||||
align.text = align:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
||||
align.text:Point("RIGHT", align, "LEFT", -4, 0)
|
||||
align.text:SetText(L["Grid Size:"])
|
||||
|
||||
--position buttons
|
||||
snapping:Point("BOTTOMLEFT", 14, 10)
|
||||
lock:Point("BOTTOMRIGHT", -14, 14)
|
||||
align:Point("TOPRIGHT", lock, "TOPLEFT", -4, -2)
|
||||
|
||||
S:HandleCheckBox(snapping)
|
||||
S:HandleButton(lock)
|
||||
S:HandleEditBox(align)
|
||||
|
||||
f:RegisterEvent("PLAYER_REGEN_DISABLED")
|
||||
f:SetScript("OnEvent", function(mover)
|
||||
if mover:IsShown() then
|
||||
mover:Hide()
|
||||
E:Grid_Hide()
|
||||
E:ToggleMoveMode(true)
|
||||
end
|
||||
end)
|
||||
|
||||
local configMode = CreateFrame("Frame", f:GetName().."DropDown", f, "UIDropDownMenuTemplate")
|
||||
configMode:Point("BOTTOMRIGHT", lock, "TOPRIGHT", 8, -5)
|
||||
S:HandleDropDownBox(configMode, 148)
|
||||
configMode.text = configMode:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
||||
configMode.text:Point("RIGHT", configMode.backdrop, "LEFT", -2, 0)
|
||||
configMode.text:SetText(L["Config Mode:"])
|
||||
|
||||
UIDropDownMenu_Initialize(configMode, ConfigMode_Initialize)
|
||||
|
||||
local nudgeFrame = CreateFrame("Frame", "ElvUIMoverNudgeWindow", E.UIParent)
|
||||
nudgeFrame:SetFrameStrata("DIALOG")
|
||||
nudgeFrame:Width(200)
|
||||
nudgeFrame:Height(110)
|
||||
nudgeFrame:SetTemplate("Transparent")
|
||||
nudgeFrame:CreateShadow(5)
|
||||
nudgeFrame:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
nudgeFrame:SetFrameLevel(100)
|
||||
nudgeFrame:Hide()
|
||||
nudgeFrame:EnableMouse(true)
|
||||
nudgeFrame:SetClampedToScreen(true)
|
||||
|
||||
ElvUIMoverPopupWindow:HookScript("OnHide", function() ElvUIMoverNudgeWindow:Hide() end)
|
||||
|
||||
desc = nudgeFrame:CreateFontString("ARTWORK")
|
||||
desc:SetFontObject("GameFontHighlight")
|
||||
desc:SetJustifyV("TOP")
|
||||
desc:SetJustifyH("LEFT")
|
||||
desc:Point("TOPLEFT", 18, -15)
|
||||
desc:Point("BOTTOMRIGHT", -18, 28)
|
||||
desc:SetJustifyH("CENTER")
|
||||
nudgeFrame.title = desc
|
||||
|
||||
header = CreateFrame("Button", nil, nudgeFrame)
|
||||
header:SetTemplate(nil, true)
|
||||
header:Width(100)
|
||||
header:Height(25)
|
||||
header:Point("CENTER", nudgeFrame, "TOP")
|
||||
header:SetFrameLevel(header:GetFrameLevel() + 2)
|
||||
header:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
|
||||
title = header:CreateFontString("OVERLAY")
|
||||
title:FontTemplate()
|
||||
title:Point("CENTER", header, "CENTER")
|
||||
title:SetText(L["Nudge"])
|
||||
|
||||
local xOffset = CreateFrame("EditBox", nudgeFrame:GetName().."XEditBox", nudgeFrame, "InputBoxTemplate")
|
||||
xOffset:Width(50)
|
||||
xOffset:Height(17)
|
||||
xOffset:SetAutoFocus(false)
|
||||
xOffset.currentValue = 0
|
||||
xOffset:SetScript("OnEscapePressed", function(eb)
|
||||
eb:SetText(E:Round(xOffset.currentValue))
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
xOffset:SetScript("OnEnterPressed", function(eb)
|
||||
local num = eb:GetText()
|
||||
if tonumber(num) then
|
||||
local diff = num - xOffset.currentValue
|
||||
xOffset.currentValue = num
|
||||
E:NudgeMover(diff)
|
||||
end
|
||||
eb:SetText(E:Round(xOffset.currentValue))
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
xOffset:SetScript("OnEditFocusLost", function(eb)
|
||||
eb:SetText(E:Round(xOffset.currentValue))
|
||||
end)
|
||||
xOffset:SetScript("OnEditFocusGained", xOffset.HighlightText)
|
||||
xOffset:SetScript("OnShow", function(eb)
|
||||
EditBox_ClearFocus(eb)
|
||||
eb:SetText(E:Round(xOffset.currentValue))
|
||||
end)
|
||||
|
||||
xOffset.text = xOffset:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
||||
xOffset.text:Point("RIGHT", xOffset, "LEFT", -4, 0)
|
||||
xOffset.text:SetText("X:")
|
||||
xOffset:Point("BOTTOMRIGHT", nudgeFrame, "CENTER", -6, 8)
|
||||
nudgeFrame.xOffset = xOffset
|
||||
S:HandleEditBox(xOffset)
|
||||
|
||||
local yOffset = CreateFrame("EditBox", nudgeFrame:GetName().."YEditBox", nudgeFrame, "InputBoxTemplate")
|
||||
yOffset:Width(50)
|
||||
yOffset:Height(17)
|
||||
yOffset:SetAutoFocus(false)
|
||||
yOffset.currentValue = 0
|
||||
yOffset:SetScript("OnEscapePressed", function(eb)
|
||||
eb:SetText(E:Round(yOffset.currentValue))
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
yOffset:SetScript("OnEnterPressed", function(eb)
|
||||
local num = eb:GetText()
|
||||
if tonumber(num) then
|
||||
local diff = num - yOffset.currentValue
|
||||
yOffset.currentValue = num
|
||||
E:NudgeMover(nil, diff)
|
||||
end
|
||||
eb:SetText(E:Round(yOffset.currentValue))
|
||||
EditBox_ClearFocus(eb)
|
||||
end)
|
||||
yOffset:SetScript("OnEditFocusLost", function(eb)
|
||||
eb:SetText(E:Round(yOffset.currentValue))
|
||||
end)
|
||||
yOffset:SetScript("OnEditFocusGained", yOffset.HighlightText)
|
||||
yOffset:SetScript("OnShow", function(eb)
|
||||
EditBox_ClearFocus(eb)
|
||||
eb:SetText(E:Round(yOffset.currentValue))
|
||||
end)
|
||||
|
||||
yOffset.text = yOffset:CreateFontString(nil, "OVERLAY", "GameFontNormal")
|
||||
yOffset.text:Point("RIGHT", yOffset, "LEFT", -4, 0)
|
||||
yOffset.text:SetText("Y:")
|
||||
yOffset:Point("BOTTOMLEFT", nudgeFrame, "CENTER", 16, 8)
|
||||
nudgeFrame.yOffset = yOffset
|
||||
S:HandleEditBox(yOffset)
|
||||
|
||||
local resetButton = CreateFrame("Button", nudgeFrame:GetName().."ResetButton", nudgeFrame, "UIPanelButtonTemplate")
|
||||
resetButton:SetText(RESET)
|
||||
resetButton:Point("TOP", nudgeFrame, "CENTER", 0, 2)
|
||||
resetButton:Size(100, 25)
|
||||
resetButton:SetScript("OnClick", function()
|
||||
if ElvUIMoverNudgeWindow.child.textString then
|
||||
E:ResetMovers(ElvUIMoverNudgeWindow.child.textString)
|
||||
end
|
||||
end)
|
||||
S:HandleButton(resetButton)
|
||||
|
||||
local upButton = CreateFrame("Button", nudgeFrame:GetName().."UpButton", nudgeFrame)
|
||||
upButton:Point("BOTTOMRIGHT", nudgeFrame, "BOTTOM", -6, 4)
|
||||
upButton:SetScript("OnClick", function()
|
||||
E:NudgeMover(nil, 1)
|
||||
end)
|
||||
S:HandleNextPrevButton(upButton)
|
||||
upButton:SetSize(22, 22)
|
||||
|
||||
local downButton = CreateFrame("Button", nudgeFrame:GetName().."DownButton", nudgeFrame)
|
||||
downButton:Point("BOTTOMLEFT", nudgeFrame, "BOTTOM", 6, 4)
|
||||
downButton:SetScript("OnClick", function()
|
||||
E:NudgeMover(nil, -1)
|
||||
end)
|
||||
S:HandleNextPrevButton(downButton)
|
||||
downButton:SetSize(22, 22)
|
||||
|
||||
local leftButton = CreateFrame("Button", nudgeFrame:GetName().."LeftButton", nudgeFrame)
|
||||
leftButton:Point("RIGHT", upButton, "LEFT", -6, 0)
|
||||
leftButton:SetScript("OnClick", function()
|
||||
E:NudgeMover(-1)
|
||||
end)
|
||||
S:HandleNextPrevButton(leftButton)
|
||||
leftButton:SetSize(22, 22)
|
||||
|
||||
local rightButton = CreateFrame("Button", nudgeFrame:GetName().."RightButton", nudgeFrame)
|
||||
rightButton:Point("LEFT", downButton, "RIGHT", 6, 0)
|
||||
rightButton:SetScript("OnClick", function()
|
||||
E:NudgeMover(1)
|
||||
end)
|
||||
S:HandleNextPrevButton(rightButton)
|
||||
rightButton:SetSize(22, 22)
|
||||
end
|
||||
Reference in New Issue
Block a user