Add bar height/spacing options.

Add option to lock Omen from being moved/resized.
Update profile change function to properly resize and reanchor bars.
Fix weird bar animation effect which occurs only when resizing Omen.
Fix GrowUp option to take effect immediately.
This commit is contained in:
Xinhuan
2008-10-09 03:14:31 +08:00
parent 7f32140efa
commit 9895c8c1ca
2 changed files with 75 additions and 20 deletions
+7 -1
View File
@@ -18,6 +18,8 @@ L["Scale"] = true
L["Controls the scaling of the main Omen window."] = true
L["Autocollapse"] = true
L["Collapse to show a minimum number of bars"] = true
L["Lock Omen"] = true
L["Locks Omen in place and prevents it from being dragged or resized."] = true
L["Autocollapse Options"] = true
L["Grow bars upwards"] = true
L["Hide Omen on 0 bars"] = true
@@ -53,7 +55,11 @@ L["Short Numbers"] = true
L["Display large numbers in Ks"] = true
L["Bar Texture"] = true
L["The texture that the bar will use"] = true
L["Bar Height"] = true
L["Height of each bar"] = true
L["Bar Spacing"] = true
L["Spacing between each bar"] = true
-- Config strings, slash command section
L["OMEN_SLASH_DESC"] = "These buttons execute the same functions as the ones in the slash command /omen"
L["Toggle Omen"] = true
+68 -19
View File
@@ -38,6 +38,7 @@ LSM:Register("sound", "Humm", [[Sound\Spells\SimonGame_Visual_GameStart.wav]])
LSM:Register("sound", "Short Circuit", [[Sound\Spells\SimonGame_Visual_BadPress.wav]])
LSM:Register("sound", "Fel Portal", [[Sound\Spells\Sunwell_Fel_PortalStand.wav]])
LSM:Register("sound", "Fel Nova", [[Sound\Spells\SeepingGaseous_Fel_Nova.wav]])
LSM:Register("sound", "You Will Die!", [[Sound\Creature\CThun\CThunYouWillDIe.wav]])
-----------------------------------------------------------------------------
@@ -147,7 +148,7 @@ end
local function startmoving()
if not db.Locked then
Omen.Anchor.IsMovingOrSizing = true
Omen.Anchor.IsMovingOrSizing = 1
Omen.Anchor:StartMoving()
end
end
@@ -168,7 +169,7 @@ function Omen:CreateFrames()
-- Create anchor
self.Anchor = CreateFrame("Frame", "OmenAnchor", UIParent)
self.Anchor:SetResizable(true)
self.Anchor:SetMinResize(90, db.Bar.Height)
self.Anchor:SetMinResize(90, 16)
self.Anchor:SetMovable(true)
self.Anchor:SetPoint("CENTER", UIParent, "CENTER")
self.Anchor:SetWidth(225)
@@ -222,7 +223,7 @@ function Omen:CreateFrames()
end
self.Grip:SetScript("OnMouseDown", function()
if not db.Locked then
self.Anchor.IsMovingOrSizing = true
self.Anchor.IsMovingOrSizing = 2
self.Anchor:SetScript("OnSizeChanged", sizing)
self.Anchor:StartSizing()
end
@@ -310,6 +311,8 @@ end
function Omen:OnProfileChanged(db, name)
db = self.db.profile
self:SetAnchors(true)
self:ResizeBars()
self:ReAnchorBars()
self:UpdateVisible()
self:UpdateBars()
end
@@ -424,7 +427,7 @@ do
bar:SetWidth(Omen.BarList:GetWidth())
bar:SetHeight(db.Bar.Height)
bar:SetPoint("TOPLEFT", Omen.BarList, "TOPLEFT", 0, (barID-1) * -db.Bar.Height)
bar:SetPoint("TOPLEFT", Omen.BarList, "TOPLEFT", 0, (barID-1) * -(db.Bar.Height + db.Bar.Spacing))
bar.Text1 = bar:CreateFontString(nil, nil, "GameFontNormalSmall")
bar.Text1:SetPoint("LEFT", bar, "LEFT", 10, 0)
@@ -713,6 +716,11 @@ function Omen:UpdateBars()
local guid = sortTable[j]
local class = guidClassLookup[guid]
if class == nil or db.Classes[class] then -- class == nil implies its not in your raid
if db.Autocollapse then
if i > db.NumBars then break end
else
if i*db.Bar.Height + (i-1)*db.Bar.Spacing > h then break end
end
local bar = bars[j]
local threat = threatTable[guid]
bar.Text1:SetText(guidNameLookup[guid] or L["Unknown"])
@@ -723,18 +731,13 @@ function Omen:UpdateBars()
end
local c = (class == "PET" and pet_color) or RAID_CLASS_COLORS[class] or default_color
bar.texture:SetVertexColor(c.r, c.g, c.b)
if db.Bar.AnimateBars then
if db.Bar.AnimateBars and self.Anchor.IsMovingOrSizing ~= 2 then
bar:AnimateTo(w * threat / topthreat)
else
bar.texture:SetWidth(w * threat / topthreat)
end
bar:Show()
i = i + 1
if db.Autocollapse then
if i > db.NumBars then break end
else
if floor(h / bar:GetHeight()) < i then break end
end
end
end
-- And hide the rest
@@ -742,7 +745,7 @@ function Omen:UpdateBars()
bars[j]:Hide()
end
if db.Autocollapse then
self.Anchor:SetHeight(i*db.Bar.Height)
self.Anchor:SetHeight((i-1)*db.Bar.Height + (i-2)*db.Bar.Spacing + 16)
end
self.Anchor:Show()
end
@@ -753,7 +756,7 @@ function Omen:ClearAll()
end
self.TitleText:SetText(self.defaultTitle)
if db.Autocollapse then
self.Anchor:SetHeight(db.Bar.Height)
self.Anchor:SetHeight(16)
if db.CollapseHide and not self.Anchor.IsMovingOrSizing then
self.Anchor:Hide()
end
@@ -768,6 +771,12 @@ function Omen:ResizeBars()
end
end
function Omen:ReAnchorBars()
for i = 1, #bars do
bars[i]:SetPoint("TOPLEFT", self.BarList, "TOPLEFT", 0, (i-1) * -(db.Bar.Height + db.Bar.Spacing))
end
end
-----------------------------------------------------------------------------
-- Omen config stuff
@@ -796,7 +805,6 @@ local options = {
order = 1,
type = "description",
name = L["OMEN_DESC"],
cmdHidden = true,
},
Alpha = {
order = 3,
@@ -806,8 +814,7 @@ local options = {
min = 0, max = 1, step = 0.01,
isPercent = true,
set = function(info, value)
local key = info[#info]
Omen.db.profile[key] = value
db.Alpha = value
Omen.Anchor:SetAlpha(value)
end,
},
@@ -819,17 +826,32 @@ local options = {
min = 0.50, max = 1.50, step = 0.01,
isPercent = true,
set = function(info, value)
Omen.db.profile[ info[#info] ] = value
db.Scale = value
Omen:SetAnchors()
end,
},
Locked = {
type = "toggle",
name = L["Lock Omen"],
desc = L["Locks Omen in place and prevents it from being dragged or resized."],
order = 7,
set = function(info, value)
db.Locked = value
if value then Omen.Grip:Hide() else Omen.Grip:Show() end
end,
},
linebreak = {
order = 9,
type = "description",
name = "",
},
Autocollapse = {
type = "toggle",
name = L["Autocollapse"],
desc = L["Collapse to show a minimum number of bars"],
order = 7,
order = 10,
set = function(info, value)
Omen.db.profile[ info[#info] ] = value
db.Autocollapse = value
Omen:UpdateVisible()
Omen:UpdateBars()
end,
@@ -838,7 +860,7 @@ local options = {
type = "group",
name = L["Autocollapse Options"],
guiInline = true,
order = 8,
order = 11,
disabled = function() return not Omen.db.profile.Autocollapse end,
set = function(info, value)
Omen.db.profile[ info[#info] ] = value
@@ -851,6 +873,10 @@ local options = {
type = "toggle",
name = L["Grow bars upwards"],
desc = L["Grow bars upwards"],
set = function(info, value)
db.GrowUp = value
Omen:SetAnchors()
end,
},
CollapseHide = {
order = 2,
@@ -961,6 +987,29 @@ local options = {
end
end
},
Height = {
type = "range",
name = L["Bar Height"],
desc = L["Height of each bar"],
min = 5, max = 50, step = 1, bigStep = 1,
set = function(info, value)
db.Bar.Height = value
Omen:ReAnchorBars()
Omen:ResizeBars()
Omen:UpdateBars()
end,
},
Spacing = {
type = "range",
name = L["Bar Spacing"],
desc = L["Spacing between each bar"],
min = 0, max = 20, step = 1, bigStep = 1,
set = function(info, value)
db.Bar.Spacing = value
Omen:ReAnchorBars()
Omen:UpdateBars()
end,
},
},
},
Help = {