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.

84 lines
2.7 KiB

--========================================================--
-- Scorpio Secure Flyout Handler --
-- --
-- Author : kurapica125@outlook.com --
-- Create Date : 2021/03/29 --
--========================================================--
--========================================================--
Scorpio "Scorpio.Secure.FlyoutHandler" "1.0.0"
--========================================================--
MAX_SKILLLINE_TABS = _G.MAX_SKILLLINE_TABS
_FlyoutSlot = {}
_FlyoutTexture = {}
------------------------------------------------------
-- Action Handler
------------------------------------------------------
handler = ActionTypeHandler {
Name = "flyout",
Target = "spell",
PickupSnippet = "Custom",
}
------------------------------------------------------
-- System Event Handler
------------------------------------------------------
__SystemEvent__"LEARNED_SPELL_IN_TAB"
function LEARNED_SPELL_IN_TAB()
return Continue(UpdateFlyoutSlotMap)
end
__SystemEvent__"SPELLS_CHANGED" "SKILL_LINES_CHANGED" "PLAYER_GUILD_UPDATE" "PLAYER_SPECIALIZATION_CHANGED"
function SPELLS_CHANGED(unit)
return (not unit or unit == "player") and Continue(UpdateFlyoutSlotMap)
end
function UpdateFlyoutSlotMap()
local type, id
local name, texture, offset, numEntries, isGuild, offspecID
wipe(_FlyoutSlot)
wipe(_FlyoutTexture)
for i = 1, MAX_SKILLLINE_TABS do
name, texture, offset, numEntries, isGuild, offspecID = GetSpellTabInfo(i)
if not name then break end
if not isGuild and offspecID == 0 then
for index = offset + 1, offset + numEntries do
type, id = GetSpellBookItemInfo(index, "spell")
if type == "FLYOUT" then
if not _FlyoutSlot[id] then
_FlyoutSlot[id] = index
_FlyoutTexture[id] = GetSpellBookItemTexture(index, "spell")
end
end
end
end
end
return handler:RefreshActionButtons()
end
-- Flyout action type handler
-- Overwrite methods
function handler:PickupAction(target)
return PickupSpellBookItem(_FlyoutSlot[target], "spell")
end
function handler:GetActionTexture()
return _FlyoutTexture[self.ActionTarget]
end
function handler:SetTooltip(GameTooltip)
GameTooltip:SetSpellBookItem(_FlyoutSlot[self.ActionTarget], "spell")
end
function handler:IsFlyout()
return true
end