mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 14:50:13 -05:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
73891bca4b
|
|||
66f4492fa7 | |||
6c1c68a0c3 | |||
b17582afab | |||
e94138d201 | |||
8a3f9e19d0
|
3
.pkgmeta
3
.pkgmeta
@ -10,6 +10,9 @@ externals:
|
||||
libs/AceEvent-3.0:
|
||||
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
|
||||
tag: latest
|
||||
libs/AceSerializer-3.0:
|
||||
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceSerializer-3.0
|
||||
tag: latest
|
||||
libs/AceTimer-3.0:
|
||||
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceTimer-3.0
|
||||
tag: latest
|
||||
|
226
IceHUD.lua
226
IceHUD.lua
@ -107,8 +107,6 @@ IceHUD.validBarList = { "Bar", "HiBar", "RoundBar", "ColorBar", "RivetBar", "Riv
|
||||
"BloodGlaives", "ArcHUD", "FangRune", "DHUD", "CleanCurvesOut", "CleanTank", "PillTank", "GemTank" }
|
||||
IceHUD.validCustomModules = {Bar="Buff/Debuff watcher", Counter="Buff/Debuff stack counter", CD="Cooldown bar", Health="Health bar", Mana="Mana bar", CounterBar="Stack count bar"}
|
||||
|
||||
IceHUD_UnitFrame_DropDown = CreateFrame("Frame", "IceHUD_UnitFrame_DropDown", UIParent, "UIDropDownMenuTemplate")
|
||||
|
||||
--@debug@
|
||||
IceHUD.optionsLoaded = true
|
||||
--@end-debug@
|
||||
@ -801,230 +799,6 @@ function IceHUD:GetIsInLFGGroup()
|
||||
return IsInLFGGroup
|
||||
end
|
||||
|
||||
local BLACKLISTED_UNIT_MENU_OPTIONS = {}
|
||||
if UnitPopupButtons then
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS = {
|
||||
SET_FOCUS = "ICEHUD_SET_FOCUS",
|
||||
CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS",
|
||||
LOCK_FOCUS_FRAME = true,
|
||||
UNLOCK_FOCUS_FRAME = true,
|
||||
}
|
||||
if select(2, UnitClass("player")) ~= "WARLOCK" then
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[PET_DISMISS] = "ICEHUD_PET_DISMISS"
|
||||
end
|
||||
|
||||
UnitPopupButtons["ICEHUD_SET_FOCUS"] = {
|
||||
text = L["Type %s to set focus"]:format(SLASH_FOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
|
||||
UnitPopupButtons["ICEHUD_CLEAR_FOCUS"] = {
|
||||
text = L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
|
||||
UnitPopupButtons["ICEHUD_PET_DISMISS"] = {
|
||||
text = L["Use your Dismiss Pet spell to dismiss a pet"],
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click dismiss a pet with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
elseif UnitPopupSetFocusButtonMixin then
|
||||
IceHUDUnitPopupSetFocusButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin)
|
||||
function IceHUDUnitPopupSetFocusButtonMixin:GetText()
|
||||
return L["Type %s to set focus"]:format(SLASH_FOCUS1)
|
||||
end
|
||||
function IceHUDUnitPopupSetFocusButtonMixin:OnClick()
|
||||
end
|
||||
|
||||
IceHUDUnitPopupClearFocusButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin)
|
||||
function IceHUDUnitPopupClearFocusButtonMixin:GetText()
|
||||
return L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1)
|
||||
end
|
||||
function IceHUDUnitPopupClearFocusButtonMixin:OnClick()
|
||||
end
|
||||
|
||||
IceHUDUnitPopupPetDismissButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin)
|
||||
function IceHUDUnitPopupPetDismissButtonMixin:GetText()
|
||||
return L["Use your Dismiss Pet spell to dismiss a pet"]
|
||||
end
|
||||
function IceHUDUnitPopupPetDismissButtonMixin:CanShow()
|
||||
return UnitPopupPetDismissButtonMixin:CanShow()
|
||||
end
|
||||
function IceHUDUnitPopupPetDismissButtonMixin:OnClick()
|
||||
end
|
||||
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[SET_FOCUS] = IceHUDUnitPopupSetFocusButtonMixin
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[CLEAR_FOCUS] = IceHUDUnitPopupClearFocusButtonMixin
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[LOCK_FOCUS_FRAME] = true
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[UNLOCK_FOCUS_FRAME] = true
|
||||
|
||||
if select(2, UnitClass("player")) ~= "WARLOCK" then
|
||||
BLACKLISTED_UNIT_MENU_OPTIONS[PET_DISMISS] = IceHUDUnitPopupPetDismissButtonMixin
|
||||
end
|
||||
end
|
||||
|
||||
local munged_unit_menus = {}
|
||||
local function munge_unit_menu(menu)
|
||||
local result = munged_unit_menus[menu]
|
||||
if result then
|
||||
return result
|
||||
end
|
||||
|
||||
if not UnitPopupMenus then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local data = UnitPopupMenus[menu]
|
||||
if not data then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local found = false
|
||||
if data.GetMenuButtons then
|
||||
local btns = data.GetMenuButtons()
|
||||
for i=1, #btns do
|
||||
if btns[i].IsMenu() then
|
||||
local subbtns = btns[i].GetMenuButtons()
|
||||
for j=1, #subbtns do
|
||||
if BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()] then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
if BLACKLISTED_UNIT_MENU_OPTIONS[btns[i]:GetText()] then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if found then
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
for _, v in ipairs(data) do
|
||||
if BLACKLISTED_UNIT_MENU_OPTIONS[v] then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not found then
|
||||
-- nothing to remove or add, we're all fine here.
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local new_data = {}
|
||||
if data.GetMenuButtons then
|
||||
local new_buttons_list = {}
|
||||
local btns = data.GetMenuButtons()
|
||||
for i=1, #btns do
|
||||
if btns[i].IsMenu() then
|
||||
local subbtns = btns[i].GetMenuButtons()
|
||||
for j=1, #subbtns do
|
||||
if subbtns[j] then
|
||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()]
|
||||
if not blacklisted then
|
||||
new_buttons_list[#new_buttons_list+1] = subbtns[j]
|
||||
elseif blacklisted ~= true then
|
||||
new_buttons_list[#new_buttons_list+1] = blacklisted
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[btns[i]:GetText()]
|
||||
if not blacklisted then
|
||||
new_buttons_list[#new_buttons_list+1] = btns[i]
|
||||
elseif blacklisted ~= true then
|
||||
new_buttons_list[#new_buttons_list+1] = blacklisted
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
new_data = data
|
||||
function new_data:GetMenuButtons()
|
||||
return new_buttons_list
|
||||
end
|
||||
else
|
||||
for _, v in ipairs(data) do
|
||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[v]
|
||||
if not blacklisted then
|
||||
new_data[#new_data+1] = v
|
||||
elseif blacklisted ~= true then
|
||||
new_data[#new_data+1] = blacklisted
|
||||
end
|
||||
end
|
||||
end
|
||||
local new_menu_name = "ICEHUD_" .. menu
|
||||
|
||||
UnitPopupMenus[new_menu_name] = new_data
|
||||
munged_unit_menus[menu] = new_menu_name
|
||||
return new_menu_name
|
||||
end
|
||||
IceHUD.MungeUnitMenu = munge_unit_menu
|
||||
|
||||
local function figure_unit_menu(unit)
|
||||
if unit == "focus" then
|
||||
return "FOCUS"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "player") then
|
||||
return "SELF"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "vehicle") then
|
||||
-- NOTE: vehicle check must come before pet check for accuracy's sake because
|
||||
-- a vehicle may also be considered your pet
|
||||
return "VEHICLE"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "pet") then
|
||||
return "PET"
|
||||
end
|
||||
|
||||
if not UnitIsPlayer(unit) then
|
||||
return "TARGET"
|
||||
end
|
||||
|
||||
local id = UnitInRaid(unit)
|
||||
if id then
|
||||
return "RAID_PLAYER", id
|
||||
end
|
||||
|
||||
if UnitInParty(unit) then
|
||||
return "PARTY"
|
||||
end
|
||||
|
||||
return "PLAYER"
|
||||
end
|
||||
|
||||
if UnitPopupFrames then
|
||||
UnitPopupFrames[#UnitPopupFrames+1] = "IceHUD_UnitFrame_DropDown"
|
||||
end
|
||||
|
||||
IceHUD.DropdownUnit = nil
|
||||
-- todo: update for new UnitPopup_OpenMenu() API
|
||||
if UnitPopup_ShowMenu then
|
||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||
if not IceHUD.DropdownUnit then
|
||||
return
|
||||
end
|
||||
|
||||
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
||||
if menu then
|
||||
menu = IceHUD.MungeUnitMenu(menu)
|
||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||
end
|
||||
end, "MENU", nil)
|
||||
end
|
||||
|
||||
function IceHUD:OutOfCombatWrapper(func)
|
||||
return function(...)
|
||||
return IceHUD:RunOnLeaveCombat(func, ...)
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Interface: 110000
|
||||
## Interface-Retail: 110000
|
||||
## Interface-Classic: 11502
|
||||
## Interface: 110002
|
||||
## Interface-Retail: 110002
|
||||
## Interface-Classic: 11503
|
||||
## Interface-BCC: 20504
|
||||
## Interface-Wrath: 30403
|
||||
## Interface-Cata: 40400
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Interface: 110000
|
||||
## Interface-Retail: 110000
|
||||
## Interface-Classic: 11502
|
||||
## Interface: 110002
|
||||
## Interface-Retail: 110002
|
||||
## Interface-Classic: 11503
|
||||
## Interface-BCC: 20504
|
||||
## Interface-Wrath: 30403
|
||||
## Interface-Cata: 40400
|
||||
|
@ -790,24 +790,6 @@ function IceHUD_Options:GenerateModuleOptions(firstLoad)
|
||||
end
|
||||
end
|
||||
|
||||
function IceHUD_Options:OnLoad()
|
||||
self:GenerateModuleOptions(true)
|
||||
self.options.args.colors.args = IceHUD.IceCore:GetColorOptions()
|
||||
self.options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(IceHUD.db)
|
||||
IceHUD_Options:SetupProfileImportButtons()
|
||||
|
||||
-- Add dual-spec support
|
||||
if IceHUD.db ~= nil and LibDualSpec then
|
||||
LibDualSpec:EnhanceOptions(IceHUD_Options.options.args.profiles, IceHUD.db)
|
||||
end
|
||||
|
||||
LibStub("AceConfig-3.0"):RegisterOptionsTable("IceHUD", options, "icehudcl")
|
||||
end
|
||||
|
||||
if IceHUD and IceHUD.IceCore then
|
||||
IceHUD_Options:OnLoad()
|
||||
end
|
||||
|
||||
function IceHUD_Options:SetupProfileImportButtons()
|
||||
if AceSerializer then
|
||||
AceSerializer:Embed(self)
|
||||
@ -867,3 +849,21 @@ function IceHUD_Options:SetupProfileImportButtons()
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function IceHUD_Options:OnLoad()
|
||||
self:GenerateModuleOptions(true)
|
||||
self.options.args.colors.args = IceHUD.IceCore:GetColorOptions()
|
||||
self.options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(IceHUD.db)
|
||||
self:SetupProfileImportButtons()
|
||||
|
||||
-- Add dual-spec support
|
||||
if IceHUD.db ~= nil and LibDualSpec then
|
||||
LibDualSpec:EnhanceOptions(IceHUD_Options.options.args.profiles, IceHUD.db)
|
||||
end
|
||||
|
||||
LibStub("AceConfig-3.0"):RegisterOptionsTable("IceHUD", options, "icehudcl")
|
||||
end
|
||||
|
||||
if IceHUD and IceHUD.IceCore then
|
||||
IceHUD_Options:OnLoad()
|
||||
end
|
||||
|
17
changelog.md
17
changelog.md
@ -1,5 +1,22 @@
|
||||
# Changelog
|
||||
|
||||
v1.15.4:
|
||||
|
||||
- Update TOC for TWW
|
||||
|
||||
v1.15.3:
|
||||
|
||||
- Fix custom cooldown bars not working in 11.x (wowace issue #363)
|
||||
|
||||
v1.15.2:
|
||||
|
||||
- Re-enable right-click context menus on 11.x.
|
||||
- Update TOC for Classic-era
|
||||
|
||||
v1.15.1:
|
||||
|
||||
- Fix error opening options.
|
||||
|
||||
v1.15.0:
|
||||
|
||||
- Support The War Within/11.0
|
||||
|
@ -7,6 +7,7 @@
|
||||
<Include file="libs\AceGUI-3.0\AceGUI-3.0.xml"/>
|
||||
<Include file="libs\AceConfig-3.0\AceConfig-3.0.xml"/>
|
||||
<Include file="libs\AceEvent-3.0\AceEvent-3.0.xml"/>
|
||||
<Include file="libs\AceSerializer-3.0\AceSerializer-3.0.xml"/>
|
||||
<Include file="libs\AceTimer-3.0\AceTimer-3.0.xml"/>
|
||||
<Include file="libs\AceConsole-3.0\AceConsole-3.0.xml"/>
|
||||
<Include file="libs\AceAddon-3.0\AceAddon-3.0.xml"/>
|
||||
|
@ -637,9 +637,9 @@ function IceCustomCDBar.prototype:GetCooldownDuration(buffName)
|
||||
local localRemaining = nil
|
||||
local localStart, localDuration, hasCooldown = GetSpellCooldown(buffName)
|
||||
|
||||
if (hasCooldown == 1) then
|
||||
if hasCooldown then
|
||||
-- the item has a potential cooldown
|
||||
if (localDuration <= 1.5) then
|
||||
if localDuration <= 1.5 then
|
||||
return nil, nil
|
||||
end
|
||||
|
||||
@ -734,7 +734,7 @@ function IceCustomCDBar.prototype:UpdateItemUnitInventoryChanged(event, unit)
|
||||
end
|
||||
|
||||
function IceCustomCDBar.prototype:UpdateCustomBarEvent(event, unit)
|
||||
if unit ~= self.unit then
|
||||
if unit and unit ~= self.unit then
|
||||
return
|
||||
end
|
||||
if not self.moduleSettings.cooldownType or self.moduleSettings.cooldownType == COOLDOWN_TYPE_SPELL then
|
||||
|
@ -922,13 +922,6 @@ function PlayerHealth.prototype:CreateBackground(redraw)
|
||||
end
|
||||
end
|
||||
|
||||
if not self.frame.button.menu then
|
||||
self.frame.button.menu = function(this, unit)
|
||||
IceHUD.DropdownUnit = unit
|
||||
ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor")
|
||||
end
|
||||
end
|
||||
|
||||
self:EnableClickTargeting(self.moduleSettings.allowMouseInteraction)
|
||||
end
|
||||
|
||||
@ -962,7 +955,7 @@ function PlayerHealth.prototype:EnableClickTargeting(bEnable)
|
||||
self.frame.button:EnableMouse(true)
|
||||
self.frame.button:RegisterForClicks("AnyUp")
|
||||
self.frame.button:SetAttribute("type1", "target")
|
||||
self.frame.button:SetAttribute("type2", "menu")
|
||||
self.frame.button:SetAttribute("type2", "togglemenu")
|
||||
self.frame.button:SetAttribute("unit", self.unit)
|
||||
|
||||
-- set up click casting
|
||||
|
@ -713,13 +713,6 @@ function IceTargetHealth.prototype:CreateBackground(redraw)
|
||||
self.frame.button:SetPoint("BOTTOMRIGHT", self.frame, "BOTTOMRIGHT", -1 * self.frame:GetWidth() / 1.5, 0)
|
||||
end
|
||||
end
|
||||
|
||||
if not self.frame.button.menu then
|
||||
self.frame.button.menu = function(this, unit)
|
||||
IceHUD.DropdownUnit = unit
|
||||
ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -733,7 +726,7 @@ function IceTargetHealth.prototype:EnableClickTargeting(bEnable)
|
||||
self.frame.button:EnableMouse(true)
|
||||
self.frame.button:RegisterForClicks("AnyUp")
|
||||
self.frame.button:SetAttribute("type1", "target")
|
||||
self.frame.button:SetAttribute("type2", "menu")
|
||||
self.frame.button:SetAttribute("type2", "togglemenu")
|
||||
self.frame.button:SetAttribute("unit", self.unit)
|
||||
|
||||
-- set up click casting
|
||||
|
@ -1150,7 +1150,7 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw)
|
||||
self.frame:SetScript("OnLeave", function(frame) self:OnLeave(frame) end)
|
||||
|
||||
self.frame:SetAttribute("type1", "target")
|
||||
self.frame:SetAttribute("type2", "menu")
|
||||
self.frame:SetAttribute("type2", "togglemenu")
|
||||
|
||||
-- set up click casting
|
||||
ClickCastFrames = ClickCastFrames or {}
|
||||
@ -1173,13 +1173,6 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw)
|
||||
|
||||
self.frame:SetAttribute("unit", self.unit)
|
||||
|
||||
if not self.frame.menu then
|
||||
self.frame.menu = function(this, unit)
|
||||
IceHUD.DropdownUnit = unit
|
||||
ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- create a fancy highlight frame for mouse over
|
||||
if (not self.frame.highLight) then
|
||||
|
@ -1,5 +1,22 @@
|
||||
# Changelog
|
||||
|
||||
v1.15.4:
|
||||
|
||||
- Update TOC for TWW
|
||||
|
||||
v1.15.3:
|
||||
|
||||
- Fix custom cooldown bars not working in 11.x (wowace issue #363)
|
||||
|
||||
v1.15.2:
|
||||
|
||||
- Re-enable right-click context menus on 11.x.
|
||||
- Update TOC for Classic-era
|
||||
|
||||
v1.15.1:
|
||||
|
||||
- Fix error opening options.
|
||||
|
||||
v1.15.0:
|
||||
|
||||
- Support The War Within/11.0
|
||||
|
Reference in New Issue
Block a user