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.
253 lines
7.8 KiB
253 lines
7.8 KiB
local GlobalAddonName, ExRT = ...
|
|
|
|
if ExRT.isClassic then
|
|
return
|
|
end
|
|
|
|
local VMRT = nil
|
|
|
|
local GetSpellCharges, GetTime, floor, GetSpellTexture = ExRT.F.GetSpellCharges or GetSpellCharges, GetTime, floor, C_Spell and C_Spell.GetSpellTexture or GetSpellTexture
|
|
|
|
local module = ExRT:New("BattleRes",ExRT.L.BattleRes)
|
|
local ELib,L = ExRT.lib,ExRT.L
|
|
|
|
function module.options:Load()
|
|
self:CreateTilte()
|
|
|
|
self.enableChk = ELib:Check(self,L.Enable,VMRT.BattleRes.enabled):Point(15,-30):AddColorState():OnClick(function(self)
|
|
if self:GetChecked() then
|
|
VMRT.BattleRes.enabled = true
|
|
module:Enable()
|
|
else
|
|
VMRT.BattleRes.enabled = nil
|
|
module:Disable()
|
|
end
|
|
end)
|
|
|
|
self.fixChk = ELib:Check(self,L.BattleResFix,VMRT.BattleRes.fix):Point(15,-55):OnClick(function(self)
|
|
if self:GetChecked() then
|
|
VMRT.BattleRes.fix = true
|
|
module.frame:Hide()
|
|
module.frame:SetMovable(false)
|
|
else
|
|
VMRT.BattleRes.fix = nil
|
|
if VMRT.BattleRes.enabled then
|
|
module.frame:Show()
|
|
end
|
|
module.frame:SetMovable(true)
|
|
end
|
|
end)
|
|
|
|
self.SliderScale = ELib:Slider(self,L.BattleResScale):Size(640):Point("TOP",0,-95):Range(5,200):SetTo(VMRT.BattleRes.Scale or 100):OnChange(function(self,event)
|
|
event = event - event%1
|
|
VMRT.BattleRes.Scale = event
|
|
ExRT.F.SetScaleFix(module.frame,event/100)
|
|
self.tooltipText = event
|
|
self:tooltipReload(self)
|
|
end)
|
|
|
|
self.SliderAlpha = ELib:Slider(self,L.BattleResAlpha):Size(640):Point("TOP",0,-130):Range(0,100):SetTo(VMRT.BattleRes.Alpha or 100):OnChange(function(self,event)
|
|
event = event - event%1
|
|
VMRT.BattleRes.Alpha = event
|
|
module.frame:SetAlpha(event/100)
|
|
self.tooltipText = event
|
|
self:tooltipReload(self)
|
|
end)
|
|
|
|
self.shtml1 = ELib:Text(self,L.BattleResHelp,12):Size(650,0):Point("TOP",0,-165):Top()
|
|
|
|
self.hideTimerChk = ELib:Check(self,L.BattleResHideTime,VMRT.BattleRes.HideTimer):Point(15,-200):Tooltip(L.BattleResHideTimeTooltip):OnClick(function(self)
|
|
if self:GetChecked() then
|
|
VMRT.BattleRes.HideTimer = true
|
|
module.frame.time:Hide()
|
|
else
|
|
VMRT.BattleRes.HideTimer = nil
|
|
module.frame.time:Show()
|
|
end
|
|
end)
|
|
|
|
self.frameStrataDropDown = ELib:DropDown(self,275,8):Point(15,-225):Size(260):SetText(L.S_Strata)
|
|
local function FrameStrataDropDown_SetVaule(_,arg)
|
|
VMRT.BattleRes.Strata = arg
|
|
ELib:DropDownClose()
|
|
for i=1,#self.frameStrataDropDown.List do
|
|
self.frameStrataDropDown.List[i].checkState = arg == self.frameStrataDropDown.List[i].arg1
|
|
end
|
|
module.frame:SetFrameStrata(arg)
|
|
end
|
|
for i,strataString in ipairs({"BACKGROUND","LOW","MEDIUM","HIGH","DIALOG","FULLSCREEN","FULLSCREEN_DIALOG","TOOLTIP"}) do
|
|
self.frameStrataDropDown.List[i] = {
|
|
text = strataString,
|
|
checkState = VMRT.BattleRes.Strata == strataString,
|
|
radio = true,
|
|
arg1 = strataString,
|
|
func = FrameStrataDropDown_SetVaule,
|
|
}
|
|
end
|
|
end
|
|
|
|
function module:Enable()
|
|
if not VMRT.BattleRes.HideTimer then
|
|
module.frame.cooldown.noCooldownCount = true
|
|
else
|
|
module.frame.cooldown.noCooldownCount = nil
|
|
end
|
|
module:RegisterTimer()
|
|
if not VMRT.BattleRes.fix then
|
|
module:ResetStates()
|
|
module.frame:Show()
|
|
module.frame:SetMovable(true)
|
|
end
|
|
end
|
|
function module:Disable()
|
|
module:UnregisterTimer()
|
|
module.frame:Hide()
|
|
end
|
|
|
|
function module.main:ADDON_LOADED()
|
|
VMRT = _G.VMRT
|
|
VMRT.BattleRes = VMRT.BattleRes or {}
|
|
|
|
if VMRT.BattleRes.Left and VMRT.BattleRes.Top then
|
|
module.frame:ClearAllPoints()
|
|
module.frame:SetPoint("TOPLEFT",UIParent,"BOTTOMLEFT",VMRT.BattleRes.Left,VMRT.BattleRes.Top)
|
|
end
|
|
if VMRT.BattleRes.Alpha then module.frame:SetAlpha(VMRT.BattleRes.Alpha/100) end
|
|
if VMRT.BattleRes.Scale then module.frame:SetScale(VMRT.BattleRes.Scale/100) end
|
|
|
|
if VMRT.BattleRes.HideTimer then
|
|
module.frame.time:Hide()
|
|
end
|
|
|
|
if VMRT.BattleRes.enabled then
|
|
module:Enable()
|
|
end
|
|
|
|
VMRT.BattleRes.Strata = VMRT.BattleRes.Strata or "HIGH"
|
|
module.frame:SetFrameStrata(VMRT.BattleRes.Strata)
|
|
end
|
|
|
|
do
|
|
local stateHidden
|
|
local is0Charges
|
|
local isCooldownHidden
|
|
local cooldownStarted, cooldownDur, chargesNow
|
|
function module:ResetStates()
|
|
stateHidden = true
|
|
end
|
|
function module:timer(elapsed)
|
|
local charges, maxCharges, started, duration = GetSpellCharges(20484)
|
|
if not charges then
|
|
if not stateHidden then
|
|
if VMRT.BattleRes.fix then
|
|
module.frame:Hide()
|
|
end
|
|
module.frame.time:SetText("")
|
|
module.frame.charge:SetText("")
|
|
module.frame.cooldown:Hide()
|
|
chargesNow = nil
|
|
isCooldownHidden = true
|
|
cooldownStarted = nil
|
|
cooldownDur = nil
|
|
stateHidden = true
|
|
end
|
|
return
|
|
elseif stateHidden then
|
|
module.frame:Show()
|
|
stateHidden = false
|
|
end
|
|
|
|
if maxCharges == charges then
|
|
module.frame.time:SetFormattedText("")
|
|
if chargesNow ~= charges then
|
|
module.frame.charge:SetText(charges)
|
|
chargesNow = charges
|
|
end
|
|
if not isCooldownHidden then
|
|
module.frame.cooldown:Hide()
|
|
isCooldownHidden = true
|
|
end
|
|
else
|
|
local time = duration - (GetTime() - started)
|
|
|
|
module.frame.time:SetFormattedText("%d:%02d", floor(time/60), time%60)
|
|
if chargesNow ~= charges then
|
|
module.frame.charge:SetText(charges)
|
|
chargesNow = charges
|
|
end
|
|
if isCooldownHidden then
|
|
module.frame.cooldown:Show()
|
|
isCooldownHidden = false
|
|
end
|
|
if (cooldownStarted ~= started) or (cooldownDur ~= duration) then
|
|
module.frame.cooldown:SetCooldown(started,duration)
|
|
cooldownStarted = started
|
|
cooldownDur = duration
|
|
end
|
|
end
|
|
if charges == 0 and not is0Charges then
|
|
module.frame.charge:SetTextColor(1,0,0,1)
|
|
is0Charges = true
|
|
elseif charges ~= 0 and is0Charges then
|
|
module.frame.charge:SetTextColor(1,1,1,1)
|
|
is0Charges = false
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local frame = CreateFrame("Frame","MRTBattleRes",UIParent)
|
|
module.frame = frame
|
|
frame:SetSize(64,64)
|
|
frame:SetPoint("TOP", 0,-200)
|
|
frame:SetFrameStrata("HIGH")
|
|
frame:EnableMouse(true)
|
|
frame:SetMovable(true)
|
|
frame:SetClampedToScreen(true)
|
|
frame:RegisterForDrag("LeftButton")
|
|
frame:SetScript("OnDragStart", function(self)
|
|
if self:IsMovable() then
|
|
self:StartMoving()
|
|
end
|
|
end)
|
|
frame:SetScript("OnDragStop", function(self)
|
|
self:StopMovingOrSizing()
|
|
VMRT.BattleRes.Left = self:GetLeft()
|
|
VMRT.BattleRes.Top = self:GetTop()
|
|
end)
|
|
|
|
frame.texture = frame:CreateTexture(nil, "BACKGROUND")
|
|
frame.texture:SetTexture(GetSpellTexture(20484))
|
|
frame.texture:SetAllPoints()
|
|
frame.texture:SetTexCoord(.1,.9,.1,.9)
|
|
|
|
frame.backdrop = CreateFrame("Frame",nil,frame, BackdropTemplateMixin and "BackdropTemplate")
|
|
frame.backdrop:SetPoint("TOPLEFT",-3,3)
|
|
frame.backdrop:SetPoint("BOTTOMRIGHT",3,-3)
|
|
frame.backdrop:SetBackdrop({bgFile = "",edgeFile = "Interface\\AddOns\\"..GlobalAddonName.."\\media\\UI-Tooltip-Border_grey",tile = true,tileSize = 16,edgeSize = 16,insets = {left = 3,right = 3,top = 3,bottom = 3}})
|
|
frame.backdrop:SetBackdropBorderColor(.3,.3,.3)
|
|
|
|
frame.cooldown = CreateFrame("Cooldown", nil, frame, "CooldownFrameTemplate")
|
|
frame.cooldown:SetHideCountdownNumbers(true)
|
|
frame.cooldown:SetAllPoints()
|
|
frame.cooldown:SetDrawEdge(false)
|
|
frame.cooldown:SetFrameLevel(40)
|
|
frame.texts = CreateFrame("Frame",nil,frame)
|
|
frame.texts:SetAllPoints()
|
|
frame.texts:SetFrameLevel(50)
|
|
frame.time = frame.texts:CreateFontString(nil,"ARTWORK","ExRTFontNormal")
|
|
frame.time:SetAllPoints()
|
|
frame.time:SetJustifyH("CENTER")
|
|
frame.time:SetJustifyV("MIDDLE")
|
|
frame.time:SetFont(frame.time:GetFont(),18,"OUTLINE")
|
|
frame.time:SetTextColor(1,1,1,1)
|
|
frame.charge = frame.texts:CreateFontString(nil,"ARTWORK","ExRTFontNormal")
|
|
frame.charge:SetAllPoints()
|
|
frame.charge:SetJustifyH("RIGHT")
|
|
frame.charge:SetJustifyV("BOTTOM")
|
|
frame.charge:SetFont(frame.charge:GetFont(),16,"OUTLINE")
|
|
frame.charge:SetShadowOffset(1,-1)
|
|
frame.charge:SetTextColor(1,1,1,1)
|
|
|
|
frame:Hide()
|
|
end
|