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
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
|
|
|