Clickzz/prefs.lua

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