You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
380 lines
15 KiB
380 lines
15 KiB
local _, Cell = ...
|
|
local L = Cell.L
|
|
local F = Cell.funcs
|
|
local P = Cell.pixelPerfectFuncs
|
|
local LCG = LibStub("LibCustomGlow-1.0")
|
|
|
|
-------------------------------------------------
|
|
-- raid tools
|
|
-------------------------------------------------
|
|
local rtPane
|
|
local resCB, reportCB, buffCB, buffDropdown, sizeEditBox, readyPullCB, styleDropdown, pullDropdown, secEditBox, marksBarCB, marksDropdown, marksShowSoloCB, fadeOutToolsCB
|
|
|
|
local function CreateRTPane()
|
|
rtPane = Cell:CreateTitledPane(Cell.frames.utilitiesTab, L["Raid Tools"].." |cFF777777"..L["only in group"], 422, 167)
|
|
rtPane:SetPoint("TOPLEFT", 5, -5)
|
|
rtPane:SetPoint("BOTTOMRIGHT", -5, 5)
|
|
|
|
local unlockBtn = Cell:CreateButton(rtPane, L["Unlock"], "accent", {77, 17})
|
|
unlockBtn:SetPoint("TOPRIGHT", rtPane)
|
|
unlockBtn.locked = true
|
|
unlockBtn:SetScript("OnClick", function(self)
|
|
if self.locked then
|
|
unlockBtn:SetText(L["Lock"])
|
|
self.locked = false
|
|
Cell.vars.showMover = true
|
|
LCG.PixelGlow_Start(unlockBtn, {0,1,0,1}, 9, 0.25, 8, 1)
|
|
else
|
|
unlockBtn:SetText(L["Unlock"])
|
|
self.locked = true
|
|
Cell.vars.showMover = false
|
|
LCG.PixelGlow_Stop(unlockBtn)
|
|
end
|
|
Cell:Fire("ShowMover", Cell.vars.showMover)
|
|
end)
|
|
|
|
-- battle res
|
|
resCB = Cell:CreateCheckButton(rtPane, L["Battle Res Timer"], function(checked, self)
|
|
CellDB["tools"]["showBattleRes"] = checked
|
|
Cell:Fire("UpdateTools", "battleRes")
|
|
end, L["Battle Res Timer"], L["Only show during encounter or in mythic+"])
|
|
resCB:SetPoint("TOPLEFT", rtPane, "TOPLEFT", 5, -27)
|
|
resCB:SetEnabled(Cell.isRetail)
|
|
|
|
-- death report
|
|
reportCB = Cell:CreateCheckButton(rtPane, L["Death Report"], function(checked, self)
|
|
CellDB["tools"]["deathReport"][1] = checked
|
|
Cell:Fire("UpdateTools", "deathReport")
|
|
end)
|
|
reportCB:SetPoint("TOPLEFT", resCB, "BOTTOMLEFT", 0, -15)
|
|
reportCB:HookScript("OnEnter", function()
|
|
CellTooltip:SetOwner(reportCB, "ANCHOR_TOPLEFT", 0, 2)
|
|
CellTooltip:AddLine(L["Death Report"].." |cffff2727"..L["HIGH CPU USAGE"])
|
|
CellTooltip:AddLine("|cffff2727" .. L["Disabled in battlegrounds and arenas"])
|
|
CellTooltip:AddLine("|cffffffff" .. L["Report deaths to group"])
|
|
CellTooltip:AddLine("|cffffffff" .. L["Use |cFFFFB5C5/cell report X|r to set the number of reports during a raid encounter"])
|
|
CellTooltip:AddLine("|cffffffff" .. L["Current"]..": |cFFFFB5C5"..(CellDB["tools"]["deathReport"][2]==0 and L["all"] or string.format(L["first %d"], CellDB["tools"]["deathReport"][2])))
|
|
CellTooltip:Show()
|
|
end)
|
|
reportCB:HookScript("OnLeave", function()
|
|
CellTooltip:Hide()
|
|
end)
|
|
|
|
-- buff tracker
|
|
buffCB = Cell:CreateCheckButton(rtPane, L["Buff Tracker"], function(checked, self)
|
|
CellDB["tools"]["buffTracker"][1] = checked
|
|
buffDropdown:SetEnabled(checked)
|
|
sizeEditBox:SetEnabled(checked)
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
end, L["Buff Tracker"].." |cffff7727"..L["MODERATE CPU USAGE"], L["Check if your group members need some raid buffs"],
|
|
Cell.isRetail and L["|cffffb5c5Left-Click:|r cast the spell"] or "|cffffb5c5(Shift)|r "..L["|cffffb5c5Left-Click:|r cast the spell"],
|
|
L["|cffffb5c5Right-Click:|r report unaffected"])
|
|
-- L["Use |cFFFFB5C5/cell buff X|r to set icon size"],
|
|
-- "|cffffffff" .. L["Current"]..": |cFFFFB5C5"..CellDB["tools"]["buffTracker"][3])
|
|
buffCB:SetPoint("TOPLEFT", reportCB, "BOTTOMLEFT", 0, -15)
|
|
|
|
buffDropdown = Cell:CreateDropdown(rtPane, 120)
|
|
buffDropdown:SetPoint("TOPLEFT", buffCB, "BOTTOMRIGHT", 5, -5)
|
|
buffDropdown:SetItems({
|
|
{
|
|
["text"] = L["left-to-right"],
|
|
["value"] = "left-to-right",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["buffTracker"][2] = "left-to-right"
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["right-to-left"],
|
|
["value"] = "right-to-left",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["buffTracker"][2] = "right-to-left"
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["top-to-bottom"],
|
|
["value"] = "top-to-bottom",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["buffTracker"][2] = "top-to-bottom"
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["bottom-to-top"],
|
|
["value"] = "bottom-to-top",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["buffTracker"][2] = "bottom-to-top"
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
end,
|
|
},
|
|
})
|
|
|
|
sizeEditBox = Cell:CreateEditBox(rtPane, 38, 20, false, false, true)
|
|
sizeEditBox:SetPoint("TOPLEFT", buffDropdown, "TOPRIGHT", 5, 0)
|
|
sizeEditBox:SetMaxLetters(3)
|
|
|
|
sizeEditBox.confirmBtn = Cell:CreateButton(rtPane, "OK", "accent", {27, 20})
|
|
sizeEditBox.confirmBtn:SetPoint("TOPLEFT", sizeEditBox, "TOPRIGHT", P:Scale(-1), 0)
|
|
sizeEditBox.confirmBtn:Hide()
|
|
sizeEditBox.confirmBtn:SetScript("OnHide", function()
|
|
sizeEditBox.confirmBtn:Hide()
|
|
end)
|
|
sizeEditBox.confirmBtn:SetScript("OnClick", function()
|
|
CellDB["tools"]["buffTracker"][3] = tonumber(sizeEditBox:GetText())
|
|
Cell:Fire("UpdateTools", "buffTracker")
|
|
sizeEditBox.confirmBtn:Hide()
|
|
sizeEditBox:ClearFocus()
|
|
end)
|
|
|
|
sizeEditBox:SetScript("OnTextChanged", function(self, userChanged)
|
|
if userChanged then
|
|
local newSize = tonumber(self:GetText())
|
|
if newSize and newSize > 0 and newSize ~= CellDB["tools"]["buffTracker"][3] then
|
|
sizeEditBox.confirmBtn:Show()
|
|
else
|
|
sizeEditBox.confirmBtn:Hide()
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- ready & pull
|
|
readyPullCB = Cell:CreateCheckButton(rtPane, L["ReadyCheck and PullTimer buttons"], function(checked, self)
|
|
CellDB["tools"]["readyAndPull"][1] = checked
|
|
styleDropdown:SetEnabled(checked)
|
|
pullDropdown:SetEnabled(checked)
|
|
secEditBox:SetEnabled(checked)
|
|
Cell:Fire("UpdateTools", "buttons")
|
|
end, L["ReadyCheck and PullTimer buttons"], L["Only show when you have permission to do this"], L["readyCheckTips"], L["pullTimerTips"])
|
|
readyPullCB:SetPoint("TOPLEFT", buffCB, "BOTTOMLEFT", 0, -43)
|
|
Cell:RegisterForCloseDropdown(readyPullCB)
|
|
|
|
styleDropdown = Cell:CreateDropdown(rtPane, 120)
|
|
styleDropdown:SetPoint("TOPLEFT", readyPullCB, "BOTTOMRIGHT", 5, -5)
|
|
styleDropdown:SetItems({
|
|
{
|
|
["text"] = L["Ready"].." / "..L["Pull"],
|
|
["value"] = "text_button",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][2] = "text_button"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = "|TInterface\\AddOns\\Cell\\Media\\Icons\\ready:14|t / |TInterface\\AddOns\\Cell\\Media\\Icons\\pull:14|t A",
|
|
["value"] = "icon_button_h",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][2] = "icon_button_h"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = "|TInterface\\AddOns\\Cell\\Media\\Icons\\ready:14|t / |TInterface\\AddOns\\Cell\\Media\\Icons\\pull:14|t B",
|
|
["value"] = "icon_button_v",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][2] = "icon_button_v"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
})
|
|
|
|
pullDropdown = Cell:CreateDropdown(rtPane, 109)
|
|
pullDropdown:SetPoint("TOPLEFT", styleDropdown, "TOPRIGHT", 5, 0)
|
|
pullDropdown:SetItems({
|
|
{
|
|
["text"] = L["Default"],
|
|
["value"] = "default",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][3][1] = "default"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = "MRT",
|
|
["value"] = "mrt",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][3][1] = "mrt"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = "DBM",
|
|
["value"] = "dbm",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][3][1] = "dbm"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = "BigWigs",
|
|
["value"] = "bw",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["readyAndPull"][3][1] = "bw"
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
end,
|
|
},
|
|
})
|
|
|
|
secEditBox = Cell:CreateEditBox(rtPane, 38, 20, false, false, true)
|
|
secEditBox:SetPoint("TOPLEFT", pullDropdown, "TOPRIGHT", 5, 0)
|
|
secEditBox:SetMaxLetters(3)
|
|
|
|
secEditBox.confirmBtn = Cell:CreateButton(rtPane, "OK", "accent", {27, 20})
|
|
secEditBox.confirmBtn:SetPoint("TOPLEFT", secEditBox, "TOPRIGHT", P:Scale(-1), 0)
|
|
secEditBox.confirmBtn:Hide()
|
|
secEditBox.confirmBtn:SetScript("OnHide", function()
|
|
secEditBox.confirmBtn:Hide()
|
|
end)
|
|
secEditBox.confirmBtn:SetScript("OnClick", function()
|
|
CellDB["tools"]["readyAndPull"][3][2] = tonumber(secEditBox:GetText())
|
|
Cell:Fire("UpdateTools", "readyAndPull")
|
|
secEditBox.confirmBtn:Hide()
|
|
end)
|
|
|
|
secEditBox:SetScript("OnTextChanged", function(self, userChanged)
|
|
if userChanged then
|
|
local newSec = tonumber(self:GetText())
|
|
if newSec and newSec > 0 and newSec ~= CellDB["tools"]["readyAndPull"][3][2] then
|
|
secEditBox.confirmBtn:Show()
|
|
else
|
|
secEditBox.confirmBtn:Hide()
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- marks bar
|
|
marksBarCB = Cell:CreateCheckButton(rtPane, L["Marks Bar"], function(checked, self)
|
|
CellDB["tools"]["marks"][1] = checked
|
|
marksDropdown:SetEnabled(checked)
|
|
marksShowSoloCB:SetEnabled(checked)
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end, L["Marks Bar"], L["Only show when you have permission to do this"], L["marksTips"])
|
|
marksBarCB:SetPoint("TOPLEFT", readyPullCB, "BOTTOMLEFT", 0, -43)
|
|
Cell:RegisterForCloseDropdown(marksBarCB)
|
|
|
|
marksDropdown = Cell:CreateDropdown(rtPane, 217)
|
|
marksDropdown:SetPoint("TOPLEFT", marksBarCB, "BOTTOMRIGHT", 5, -5)
|
|
marksDropdown:SetItems({
|
|
{
|
|
["text"] = L["Target Marks"].." ("..L["Horizontal"]..")",
|
|
["value"] = "target_h",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "target_h"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["Target Marks"].." ("..L["Vertical"]..")",
|
|
["value"] = "target_v",
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "target_v"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["World Marks"].." ("..L["Horizontal"]..")",
|
|
["value"] = "world_h",
|
|
["disabled"] = Cell.isVanilla or Cell.isCata,
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "world_h"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["World Marks"].." ("..L["Vertical"]..")",
|
|
["value"] = "world_v",
|
|
["disabled"] = Cell.isVanilla or Cell.isCata,
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "world_v"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["Both"].." ("..L["Horizontal"]..")",
|
|
["value"] = "both_h",
|
|
["disabled"] = Cell.isVanilla or Cell.isCata,
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "both_h"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
},
|
|
{
|
|
["text"] = L["Both"].." ("..L["Vertical"]..")",
|
|
["value"] = "both_v",
|
|
["disabled"] = Cell.isVanilla or Cell.isCata,
|
|
["onClick"] = function()
|
|
CellDB["tools"]["marks"][3] = "both_v"
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end,
|
|
}
|
|
})
|
|
|
|
marksShowSoloCB = Cell:CreateCheckButton(rtPane, L["Show Solo"], function(checked, self)
|
|
CellDB["tools"]["marks"][2] = checked
|
|
Cell:Fire("UpdateTools", "marks")
|
|
end)
|
|
marksShowSoloCB:SetPoint("TOPLEFT", marksDropdown, "BOTTOMLEFT", 0, -8)
|
|
|
|
-- fadeOut
|
|
fadeOutToolsCB = Cell:CreateCheckButton(rtPane, L["Fade Out These Buttons"], function(checked, self)
|
|
CellDB["tools"]["fadeOut"] = checked
|
|
Cell:Fire("UpdateTools", "fadeOut")
|
|
end)
|
|
fadeOutToolsCB:SetPoint("TOPLEFT", marksBarCB, "BOTTOMLEFT", 0, -70)
|
|
|
|
local region = CreateFrame("Frame", nil, rtPane)
|
|
region:SetPoint("TOPLEFT", buffCB, -5, 5)
|
|
region:SetPoint("BOTTOM", marksShowSoloCB, 0, -5)
|
|
region:SetPoint("RIGHT", -5, 0)
|
|
|
|
fadeOutToolsCB:HookScript("OnEnter", function()
|
|
LCG.PixelGlow_Start(region, Cell:GetAccentColorTable(1), 27, 0.1, 17, 1)
|
|
end)
|
|
fadeOutToolsCB:HookScript("OnLeave", function()
|
|
LCG.PixelGlow_Stop(region)
|
|
end)
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- show
|
|
-------------------------------------------------
|
|
local init
|
|
local function ShowUtilitySettings(which)
|
|
if which == "raidTools" then
|
|
if not init then
|
|
CreateRTPane()
|
|
F:ApplyCombatProtectionToFrame(rtPane, -4, 4, 4, -4)
|
|
end
|
|
|
|
rtPane:Show()
|
|
|
|
-- if init then return end
|
|
init = true
|
|
|
|
-- raid tools
|
|
resCB:SetChecked(CellDB["tools"]["showBattleRes"])
|
|
reportCB:SetChecked(CellDB["tools"]["deathReport"][1])
|
|
|
|
buffCB:SetChecked(CellDB["tools"]["buffTracker"][1])
|
|
buffDropdown:SetSelectedValue(CellDB["tools"]["buffTracker"][2])
|
|
sizeEditBox:SetText(CellDB["tools"]["buffTracker"][3])
|
|
Cell:SetEnabled(CellDB["tools"]["buffTracker"][1], buffDropdown, sizeEditBox)
|
|
|
|
readyPullCB:SetChecked(CellDB["tools"]["readyAndPull"][1])
|
|
styleDropdown:SetSelectedValue(CellDB["tools"]["readyAndPull"][2])
|
|
pullDropdown:SetSelectedValue(CellDB["tools"]["readyAndPull"][3][1])
|
|
secEditBox:SetText(CellDB["tools"]["readyAndPull"][3][2])
|
|
Cell:SetEnabled(CellDB["tools"]["readyAndPull"][1], styleDropdown, pullDropdown, secEditBox)
|
|
|
|
marksDropdown:SetEnabled(CellDB["tools"]["marks"][1])
|
|
marksBarCB:SetChecked(CellDB["tools"]["marks"][1])
|
|
marksDropdown:SetSelectedValue(CellDB["tools"]["marks"][3])
|
|
marksShowSoloCB:SetChecked(CellDB["tools"]["marks"][2])
|
|
|
|
fadeOutToolsCB:SetChecked(CellDB["tools"]["fadeOut"])
|
|
|
|
elseif init then
|
|
rtPane:Hide()
|
|
end
|
|
end
|
|
Cell:RegisterCallback("ShowUtilitySettings", "RaidTools_ShowUtilitySettings", ShowUtilitySettings)
|