Mercurial > wow > skeletonkey
comparison KeyButton.lua @ 72:c48913c5924c
- Dynamic bindings properly update between talent choices, and the hotkey text is also correctly reflected.
| author | Nenue |
|---|---|
| date | Sat, 07 Jan 2017 12:47:41 -0500 |
| parents | ca3118127e5e |
| children | 9824d524a661 |
comparison
equal
deleted
inserted
replaced
| 71:ca3118127e5e | 72:c48913c5924c |
|---|---|
| 310 | 310 |
| 311 local borderType = BORDER_UNASSIGNED | 311 local borderType = BORDER_UNASSIGNED |
| 312 | 312 |
| 313 if self.command then | 313 if self.command then |
| 314 | 314 |
| 315 print('|cFFFF4400', self.actionName, #self.assignedKeys, self.assignedKeys) | |
| 316 print(table.concat(self.assignedKeys, ',')) | |
| 317 print(self.actionID) | |
| 318 self.bindingText= kb.BindingString(unpack(self.assignedKeys)) | |
| 315 if not self.isAvailable then | 319 if not self.isAvailable then |
| 316 borderType = BORDER_DYNAMIC | 320 borderType = BORDER_DYNAMIC |
| 317 self.ignoreTexture:Show() | 321 self.ignoreTexture:Show() |
| 318 else | 322 else |
| 319 self.ignoreTexture:Hide() | 323 self.ignoreTexture:Hide() |
| 324 borderType = BORDER_DYNAMIC | 328 borderType = BORDER_DYNAMIC |
| 325 else | 329 else |
| 326 borderType = BORDER_ASSIGNED | 330 borderType = BORDER_ASSIGNED |
| 327 end | 331 end |
| 328 end | 332 end |
| 329 | |
| 330 | 333 |
| 331 if self.actionType == 'macro' then | 334 if self.actionType == 'macro' then |
| 332 self.macro:Show() | 335 self.macro:Show() |
| 333 else | 336 else |
| 334 self.macro:Hide() | 337 self.macro:Hide() |
| 344 end | 347 end |
| 345 | 348 |
| 346 | 349 |
| 347 if self.dynamicType == 'profession' then | 350 if self.dynamicType == 'profession' then |
| 348 if self.isAvailable then | 351 if self.isAvailable then |
| 349 | |
| 350 self.statusText = '|cFFFFFF00Profession|r' | 352 self.statusText = '|cFFFFFF00Profession|r' |
| 351 self.bindingText = kb.BindingString(GetBindingKey(self.command)) | |
| 352 else | 353 else |
| 353 | 354 |
| 354 self.statusText = '|cFFFF4400'..PROFESSION_HEADERS[self.dynamicIndex]..'|r' | 355 self.statusText = '|cFFFF4400'..PROFESSION_HEADERS[self.dynamicIndex]..'|r' |
| 355 self.actionName = '(#'..self.dynamicIndex..')' | 356 self.actionName = '(#'..self.dynamicIndex..')' |
| 356 self.bindingText ='?' | |
| 357 end | 357 end |
| 358 elseif self.dynamicType == 'talent' then | 358 elseif self.dynamicType == 'talent' then |
| 359 self.statusText = '|cFF00FFFF'.. TALENT .. '|r' | 359 self.statusText = '|cFF00FFFF'.. TALENT .. '|r' |
| 360 if self.isAvailable then | |
| 361 self.bindingText = kb.BindingString(GetBindingKey(self.command)) | |
| 362 else | |
| 363 | |
| 364 print('|cFFFF4400', self.actionName, #self.assignedKeys, self.assignedKeys) | |
| 365 print(self.actionID) | |
| 366 self.bindingText= kb.BindingString(self.assignedKeys) | |
| 367 end | |
| 368 elseif self.dynamicType == 'petaction' then | |
| 369 self.bindingText = kb.BindingString(GetBindingKey(self.command)) | |
| 370 else | |
| 371 self.bindingText = kb.BindingString(GetBindingKey(self.command)) | |
| 372 end | 360 end |
| 373 | 361 |
| 374 local locked, layer = kb.IsCommandBound(self) | 362 local locked, layer = kb.IsCommandBound(self) |
| 375 if locked then | 363 if locked then |
| 376 self.icon:SetAlpha(0.5) | 364 self.icon:SetAlpha(0.5) |
| 491 local SkeletonKey_GetSpellDetails = function(self) | 479 local SkeletonKey_GetSpellDetails = function(self) |
| 492 | 480 |
| 493 local spellName, spellID, command, icon = self.actionName, self.actionID, self.command, self.iconPath | 481 local spellName, spellID, command, icon = self.actionName, self.actionID, self.command, self.iconPath |
| 494 | 482 |
| 495 | 483 |
| 496 cprint(' In:', spellName, spellID, command) | 484 print(' In:', spellName, spellID, command) |
| 497 cprint(GetSpellInfo(spellName or spellID)) | 485 print(GetSpellInfo(spellName or spellID)) |
| 498 local internalName, _, internalIcon, _, _, _, _ = GetSpellInfo(spellName or spellID) | 486 local internalName, _, internalIcon, _, _, _, _ = GetSpellInfo(spellName or spellID) |
| 499 local isAvailable = internalName and true | 487 local isAvailable = internalName and true |
| 500 | 488 |
| 501 if internalName and (internalName ~= spellName) then | 489 if internalName and (internalName ~= spellName) then |
| 502 -- it's a binding for the originating spell, leave it as is | 490 -- it's a binding for the originating spell, leave it as is |
| 503 cprint(' |cFFFF4400spell is an override(', internalName, '~=', spellName,') leave the name info alone') | 491 print(' |cFFFF4400spell is an override(', internalName, '~=', spellName,') leave the name info alone') |
| 504 self.statusText = '|cFFFFFF00Spell|r' | 492 self.statusText = '|cFFFFFF00Spell|r' |
| 505 self.isAvailable = true | 493 self.isAvailable = true |
| 506 return | 494 return |
| 507 end | 495 end |
| 508 | 496 |
| 509 -- let's us match spells replaced by talents | 497 -- let's us match spells replaced by talents |
| 510 local info = kb.DynamicSpells[internalName or spellName] | 498 local info = kb.DynamicSpells[internalName or spellName] |
| 511 if not info then | 499 if not info then |
| 512 local dynamicType, dynamicIndex, dynamicSubIndex = command:match("(%a+)_(%S+)_(%S+)") | 500 local dynamicType, dynamicIndex, dynamicSubIndex = command:match("(%a+)_(%S+)_(%S+)") |
| 513 if kb.DynamicSpells[dynamicType] then | 501 if kb.DynamicSpells[dynamicType] then |
| 514 cprint('|cFFFF4400resolving dynamic type index:', internalName, spellName, command) | 502 print('|cFFFF4400resolving dynamic type index:', internalName, spellName, command) |
| 515 dynamicIndex = tonumber(dynamicIndex) | 503 dynamicIndex = tonumber(dynamicIndex) |
| 516 dynamicSubIndex = tonumber(dynamicSubIndex) | 504 dynamicSubIndex = tonumber(dynamicSubIndex) |
| 517 local cache = kb.DynamicSpells[dynamicType] | 505 local cache = kb.DynamicSpells[dynamicType] |
| 518 cprint('type:', dynamicType) | 506 print('type:', dynamicType) |
| 519 if dynamicIndex and cache[dynamicIndex] then | 507 if dynamicIndex and cache[dynamicIndex] then |
| 520 info = kb.DynamicSpells[dynamicType][dynamicIndex] | 508 info = kb.DynamicSpells[dynamicType][dynamicIndex] |
| 521 cprint('index:', dynamicIndex) | 509 print('index:', dynamicIndex) |
| 522 if dynamicSubIndex and info[dynamicSubIndex] then | 510 if dynamicSubIndex and info[dynamicSubIndex] then |
| 523 info = info[dynamicSubIndex] | 511 info = info[dynamicSubIndex] |
| 524 cprint('sub-index:', dynamicSubIndex) | 512 print('sub-index:', dynamicSubIndex) |
| 525 end | 513 end |
| 526 isAvailable = true | 514 isAvailable = true |
| 527 end | 515 end |
| 528 end | 516 end |
| 529 if not info then | 517 if not info then |
| 530 info = SkeletonKey_GetGenericSpell(spellName, spellID, internalIcon or icon) | 518 info = SkeletonKey_GetGenericSpell(spellName, spellID, internalIcon or icon) |
| 531 end | 519 end |
| 532 end | 520 end |
| 533 info.isAvailable = isAvailable | 521 info.isAvailable = isAvailable |
| 534 | 522 |
| 535 cprint('|cFF00FF88SpellDetails:|r', info.actionName, info.actionID, info.dynamicType, info.isAvailable) | 523 print('|cFF00FF88SpellDetails:|r', info.actionName, info.actionID, info.dynamicType, info.isAvailable) |
| 536 for k,v in pairs(info) do | 524 for k,v in pairs(info) do |
| 537 --cprint(' ',k,v) | 525 --cprint(' ',k,v) |
| 538 self[k] = v | 526 self[k] = v |
| 539 end | 527 end |
| 540 | 528 |
| 597 for i = 1, GetNumMacros() do | 585 for i = 1, GetNumMacros() do |
| 598 local searchName, _ , searchBody = GetMacroInfo(i) | 586 local searchName, _ , searchBody = GetMacroInfo(i) |
| 599 if (searchName == name) and (searchBody == macroText) then | 587 if (searchName == name) and (searchBody == macroText) then |
| 600 -- complete match | 588 -- complete match |
| 601 actionID = i | 589 actionID = i |
| 590 kb:print('Macro index changed: |cFFFFFF00', actionType, '|r', name, '(was '..tostring(prevIndex)..', now '..tostring(actionID)..')') | |
| 602 break | 591 break |
| 603 elseif (searchName == name) or (searchBody == macroText) then | 592 elseif (searchName == name) or (searchBody == macroText) then |
| 604 -- partial match, continue the search | 593 -- partial match, continue the search |
| 605 actionID = i | 594 actionID = i |
| 595 kb:print('Macro index changed: |cFFFFFF00', actionType, '|r', name, '(was '..tostring(prevIndex)..', now '..tostring(actionID)..')') | |
| 606 end | 596 end |
| 607 end | 597 end |
| 608 end | 598 end |
| 609 kb:print('Macro index changed: |cFFFFFF00', actionType, '|r', name, '(was '..tostring(prevIndex)..', now '..tostring(actionID)..')') | 599 |
| 610 end | 600 end |
| 611 else | 601 else |
| 612 actionID = GetMacroIndexByName(name) | 602 actionID = GetMacroIndexByName(name) |
| 613 end | 603 end |
| 614 self.statusText = 'Macro' | 604 self.statusText = 'Macro' |
| 619 end | 609 end |
| 620 self.isAvailable = true | 610 self.isAvailable = true |
| 621 end | 611 end |
| 622 | 612 |
| 623 if self.isAvailable then | 613 if self.isAvailable then |
| 624 local oldCommand = command | 614 --[[ |
| 625 command = kb.LoadBinding(self) | 615 local checkCommand = command |
| 626 if oldCommand ~= command then | 616 checkCommand = kb.LoadBinding(self) |
| 617 if checkCommand and (checkCommand ~= command) then | |
| 627 print('|cFFFF4400fixing command string', actionType, actionID, name) | 618 print('|cFFFF4400fixing command string', actionType, actionID, name) |
| 628 kb.currentProfile.bound[oldCommand] = nil | 619 kb.currentProfile.bound[command] = nil |
| 629 kb.currentProfile.bound[command] = slot | 620 kb.currentProfile.bound[checkCommand] = slot |
| 630 for k,v in pairs(kb.currentProfile.bindings) do | 621 for k,v in pairs(kb.currentProfile.bindings) do |
| 631 if v == oldCommand then | 622 if v == command then |
| 632 kb.currentProfile.bindings[k] = command | 623 kb.currentProfile.bindings[k] = checkCommand |
| 633 end | 624 end |
| 634 end | 625 end |
| 635 end | 626 end |
| 627 --]] | |
| 636 end | 628 end |
| 637 | 629 |
| 638 | 630 |
| 639 actionID = actionID or 0 | 631 actionID = actionID or 0 |
| 640 self:EnableKeyboard(true) | 632 self:EnableKeyboard(true) |
