forked from xod-wow/LiteMount
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SecureAction.lua
87 lines (70 loc) · 2.06 KB
/
SecureAction.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
--[[----------------------------------------------------------------------------
LiteMount/SecureAction.lua
A set of secure attributes that know how to put themselves onto a button
to perform an action.
Way too many things in this addon are named "action" and I should think of
better names.
Copyright 2011-2021 Mike Battersby
----------------------------------------------------------------------------]]--
local _, LM = ...
--@debug@
if LibDebug then LibDebug() end
--@end-debug@
-- This wrapper class is so that LM.ActionButton can treat all of the returns
-- from action functions as if they were a Mount class.
LM.SecureAction = { }
LM.SecureAction.__index = LM.SecureAction
function LM.SecureAction:New(attr)
return setmetatable(attr, LM.SecureAction)
end
function LM.SecureAction:SetupActionButton(button, n)
for k,v in pairs(self) do
if k ~= 'type' and n then
k = k .. tostring(n)
end
button:SetAttribute(k, v)
end
end
function LM.SecureAction:Macro(macroText, unit)
return self:New( {
["type"] = "macro",
["macrotext"] = macroText,
["unit"] = unit or "player",
} )
end
function LM.SecureAction:Spell(spellName, unit)
local attr = {
["type"] = "spell",
["unit"] = unit or "player",
["spell"] = spellName
}
return self:New(attr)
end
function LM.SecureAction:CancelAura(spellName, unit)
local attr = {
["type"] = "cancelaura",
["spell"] = spellName
}
return self:New(attr)
end
function LM.SecureAction:Item(useArg, unit)
local attr = {
["type"] = "item",
["unit"] = unit or "player",
["item"] = useArg
}
return self:New(attr)
end
function LM.SecureAction:LeaveVehicle()
local attr = {
["type"] = "leavevehicle",
}
return self:New(attr)
end
function LM.SecureAction:Click(clickButton)
local attr = {
["type"] = "click",
["clickbutton"] = clickButton
}
return self:New(attr)
end