comparison SkeletonKey/SkeletonKey.lua @ 15:32d64e42ec9b

- resolve pet bar actions for binding slots - detect type of petaction (can be spell, stance, or 'PETACTION') - keep track of displayed pet ability slots and update them alongside pet cache refreshes
author Nenue
date Fri, 29 Jul 2016 03:27:15 -0400
parents 82170735e67c
children cdd387d39137
comparison
equal deleted inserted replaced
14:82170735e67c 15:32d64e42ec9b
47 ['petaction'] = "/cast %s", 47 ['petaction'] = "/cast %s",
48 ['battlepet'] = SLASH_SUMMON_BATTLE_PET1 .. " %s", 48 ['battlepet'] = SLASH_SUMMON_BATTLE_PET1 .. " %s",
49 ['item'] = "/use %s" 49 ['item'] = "/use %s"
50 } 50 }
51 51
52
53 local PETACTION_SCRIPT = {
54 [PET_ACTION_MOVE_TO] = SLASH_PET_MOVE_TO1,
55 [PET_ACTION_ATTACK] = SLASH_PET_ATTACK1,
56 [PET_ACTION_FOLLOW] = SLASH_PET_FOLLOW1,
57 [PET_ACTION_WAIT] = SLASH_PET_STAY1,
58 [PET_MODE_AGGRESSIVE] = SLASH_PET_AGGRESSIVE1,
59 [PET_MODE_DEFENSIVE] = SLASH_PET_DEFENSIVE1,
60 [PET_MODE_PASSIVE] = SLASH_PET_PASSIVE1,
61 [PET_MODE_ASSIST] = SLASH_PET_ASSIST1,
62 }
63
52 local professionMappings = { 64 local professionMappings = {
53 [5] = 3, 65 [5] = 3,
54 [7] = 4, 66 [7] = 4,
55 [9] = 5, 67 [9] = 5,
56 [10] = 6 68 [10] = 6
72 kb.configHeaders = {} 84 kb.configHeaders = {}
73 kb.loadedProfiles = {} 85 kb.loadedProfiles = {}
74 kb.orderedProfiles = {} 86 kb.orderedProfiles = {}
75 kb.buttons = {} 87 kb.buttons = {}
76 kb.macros = {} 88 kb.macros = {}
89 kb.petFrames = {} -- pet data is slightly delayed, their buttons are indexed here so they can be refreshed
90 kb.talentFrames = {}
91 kb.professionFrames = {}
77 92
78 -- these are sent to plugin 93 -- these are sent to plugin
79 94
80 local bindings = {} 95 local bindings = {}
81 local macros = {} 96 local macros = {}
205 220
206 if key:match('[RL]SHIFT') or key:match('[RL]ALT') or key:match('[RL]CTRL') then 221 if key:match('[RL]SHIFT') or key:match('[RL]ALT') or key:match('[RL]CTRL') then
207 return 222 return
208 end 223 end
209 print('|cFFFFFF00received|cFFFFFF00', self:GetID(), '|cFF00FFFF', key) 224 print('|cFFFFFF00received|cFFFFFF00', self:GetID(), '|cFF00FFFF', key)
225
226 local modifier = ''
227 if IsAltKeyDown() then
228 modifier = 'ALT-'
229 end
230 if IsControlKeyDown() then
231 modifier = modifier.. 'CTRL-'
232 end
233 if IsShiftKeyDown() then
234 modifier = modifier..'SHIFT-'
235 end
236 local binding = modifier..key
210 237
211 if key == 'ESCAPE' then 238 if key == 'ESCAPE' then
212 local keys = {GetBindingKey(self.command) } 239 local keys = {GetBindingKey(self.command) }
213 --print('detected', #keys, 'bindings') 240 --print('detected', #keys, 'bindings')
214 for i, key in pairs(keys) do 241 for i, key in pairs(keys) do
230 end 257 end
231 258
232 bindsCommitted = false 259 bindsCommitted = false
233 self.active = false 260 self.active = false
234 else 261 else
235 262 if kb.SystemBinds[binding] then
236 local modifier = '' 263 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', key, kb.SystemBinds[binding]))
237 if IsAltKeyDown() then 264 return
238 modifier = 'ALT-'
239 end
240 if IsControlKeyDown() then
241 modifier = modifier.. 'CTRL-'
242 end
243 if IsShiftKeyDown() then
244 modifier = modifier..'SHIFT-'
245 end 265 end
246 266
247 267
248 if self.command then 268 if self.command then
249 self.binding = modifier..key
250 269
251 local previousKeys 270 local previousKeys
252 local previousAction = GetBindingAction(self.binding) 271 local previousAction = GetBindingAction(binding)
253 local binding1, binding2, new1, new2 272 local binding1, binding2, new1, new2
254 print(type(previousAction), previousAction) 273 print(type(previousAction), previousAction)
255 if previousAction ~= "" and previousAction ~= self.command then 274 if previousAction ~= "" and previousAction ~= self.command then
256 if protected[previousAction] then 275 if protected[previousAction] then
257 -- bounce out if trying to use a protected key 276 -- bounce out if trying to use a protected key
258 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', key, GetBindingAction(previousAction))) 277 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', key, GetBindingAction(binding)))
259 kb.bindingstext:SetText(nil) 278 kb.bindingstext:SetText(nil)
260 return 279 return
261 else 280 else
262 kb:print('Discarding keybind for', previousAction) 281 kb:print('Discarding keybind for', previousAction)
263 -- todo: sort out retcon'd talent spells 282 -- todo: sort out retcon'd talent spells
264 end 283 end
265 end 284 end
266 285
267 self.pending = true 286 self.pending = true
287 self.binding = binding
268 288
269 bindsCommitted = false 289 bindsCommitted = false
270 SetBinding(self.binding, self.command) 290 SetBinding(self.binding, self.command)
271 SaveBindings(GetCurrentBindingSet()) 291 SaveBindings(GetCurrentBindingSet())
272 292
385 end 405 end
386 406
387 kb.ApplyAllBindings =function () 407 kb.ApplyAllBindings =function ()
388 table.wipe(kb.inactiveTalentBindings) 408 table.wipe(kb.inactiveTalentBindings)
389 409
410
390 -- reflect action key settings 411 -- reflect action key settings
391 if GetCVarBool("ActionButtonUseKeyDown") then 412 if GetCVarBool("ActionButtonUseKeyDown") then
392 KeyBinderMacro:RegisterForClicks("AnyDown") 413 KeyBinderMacro:RegisterForClicks("AnyDown")
393 KeyBinderKey:RegisterForClicks("AnyDown") 414 KeyBinderKey:RegisterForClicks("AnyDown")
394 else 415 else
491 --- Mutable skills data 512 --- Mutable skills data
492 kb.UpdateSpecInfo() 513 kb.UpdateSpecInfo()
493 kb.UpdateTalentInfo() 514 kb.UpdateTalentInfo()
494 515
495 kb.orderedProfiles = {kb.loadedProfiles[BINDING_TYPE_GLOBAL], kb.loadedProfiles[BINDING_TYPE_CHARACTER], kb.loadedProfiles[BINDING_TYPE_SPECIALIZATION]} 516 kb.orderedProfiles = {kb.loadedProfiles[BINDING_TYPE_GLOBAL], kb.loadedProfiles[BINDING_TYPE_CHARACTER], kb.loadedProfiles[BINDING_TYPE_SPECIALIZATION]}
496 if db.bindMode and (not kb.configTitle[db.bindMode]) then 517 if (not db.bindMode) or (not kb.configTitle[db.bindMode]) then
497 print('fixing bad bindMode value, was', db.bindMode) 518 print('fixing bad bindMode value, was', db.bindMode)
498 db.bindMode = defaultMode 519 db.bindMode = defaultMode
499 end 520 end
500 521
501 522
525 kb.RevertBindings = function() 546 kb.RevertBindings = function()
526 -- todo: reversion code 547 -- todo: reversion code
527 end 548 end
528 549
529 kb.ConfirmBindings = function() 550 kb.ConfirmBindings = function()
530 SaveBindings(GetCurrentBindingSet())
531 bindsCommitted = true
532 for i, button in ipairs(buttons) do
533 button.pending = false
534 end
535 kb.ApplyAllBindings() 551 kb.ApplyAllBindings()
536
537 kb.ui() 552 kb.ui()
538 kb:print('Keybinds saved.')
539 end 553 end
540 554
541 555
542 556
543 557
551 db = kb.db 565 db = kb.db
552 566
553 kb.SelectProfileSet(kb.profileName) 567 kb.SelectProfileSet(kb.profileName)
554 -- todo: redo import checking 568 -- todo: redo import checking
555 569
556 570 kb.UpdateSystemBinds()
557
558 kb.ApplyAllBindings() 571 kb.ApplyAllBindings()
559 572
560 kb.ui(true) 573 kb.ui(true)
561 end 574 end
562 575