121 lines
4.0 KiB
Lua
Executable File
121 lines
4.0 KiB
Lua
Executable File
local addonName, addon = ...
|
|
local childName = addon['childName']
|
|
local db
|
|
local child = addon[childName]
|
|
local modifier = {'none','shift','ctrl','alt'}
|
|
local mouseButtons = {'LEFTBUTTON','RIGHTBUTTON','WHEEL',"BUTTON4","BUTTON5"}
|
|
local prefGroupActiveClickzz
|
|
local function selectSpell()
|
|
local list = {}
|
|
for spellId, spellName in pairs(db['spells']) do
|
|
list[#list+1] = spellName
|
|
end
|
|
sort(list)
|
|
return list
|
|
end
|
|
local function remClick(pref)
|
|
child['options']['args'][childName]['args']["activeClickzz"]['args'][pref[#pref-1]] = nil
|
|
db['clicks'][strsub(pref[#pref-1],10)] = nil
|
|
child:enableAllFrames()
|
|
end
|
|
local function buildMenu()
|
|
local config = LibStub:GetLibrary("zzConfig")
|
|
local options = child['options']
|
|
local main = options['args'][childName]
|
|
for clickName,v in pairs(db['clicks']) do
|
|
-- print(clickName, v)
|
|
local grpName = v['btnName']
|
|
if(v['mod'] ~= 1) then
|
|
grpName = format("%s-%s",strupper(v['modName']),grpName)
|
|
end
|
|
local clickNum = format("clickNum-%s", clickName)
|
|
local grp = config:AddConfigEntry(prefGroupActiveClickzz, clickNum, "group", grpName, 'Settings', 1, {
|
|
['db'] = db,
|
|
['func'] = nil,
|
|
SetDB = function(self, db) self.db = db end,
|
|
GetPref = child.getPref,
|
|
SetPref = child.setPref,
|
|
})
|
|
config:AddConfigEntry(grp, "remClick", "execute", 'Remove', nil, 9, remClick)
|
|
config:AddConfigEntry(grp, "dualSpell", "toggle", 'Dual', 'Set damage and heal spell on same click', 8)
|
|
config:AddConfigEntry(grp, "selectSpell", "select", 'Spell', nil, 7, selectSpell)
|
|
if(v['dualSpell']) then
|
|
config:AddConfigEntry(grp, "selectSpell2", "select", 'Heal Spell', nil, 6, selectSpell)
|
|
end
|
|
end
|
|
end
|
|
function child:getPref(pref)
|
|
if(pref[#pref] == 'selectSpell') then
|
|
local spells = selectSpell()
|
|
for i = 1, #spells do
|
|
if(spells[i] == db['clicks'][strsub(pref[#pref-1],10)]['spell']) then
|
|
return i
|
|
end
|
|
end
|
|
elseif(pref[#pref] == 'selectSpell2') then
|
|
local spells = selectSpell()
|
|
for i = 1, #spells do
|
|
if(spells[i] == db['clicks'][strsub(pref[#pref-1],10)]['spellHeal']) then
|
|
return i
|
|
end
|
|
end
|
|
elseif(pref[#pref] == 'dualSpell') then
|
|
return db['clicks'][strsub(pref[#pref-1],10)]['dualSpell']
|
|
end
|
|
return db[pref[#pref]]
|
|
end
|
|
function child:setPref(pref,value)
|
|
if(pref[#pref] == 'selectSpell') then
|
|
local spells = selectSpell()
|
|
db['clicks'][strsub(pref[#pref-1],10)]['spell'] = spells[value]
|
|
child:enableAllFrames()
|
|
return
|
|
elseif(pref[#pref] == 'dualSpell') then
|
|
db['clicks'][strsub(pref[#pref-1],10)]['dualSpell'] = value
|
|
buildMenu()
|
|
return
|
|
elseif(pref[#pref] == 'selectSpell2') then
|
|
local spells = selectSpell()
|
|
db['clicks'][strsub(pref[#pref-1],10)]['spellHeal'] = spells[value]
|
|
child:enableAllFrames()
|
|
return
|
|
end
|
|
db[pref[#pref]] = value
|
|
end
|
|
local function addClick()
|
|
local mod = tonumber(db['modType'])
|
|
if(modifier[mod]) then
|
|
local clickName
|
|
local btn = tonumber(db['mouseButton'])
|
|
local mf = modifier[mod]
|
|
local bf = mouseButtons[btn]
|
|
if(mod==1) then
|
|
clickName = format("type%i", btn)
|
|
else
|
|
clickName = format("%s-type%i", mf, btn)
|
|
end
|
|
db['clicks'][clickName] = db['clicks'][clickName] or {
|
|
['btnName'] = bf,
|
|
['modName'] = mf,
|
|
['btn'] = btn,
|
|
['mod'] = mod
|
|
}
|
|
buildMenu()
|
|
child:enableAllFrames()
|
|
end
|
|
end
|
|
local init = {
|
|
Setup = function(self)
|
|
db = child['db']
|
|
local config = LibStub:GetLibrary("zzConfig")
|
|
local options = child['options']
|
|
local main = options['args'][childName]
|
|
-- print("setup prefs", childName)
|
|
config:AddConfigEntry(main, "modType", "select", 'Modifier', nil, 1, modifier)
|
|
config:AddConfigEntry(main, "mouseButton", "select", 'Mousebutton', nil, 2, mouseButtons)
|
|
config:AddConfigEntry(main, "addClick", "execute", 'Add Click', nil, 3, addClick)
|
|
prefGroupActiveClickzz = config:AddConfigEntry(main, "activeClickzz", "group", 'Active Clickzz', '', 4)
|
|
buildMenu()
|
|
end
|
|
}
|
|
addon.RegisterCallback(init, format("Init%s", childName), 'Setup') |