comparison SkeletonKey/BindingsFrame.lua @ 63:2409fe9b81e1

- check macro spells when considering whether a binding should be treated as a talent - clean up talent binding data when releasing/unbinding slots with a related macro/spell
author Nenue
date Thu, 08 Sep 2016 16:52:55 -0400
parents 9eebce04e69b
children 556e075983a6
comparison
equal deleted inserted replaced
62:04c23ceaf9e0 63:2409fe9b81e1
593 print('SetBinding', binding, self.command) 593 print('SetBinding', binding, self.command)
594 SetBinding(binding, self.command) 594 SetBinding(binding, self.command)
595 SaveBindings(GetCurrentBindingSet()) 595 SaveBindings(GetCurrentBindingSet())
596 self.binding = binding 596 self.binding = binding
597 597
598 local talentName = self.actionName
599 if self.actionType == 'macro' then
600 talentName = GetMacroSpell(self.actionID)
601 end
602
598 local talentInfo 603 local talentInfo
599 if self.actionType == 'spell' and kb.TalentCache[self.actionID] then 604 if talentName and kb.TalentCache[talentName] then
600 print('store dynamicType talent') 605 print('store dynamicType talent')
601 talentInfo = {self.macroName, self.actionName, self.actionType, self.actionID} 606 talentInfo = {self.macroName, self.actionName, self.actionType, self.actionID}
602 local bindings = {GetBindingKey(self.command) } 607 local bindings = {GetBindingKey(self.command) }
603 for i, key in ipairs(bindings) do 608 for i, key in ipairs(bindings) do
604 tinsert(talentInfo, key) 609 tinsert(talentInfo, key)
611 if talentInfo then 616 if talentInfo then
612 profile.bindings[self.binding] = nil 617 profile.bindings[self.binding] = nil
613 else 618 else
614 profile.bindings[self.binding] = self.command 619 profile.bindings[self.binding] = self.command
615 end 620 end
616 profile.talents[self.actionName] = talentInfo 621 profile.talents[talentName] = talentInfo
617 else 622 else
618 profile.bindings[self.binding] = nil 623 profile.bindings[self.binding] = nil
619 profile.bound[self.command] = nil 624 profile.bound[self.command] = nil
620 kb.currentProfile.talents[self.actionName] = nil 625 profile.talents[talentName] = nil
621 end
622 if kb.currentProfile.talents[self.actionID] then
623 kb.currentProfile.talents[self.actionID] = nil
624 end 626 end
625 end 627 end
626 628
627 629
628 kb:print(L('BINDING_ASSIGNED', self.binding, self.actionName, kb.currentHeader)) 630 kb:print(L('BINDING_ASSIGNED', self.binding, self.actionName, kb.currentHeader))
634 kb.UnbindSlot = function(self) 636 kb.UnbindSlot = function(self)
635 637
636 local keys = {GetBindingKey(self.command) } 638 local keys = {GetBindingKey(self.command) }
637 if #keys >= 1 then 639 if #keys >= 1 then
638 kb.UpdateBindingsCache(self.actionType, self.actionID, {}) 640 kb.UpdateBindingsCache(self.actionType, self.actionID, {})
641 end
642
643 local talentName = self.actionName
644 if self.actionType == 'macro' then
645 local spellName, _, spellID = GetMacroSpell(self.actionID)
646 talentName = spellName
639 end 647 end
640 648
641 649
642 --print('detected', #keys, 'bindings') 650 --print('detected', #keys, 'bindings')
643 for i, key in pairs(keys) do 651 for i, key in pairs(keys) do
646 SaveBindings(GetCurrentBindingSet()) 654 SaveBindings(GetCurrentBindingSet())
647 if kb.currentProfile.bindings[key] then 655 if kb.currentProfile.bindings[key] then
648 --kb:print(L('BINDING_REMOVED', self.actionName, kb.currentHeader)) 656 --kb:print(L('BINDING_REMOVED', self.actionName, kb.currentHeader))
649 kb.currentProfile.bindings[key] = nil 657 kb.currentProfile.bindings[key] = nil
650 end 658 end
651 if kb.currentProfile.talents[self.actionName] then 659 if kb.currentProfile.talents[talentName] then
652 kb.currentProfile.talents[self.actionName] = nil 660 kb.currentProfile.talents[talentName] = nil
653 end 661 end
654 662
655 kb.bindings[tostring(self.actionType)..'_'..tostring(self.actionID)] = nil 663 kb.bindings[tostring(self.actionType)..'_'..tostring(self.actionID)] = nil
656 end 664 end
657 if kb.currentProfile.bound[self.command] then 665 if kb.currentProfile.bound[self.command] then