comparison ActionTemplates.lua @ 78:d4c100b0fd01 v7.1.5-80-release

- Fixed an issue with talent bindings not loading between specialization changes. - Fixed action button text corruption that occurred after changing assignments on an inactive spell.
author Nenue
date Thu, 26 Jan 2017 20:25:04 -0500
parents 6623b7f2c1ca
children b9a53385462c
comparison
equal deleted inserted replaced
77:4ca4cc031e99 78:d4c100b0fd01
38 [10] = 6 38 [10] = 6
39 } 39 }
40 local petSpellCache,petSubtextCache 40 local petSpellCache,petSubtextCache
41 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544 41 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544
42 42
43 --kb.ChangedBindings = {}
44 --kb.ActionTypes = {}
45 43
46 local atype = kb.ActionTypes 44 local atype = kb.ActionTypes
47 45
48 --- Caps Lock 46 --- Caps Lock
49 atype['mount'] = function(id, name) 47 atype['mount'] = function(id, name)
63 return CLICK_KEYBINDER_MACRO, 'equipset_'..tostring(name), "/script UseEquipmentSet("..tostring(id)..")", SkeletonKeyMacro 61 return CLICK_KEYBINDER_MACRO, 'equipset_'..tostring(name), "/script UseEquipmentSet("..tostring(id)..")", SkeletonKeyMacro
64 end 62 end
65 63
66 atype['spell'] = function(id, name) 64 atype['spell'] = function(id, name)
67 local attributeName = name 65 local attributeName = name
68 if kb.ProfessionCache[id] then 66 local profInfo = kb.DynamicSpells.profession[id]
69 attributeName = "profession_".. kb.ProfessionCache[id].dynamicIndex .. '_' .. kb.ProfessionCache[id].dynamicSubIndex 67 if profInfo then
68 attributeName = "profession_".. profInfo.dynamicIndex .. '_' .. profInfo.dynamicSubIndex
70 end 69 end
71 return CLICK_KEYBINDER_KEY, attributeName, name, SkeletonKeyKey 70 return CLICK_KEYBINDER_KEY, attributeName, name, SkeletonKeyKey
72 end 71 end
73 72
74 atype['petaction'] = function(_, name) 73 atype['petaction'] = function(_, name)
176 end 175 end
177 176
178 return info 177 return info
179 end 178 end
180 179
181
182 kb.ApplyTalentBinding = function(talentInfo, cache)
183 talentInfo.assignedKeys = talentInfo.assignedKeys or {}
184 for i , key in pairs(talentInfo.assignedKeys) do
185 local command = CLICK_KEYBINDER_KEY.. talentInfo.actionName
186 SetBinding(key, command)
187 cprint(' **', i, '->', command)
188 tinsert(cache, talentInfo)
189 end
190 end
191 kb.CacheTalentBinding = function(talentInfo, cache)
192
193 local spellID = talentInfo.actionID
194 cache[spellID] = cache[spellID] or {}
195 cache[spellID] = talentInfo
196 cprint(spellID, unpack(kb.TalentBindings[spellID]))
197 end
198
199
200 do 180 do
201 local PROFILE_VERSION = 320 181 local PROFILE_VERSION = 320
202 local commandActions = {} 182 local commandActions = {}
203 local bindings = kb.bindings 183 local bindings = kb.bindings
204 local key, macro = SkeletonKeyKey, SkeletonKeyMacro 184 local key, macro = SkeletonKeyKey, SkeletonKeyMacro
391 end 371 end
392 end 372 end
393 373
394 kb.ApplyAllBindings =function () 374 kb.ApplyAllBindings =function ()
395 print('|cFFFFFF00ApplyAllBindings()') 375 print('|cFFFFFF00ApplyAllBindings()')
396 wipe(kb.TalentBindings)
397 wipe(kb.bindings) 376 wipe(kb.bindings)
398 --kb:print('Loading binding profile', kb.profileName) 377 --kb:print('Loading binding profile', kb.profileName)
399 378
400 -- reflect action key settings 379 -- reflect action key settings
401 if GetCVarBool("ActionButtonUseKeyDown") then 380 if GetCVarBool("ActionButtonUseKeyDown") then
417 396
418 end 397 end
419 end 398 end
420 399
421 400
422 kb.specInfo = {} 401 local AddSpellInfo = function(id, name, icon, dynamicType, dynamicID, dynamicIndex, dynamicSubIndex, isAvailable)
402 local spell = kb.DynamicSpells[id] or {}
403 spell.actionName = name
404 spell.dynamicType = dynamicType
405 spell.dynamicID = dynamicID
406 spell.iconPath = icon
407 spell.dynamicIndex = dynamicIndex
408 spell.dynamicSubIndex = dynamicSubIndex
409 spell.isAvailable = isAvailable
410 spell.actionType = 'spell'
411 spell.spellbookType = BOOKTYPE_SPELL
412 kb.DynamicSpells[name] = spell
413
414 local spellList = dynamicType and kb.DynamicSpells[dynamicType]
415 if spellList then
416 spellList[dynamicIndex] = spellList[dynamicIndex] or {}
417 spellList[dynamicIndex][dynamicSubIndex] = spell
418 end
419
420 cprint('|cFF00FFFFSpellInfo:|r', name, isAvailable, dynamicType or 'spell')
421 end
422
423 kb.UpdateSpecInfo = function() 423 kb.UpdateSpecInfo = function()
424 kb.specInfo.id = GetSpecialization() 424 kb.specInfo.id = GetSpecialization()
425 kb.specInfo.globalID, kb.specInfo.name, kb.specInfo.desc, kb.specInfo.texture = GetSpecializationInfo(kb.specInfo.id) 425 kb.specInfo.globalID, kb.specInfo.name, kb.specInfo.desc, kb.specInfo.texture = GetSpecializationInfo(kb.specInfo.id)
426 end 426 end
427 427
432 kb.SecureAttribute(SkeletonKeyMacro, "*type-macro_"..tostring(name), 'macro') 432 kb.SecureAttribute(SkeletonKeyMacro, "*type-macro_"..tostring(name), 'macro')
433 kb.SecureAttribute(SkeletonKeyMacro, "*macro-macro_"..tostring(name), index) 433 kb.SecureAttribute(SkeletonKeyMacro, "*macro-macro_"..tostring(name), index)
434 end 434 end
435 end 435 end
436 436
437
437 kb.UpdateTalentInfo = function() 438 kb.UpdateTalentInfo = function()
438 print('|cFFFFFF00kb.UpdateTalentInfo()|r') 439 print('|cFFFFFF00kb.UpdateSpells()|r')
440 cprint('|cFFFFFF00kb.UpdateSpells()|r')
439 if kb.talentsPushed then 441 if kb.talentsPushed then
440 return 442 return
441 end 443 end
442 for row =1, MAX_TALENT_TIERS do 444 for row =1, MAX_TALENT_TIERS do
443 for col = 1, NUM_TALENT_COLUMNS do 445 for col = 1, NUM_TALENT_COLUMNS do
444 local talentID, talentName, icon, selected, available, spellID = GetTalentInfo(row, col, 1) 446 local talentID, talentName, icon, selected, available, spellID = GetTalentInfo(row, col, 1)
445 local talentInfo = kb.TalentCache[spellID] or {} 447 local talentInfo = kb.DynamicSpells[spellID] or {}
446 if spellID then 448 if spellID then
447 talentInfo.actionType = 'spell' 449 AddSpellInfo(spellID, talentName, icon, 'talent', talentID, row, col, selected)
448 talentInfo.actionName = talentName 450 end
449 talentInfo.dynamicType = 'talent' 451
450 talentInfo.dynamicID = talentID
451 talentInfo.dynamicIndex = row
452 talentInfo.dynamicSubIndex = col
453 talentInfo.actionID = spellID
454 talentInfo.isAvailable = selected
455 kb.DynamicSpells[spellID] = talentInfo
456 kb.DynamicSpells[talentName] = talentInfo
457 end
458
459 --print('Talent ', row, col, spellID, talentName)
460 end 452 end
461 end 453 end
462 454
463 for row = 1, MAX_PVP_TALENT_TIERS do 455 for row = 1, MAX_PVP_TALENT_TIERS do
464 for col = 1, MAX_PVP_TALENT_COLUMNS do 456 for col = 1, MAX_PVP_TALENT_COLUMNS do
465 local id, name, icon, selected, available, spellID, unlocked = GetPvpTalentInfo(row, col, 1) 457 local talentID, talentName, icon, selected, available, spellID, unlocked = GetPvpTalentInfo(row, col, 1)
466 if spellID then 458 if spellID then
467 local talentInfo = kb.TalentCache[spellID] or {} 459 AddSpellInfo(spellID, talentName, icon, 'talent', talentID, row, col, selected)
468 talentInfo.actionType = 'spell' 460 end
469 talentInfo.actionName = name 461 end
470 talentInfo.dynamicType = 'talent' 462 end
471 talentInfo.dynamicID = id 463
472 talentInfo.dynamicIndex = row 464 local numTabs = GetNumSpellTabs()
473 talentInfo.dynamicSubIndex = col 465 for i = 1, numTabs do
474 talentInfo.actionID = spellID 466 local name, texture, offset, numSpells = GetSpellTabInfo(i)
475 talentInfo.isAvailable = selected 467 for spellLine = offset+1, offset+numSpells do
476 kb.DynamicSpells[spellID] = talentInfo 468 local skillType, spellID = GetSpellBookItemInfo(spellLine)
477 kb.DynamicSpells[name] = talentInfo 469 if skillType == 'SPELL' then
478 end 470 local name, _, icon = GetSpellInfo(spellID)
479 end 471 AddSpellInfo(spellID, name, icon, nil, nil, nil, nil, true)
480 end 472 elseif skillType == 'FLYOUT' then
473 local flyoutID = GetFlyoutID(spellLine)
474 local _, _, numSlots = GetFlyoutInfo(flyoutID)
475 if numSlots then
476 for slot = 1, numSlots do
477 local spellID, isKnown = GetFlyoutSlotInfo(flyoutID, slot)
478 local name, rank, icon = GetSpellInfo(spellID)
479 AddSpellInfo(spellID, name, icon, nil, nil, nil, nil, true)
480 end
481 end
482 end
483 end
484 end
485
486
481 487
482 kb.talentsPushed = true 488 kb.talentsPushed = true
483 kb.UpdateDynamicButtons('talent') 489 kb.UpdateDynamicButtons('talent')
484 end 490 end
491 kb.UpdateSpells = kb.UpdateTalentInfo
485 492
486 kb.UpdateProfessionInfo = function() 493 kb.UpdateProfessionInfo = function()
487 wipe(kb.ProfessionCache) 494 wipe(kb.ProfessionCache)
488 local profs = {GetProfessions() } 495 local profs = {GetProfessions() }
489 --print(GetProfessions()) 496 --print(GetProfessions())
498 end 505 end
499 local profNum = SECONDARY_PROFESSIONS[profID] or primaryNum 506 local profNum = SECONDARY_PROFESSIONS[profID] or primaryNum
500 cprint(i, profNum) 507 cprint(i, profNum)
501 508
502 509
503 kb.ProfessionCache[profNum] = kb.ProfessionCache[profNum] or {}
504
505 for j = 1, numSpells do 510 for j = 1, numSpells do
506 local spellName, _, icon, _, _, _, spellID = GetSpellInfo(spellOffset+j, BOOKTYPE_PROFESSION) 511 local spellName, _, icon, _, _, _, spellID = GetSpellInfo(spellOffset+j, BOOKTYPE_PROFESSION)
507 cprint(j, spellName) 512 cprint(j, spellName)
508 local profInfo = { 513 local profInfo = {
509 actionType = 'spell', 514 actionType = 'spell',
510 actionName = spellName, 515 actionName = spellName,
511 statusText = 'Profession ' .. i,
512 actionID = spellID, 516 actionID = spellID,
513 iconPath = icon, 517 iconPath = icon,
514 dynamicIndex = i, 518 dynamicIndex = i,
515 dynamicSubIndex = j, 519 dynamicSubIndex = j,
516 dynamicType = 'profession', 520 dynamicType = 'profession',
517 spellbookOffset = (spellOffset+j), 521 spellbookOffset = (spellOffset+j),
518 spellbookType = BOOKTYPE_PROFESSION, 522 spellbookType = BOOKTYPE_PROFESSION,
519 isAvailable = true, 523 isAvailable = true,
520 -- need to check if necessary 524 dynamicID = profID,
521 uniqueID = profID,
522 } 525 }
523 526
524 kb.SecureAttribute(SkeletonKeyKey, "*type-profession_"..i .. '_' ..j, "spell") 527 kb.SecureAttribute(SkeletonKeyKey, "*type-profession_"..i .. '_' ..j, "spell")
525 kb.SecureAttribute(SkeletonKeyKey, "*spell-profession_"..i .. '_' ..j, spellName) 528 kb.SecureAttribute(SkeletonKeyKey, "*spell-profession_"..i .. '_' ..j, spellName)
526 529
527 kb.ProfessionCache[spellName] = profInfo
528 kb.ProfessionCache[spellID] = profInfo
529 530
530 kb.DynamicSpells[spellName] = profInfo 531 kb.DynamicSpells[spellName] = profInfo
531 kb.DynamicSpells[spellID] = profInfo 532 kb.DynamicSpells[spellID] = profInfo
532 533
534 kb.DynamicSpells.profession[spellName] = profInfo
535 kb.DynamicSpells.profession[spellID] = profInfo
533 kb.DynamicSpells.profession[i] = kb.DynamicSpells.profession[i] or {} 536 kb.DynamicSpells.profession[i] = kb.DynamicSpells.profession[i] or {}
534 kb.DynamicSpells.profession[i][j] = profInfo 537 kb.DynamicSpells.profession[i][j] = profInfo
535 --print(' |cFF0088FF['..i..']|r|cFFFF44BB['..spellOffset+i..']|r', spellName, "profession_"..i .. '_' ..j) 538 --print(' |cFF0088FF['..i..']|r|cFFFF44BB['..spellOffset+i..']|r', spellName, "profession_"..i .. '_' ..j)
536 end 539 end
537 end 540 end
619 info.dynamicSubIndex = specialNum[subText] 622 info.dynamicSubIndex = specialNum[subText]
620 info.isAvailable = true 623 info.isAvailable = true
621 624
622 kb.PetCache.special[spellName] = info 625 kb.PetCache.special[spellName] = info
623 kb.PetCache.subtext[subText][specialNum[subText]] = info 626 kb.PetCache.subtext[subText][specialNum[subText]] = info
627
624 kb.DynamicSpells[spellName] = info 628 kb.DynamicSpells[spellName] = info
625 kb.DynamicSpells[spellID] = info 629 kb.DynamicSpells[spellID] = info
626 630
627 end 631 end
628 632