annotate SkeletonKey/ActionTypes.lua @ 16:cdd387d39137

filename refactor
author Nenue
date Fri, 29 Jul 2016 21:18:15 -0400
parents
children 500f9b2bd9ac
rev   line source
Nenue@16 1 -- SkeletonKey
Nenue@16 2 -- ActionTypes.lua
Nenue@16 3 -- Created: 7/29/2016 9:14 PM
Nenue@16 4 -- %file-revision%
Nenue@16 5 --
Nenue@16 6 local kb, print, wrap = LibStub('LibKraken').register(KeyBinder)
Nenue@16 7
Nenue@16 8 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544
Nenue@16 9
Nenue@16 10 local PETACTION_SCRIPT = {
Nenue@16 11 [PET_ACTION_MOVE_TO] = {SLASH_PET_MOVE_TO1, 'pet_move_to'},
Nenue@16 12 [PET_ACTION_ATTACK] = {SLASH_PET_ATTACK1, 'pet_attack'},
Nenue@16 13 [PET_ACTION_FOLLOW] = {SLASH_PET_FOLLOW1, 'pet_follow'},
Nenue@16 14 [PET_ACTION_WAIT] = {SLASH_PET_STAY1, 'pet_stay'},
Nenue@16 15 [PET_MODE_AGGRESSIVE] = {SLASH_PET_AGGRESSIVE1, 'pet_aggressive'},
Nenue@16 16 [PET_MODE_DEFENSIVE] = {SLASH_PET_DEFENSIVE1, 'pet_defensive'},
Nenue@16 17 [PET_MODE_PASSIVE] = {SLASH_PET_PASSIVE1, 'pet_passive'},
Nenue@16 18 [PET_MODE_ASSIST] = {SLASH_PET_ASSIST1, 'pet_assist'},
Nenue@16 19 }
Nenue@16 20
Nenue@16 21 --- Caps Lock derivatives
Nenue@16 22 local ACTION_HANDLERS = {}
Nenue@16 23 ACTION_HANDLERS['mount'] = function(id, name)
Nenue@16 24 return "/script C_MountJournal.SummonByID("..id..")"
Nenue@16 25 end
Nenue@16 26 ACTION_HANDLERS['macro'] = "%s"
Nenue@16 27 ACTION_HANDLERS['equipset'] = "/script UseEquipmentSet(%d)"
Nenue@16 28 ACTION_HANDLERS['spell'] = "/cast %s"
Nenue@16 29 ACTION_HANDLERS['petaction'] = function(id, name)
Nenue@16 30 return PETACTION_SCRIPT[name] or "/cast ".. name
Nenue@16 31 end
Nenue@16 32
Nenue@16 33 ACTION_HANDLERS['battlepet'] = SLASH_SUMMON_BATTLE_PET1 .. " %s"
Nenue@16 34 ACTION_HANDLERS['item'] = "/use %s"
Nenue@16 35 local professionMappings = {
Nenue@16 36 [5] = 3,
Nenue@16 37 [7] = 4,
Nenue@16 38 [9] = 5,
Nenue@16 39 [10] = 6
Nenue@16 40 }
Nenue@16 41
Nenue@16 42
Nenue@16 43 --- Generates the command strings needed to assign different abilities
Nenue@16 44 kb.RegisterAction = function(actionType, id, name)
Nenue@16 45 local macroText, macroName, command = '', '', ''
Nenue@16 46
Nenue@16 47 if actionType == 'spell' then
Nenue@16 48 if kb.ProfessionCache[id] then
Nenue@16 49 command = CLICK_KEYBINDER_KEY .. "profession_".. kb.ProfessionCache[id].profOffset .. '_' .. kb.ProfessionCache[id].spellNum
Nenue@16 50 else
Nenue@16 51 command = CLICK_KEYBINDER_KEY ..name
Nenue@16 52 end
Nenue@16 53 else
Nenue@16 54
Nenue@16 55 if type(ACTION_SCRIPT[actionType]) == 'function' then
Nenue@16 56 macroName, macroText = ACTION_SCRIPT[actionType](id, name)
Nenue@16 57 else
Nenue@16 58 macroName = actionType .. ' ' .. name
Nenue@16 59 macroText = ACTION_SCRIPT[actionType]:format(name)
Nenue@16 60 end
Nenue@16 61
Nenue@16 62 local baseName, iterative = macroName, 1
Nenue@16 63 while (macros[macroName] and macros[macroName][1] ~= macroText) do
Nenue@16 64 print(' * cannot use|cFF00FF00', macroName, '|r"'.. (macros[macroName][1] or '') .. '"')
Nenue@16 65 macroName = baseName .. '_' .. iterative
Nenue@16 66 iterative = iterative + 1
Nenue@16 67 end
Nenue@16 68 if macroName ~= baseName then
Nenue@16 69 print(' * Creating|cFF00FF00', macroName)
Nenue@16 70 else
Nenue@16 71 print(' * Re-using|cFF00FF00', macroName)
Nenue@16 72 end
Nenue@16 73 command = 'CLICK KeyBinderMacro:'.. macroName
Nenue@16 74 macros[macroName] = {macroText, command }
Nenue@16 75 end
Nenue@16 76
Nenue@16 77 print('RegisterAction', actionType, id, '->', command , macroText)
Nenue@16 78 return macroName, macroText, command
Nenue@16 79 end