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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
INVENTORY_SLOT_ACTIONS_USE_CONTEXT_MENU = true
INVENTORY_SLOT_ACTIONS_PREVENT_CONTEXT_MENU = false
actions . m_slotActions = { }
actions . m_keybindActions = { }
actions . m_numContextMenuActions = 0
if useContextMenu == nil then
useContextMenu = INVENTORY_SLOT_ACTIONS_USE_CONTEXT_MENU
end
return actions
end
self . m_inventorySlot = nil
self . m_hasActions = nil
self . m_numContextMenuActions = 0
if ( self . m_contextMenuMode ) then
end
end
self . m_contextMenuMode = useContextMenu
end
self . m_inventorySlot = inventorySlot
end
if ( ( self . m_numContextMenuActions > 0 ) and self . m_contextMenuMode ) then
end
end
local INDEX_ACTION_NAME = 1
local INDEX_ACTION_CALLBACK = 2
local INDEX_ACTION_TYPE = 3
local INDEX_ACTION_VISIBILITY = 4
local INDEX_ACTION_OPTIONS = 5
local PRIMARY_ACTION_KEY = 1
if ( self . m_hasActions ) then
local actionData
if actionType == "keybind" then
actionData = self . m_keybindActions [ actionKey ]
else
actionData = self . m_slotActions [ actionKey ]
end
if ( not actionData ) then return end
if ( options and options == "ignoreSilent" ) then
if ( actionData [ INDEX_ACTION_OPTIONS ] and actionData [ INDEX_ACTION_OPTIONS ] == "silent" ) then
return
end
end
if ( not actionType or actionData [ INDEX_ACTION_TYPE ] == actionType ) then
return actionData
end
end
end
local success = false
if ( primaryAction ) then
success = true
local actionOptions = primaryAction [ INDEX_ACTION_OPTIONS ]
if actionOptions and actionOptions . visibleWhenDead == true then
primaryAction [ INDEX_ACTION_CALLBACK ] ( )
else
end
else
primaryAction [ INDEX_ACTION_CALLBACK ] ( )
end
end
end
return success
end
end
end
end
end
if ( primaryAction ) then
return primaryAction [ INDEX_ACTION_NAME ]
end
end
end
end
end
if primaryAction and primaryAction [ INDEX_ACTION_VISIBILITY ] then
return primaryAction [ INDEX_ACTION_VISIBILITY ] ( )
end
return true
end
end
return true
end
if actionType == "keybind1" then
return 1
elseif actionType == "keybind2" then
return 2
end
end
end
function ZO_InventorySlotActions : AddSlotAction ( actionStringId , actionCallback , actionType , visibilityFunction , options )
if not ( options and options . visibleWhenDead ) then
else
end
end
if keybindIndex then
self . m_keybindActions [ keybindIndex ] = { actionName , actionCallback , "keybind" , visibilityFunction , options }
end
table . insert ( self . m_slotActions , { actionName , actionCallback , actionType , visibilityFunction , options } ) -- NOTE: Update indices if order/data changes
self . m_hasActions = true
if ( self . m_contextMenuMode and ( not options or options ~= "silent" ) and ( not visibilityFunction or visibilityFunction ( ) ) ) then
self . m_numContextMenuActions = self . m_numContextMenuActions + 1
end
end
if ( self . m_slotActions ) then
return # self . m_slotActions
end
return 0
end
if ( self . m_slotActions ) then
return self . m_slotActions [ index ]
end
end |