diff --git a/api/config.lua b/api/config.lua index eda22ef4..b40b0daa 100644 --- a/api/config.lua +++ b/api/config.lua @@ -398,6 +398,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("unitframes", unit, "indicator_time", "1") pfUI:UpdateConfig("unitframes", unit, "indicator_stacks", "1") pfUI:UpdateConfig("unitframes", unit, "indicator_size", "10") + pfUI:UpdateConfig("unitframes", unit, "indicator_pos", "TOPLEFT") pfUI:UpdateConfig("unitframes", unit, "clickcast", "0") pfUI:UpdateConfig("unitframes", unit, "faderange", "0") diff --git a/api/unitframes.lua b/api/unitframes.lua index d0078357..1733697a 100644 --- a/api/unitframes.lua +++ b/api/unitframes.lua @@ -1773,36 +1773,34 @@ end function pfUI.uf:AddIcon(frame, pos, icon, timeleft, stacks) local showtime = frame.config.indicator_time == "1" and true or nil local showstacks = frame.config.indicator_stacks == "1" and true or nil + local position = frame.config.indicator_pos or "TOPLEFT" local iconsize = tonumber(frame.config.indicator_size) if not frame.hp then return end local frame = frame.hp.bar if pos > 6 or pos > ceil(frame:GetWidth() / iconsize) then return end - if not frame.icon then frame.icon = {} end + frame.icon = frame.icon or CreateFrame("Frame", nil, frame) - for i=1,6 do - if not frame.icon[i] then - frame.icon[i] = CreateFrame("Frame", frame) - frame.icon[i]:SetPoint("TOPLEFT", frame, "TOPLEFT", (i-1)*iconsize, 0) - frame.icon[i]:SetWidth(iconsize) - frame.icon[i]:SetHeight(iconsize) - frame.icon[i]:SetParent(frame) - frame.icon[i].tex = frame.icon[i]:CreateTexture("OVERLAY") - frame.icon[i].tex:SetAllPoints(frame.icon[i]) - frame.icon[i].tex:SetTexCoord(.08, .92, .08, .92) - frame.icon[i].tex:SetAlpha(.7) - frame.icon[i].stacks = frame.icon[i]:CreateFontString(nil, "OVERLAY") - frame.icon[i].stacks:SetFont(pfUI.font_unit, math.max(iconsize/3, 10), "OUTLINE") - frame.icon[i].stacks:SetPoint("BOTTOMRIGHT", 0, 0) - frame.icon[i].stacks:SetJustifyH("RIGHT") - frame.icon[i].stacks:SetJustifyV("BOTTOM") - frame.icon[i].cd = CreateFrame(COOLDOWN_FRAME_TYPE, nil, frame.icon[i]) - frame.icon[i].cd.pfCooldownType = "ALL" - frame.icon[i].cd:SetAlpha(0) - CreateBackdrop(frame.icon[i], nil, true) - end + if not frame.icon[pos] then + frame.icon[pos] = CreateFrame("Frame", frame.icon) + frame.icon[pos]:SetParent(frame) + frame.icon[pos]:SetWidth(iconsize) + frame.icon[pos]:SetHeight(iconsize) + frame.icon[pos]:SetPoint("TOPLEFT", frame.icon, "TOPLEFT", (pos-1)*iconsize, 0) + frame.icon[pos].tex = frame.icon[pos]:CreateTexture("OVERLAY") + frame.icon[pos].tex:SetAllPoints(frame.icon[pos]) + frame.icon[pos].tex:SetTexCoord(.08, .92, .08, .92) + frame.icon[pos].stacks = frame.icon[pos]:CreateFontString(nil, "OVERLAY") + frame.icon[pos].stacks:SetFont(pfUI.font_unit, math.max(iconsize/3, 10), "OUTLINE") + frame.icon[pos].stacks:SetPoint("BOTTOMRIGHT", 0, 0) + frame.icon[pos].stacks:SetJustifyH("RIGHT") + frame.icon[pos].stacks:SetJustifyV("BOTTOM") + frame.icon[pos].cd = CreateFrame(COOLDOWN_FRAME_TYPE, nil, frame.icon[pos]) + frame.icon[pos].cd.pfCooldownType = "ALL" + frame.icon[pos].cd:SetAlpha(0) end + frame.icon[pos].tex:SetTexture(icon) -- show remaining time if config is set @@ -1820,6 +1818,11 @@ function pfUI.uf:AddIcon(frame, pos, icon, timeleft, stacks) end frame.icon[pos]:Show() + frame.icon:SetWidth(pos*iconsize) + frame.icon:SetHeight(iconsize) + + frame.icon:ClearAllPoints() + frame.icon:SetPoint(position, frame, position, 0, 0) end function pfUI.uf:HideIcon(frame, pos) diff --git a/modules/gui.lua b/modules/gui.lua index cdfdcd04..6e02b275 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1669,6 +1669,7 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(U[c], T["Show Time Left"], C.unitframes[c], "indicator_time", "checkbox") CreateConfig(U[c], T["Show Stacks"], C.unitframes[c], "indicator_stacks", "checkbox") CreateConfig(U[c], T["Indicator Size"], C.unitframes[c], "indicator_size") + CreateConfig(U[c], T["Indicator Position"], C.unitframes[c], "indicator_pos", "dropdown", pfUI.gui.dropdowns.positions) CreateConfig(U[c], T["Show Custom Indicators"], C.unitframes[c], "custom_indicator", "list") CreateConfig(U[c], T["Show Buff Indicators"], C.unitframes[c], "show_buffs", "checkbox") CreateConfig(U[c], T["Show Hots Indicators"], C.unitframes[c], "show_hots", "checkbox")