Mercurial > wow > skeletonkey
view SkeletonKey/DynamicTypes.lua @ 42:c77b355a0366
Added tag v7.0.3-10-release for changeset 0877063fd03b
author | Nenue |
---|---|
date | Tue, 16 Aug 2016 11:34:46 -0400 |
parents | 34a2e8d93448 |
children |
line wrap: on
line source
-- KrakTool -- DynamicTypes.lua -- Created: 7/28/2016 3:28 PM -- %file-revision% -- Logic related to dynamic handlers local kb, print = LibStub('LibKraken').register(KeyBinder, 'PlayerInfo') local PET_SPECIAL_SUBTEXT = 'Special Ability' local SECONDARY_PROFESSIONS = { [5] = 3, [7] = 4, [9] = 5, [10] = 6 } kb.TalentCache = {} kb.ProfessionCache = {} kb.PetCache = {} kb.specInfo = {} kb.UpdateSpecInfo = function() kb.specInfo.id = GetSpecialization() kb.specInfo.globalID, kb.specInfo.name, kb.specInfo.desc, kb.specInfo.texture = GetSpecializationInfo(kb.specInfo.id) print('|cFF00FF00current spec:|r', kb.specInfo.id, 'of', GetNumSpecializations()) end kb.UpdateTalentInfo = function() if kb.talentsPushed then return end table.wipe(kb.TalentCache) for row =1, MAX_TALENT_TIERS do for col = 1, NUM_TALENT_COLUMNS do local talentID, talentName, icon, selected, available, spellID = GetTalentInfo(row, col, 1) local talentInfo = kb.TalentCache[spellID] or {} talentInfo.row = 1 talentInfo.col = col talentInfo.name = talentName talentInfo.talentID = talentID talentInfo.selected = selected talentInfo.available = available talentInfo.spellID = spellID kb.TalentCache[spellID] = talentInfo kb.TalentCache[talentName] = talentInfo print('Talent ', row, col, spellID, talentName) end end kb.talentsPushed = true kb.UpdateDynamicButtons('talent') end kb.UpdateProfessionInfo = function() table.wipe(kb.ProfessionCache) local profs = {GetProfessions() } local primaryNum = 0 for i, index in ipairs(profs) do local profName, texture, rank, maxRank, numSpells, spellOffset = GetProfessionInfo(index) print(i, index, profName, numSpells, spellOffset) if not SECONDARY_PROFESSIONS[index] then primaryNum = primaryNum + 1 end local profNum = SECONDARY_PROFESSIONS[index] or primaryNum kb.ProfessionCache[profNum] = kb.ProfessionCache[i] or {} for j = 1, numSpells do local spellName, _, icon, _, _, _, spellID = GetSpellInfo(spellOffset+j, BOOKTYPE_PROFESSION) local profInfo = { spellName = spellName, spellID = spellID, icon = icon, profOffset = i, profIndex = index, spellOffset = (spellOffset+j), spellNum = j } KeyBinderKey:SetAttribute("*type-profession_"..i .. '_' ..j, "spell") KeyBinderKey:SetAttribute("*spell-profession_"..i .. '_' ..j, spellName) kb.ProfessionCache[i .. '_' .. j] = profInfo kb.ProfessionCache[spellName] = profInfo kb.ProfessionCache[spellID] = profInfo print(' |cFF0088FF['..i..']|r|cFFFF44BB['..spellOffset+i..']|r', spellName, "profession_"..i .. '_' ..j) end end kb.UpdateDynamicButtons('profession') end kb.UpdatePetInfo = function() kb.PetCache.spell = kb.PetCache.spell or {} kb.PetCache.spellslot = kb.PetCache.spellslot or {} kb.PetCache.action = kb.PetCache.action or {} kb.PetCache.special = kb.PetCache.action or {} local hasPetSpells, petType = HasPetSpells() if PetHasSpellbook() then print('PET SPELLBOOK') local i = 1 local specialNum = 0 repeat local spellType, spellID = GetSpellBookItemInfo(i, BOOKTYPE_PET) local spellName, subText = GetSpellBookItemName(i, BOOKTYPE_PET) local isPassive = IsPassiveSpell(i, BOOKTYPE_PET) if not isPassive then if spellName then kb.PetCache.spellslot[spellName] = {i, spellName, subText} print('|cFF00FF88spellslot['..spellName..']|r', '=>', i, subText) if subText == PET_SPECIAL_SUBTEXT then specialNum = specialNum + 1 kb.PetCache.special[spellName] = {i, specialNum, spellID, subText } print('|cFF00FFFFspecial['..spellName..']|r', '=>', i, specialNum, spellID, subText) end if spellID then kb.PetCache.spell[i] = {spellID, spellName, subText} print('|cFF0088FFspell['..i..']|r', '=>', spellID, spellName, subText) end end end i = i + 1 until spellType == nil else print('NO PET SPELLBOOK') table.wipe(kb.PetCache.spell) table.wipe(kb.PetCache.spellslot) end if PetHasActionBar() then print('PET ACTION BAR') for i = 1, 10 do local name, subtext, texture, isToken, isActive = GetPetActionInfo(i) if name then kb.PetCache.action[i] = {name, subtext, texture, isToken, isActive } end print('|cFFFFFF00action['..i..']|r', name, subtext, texture) end else print('NO PET ACTION BAR') table.wipe(kb.PetCache.action) end kb.UpdateDynamicButtons('petaction') end kb.SystemBinds = {} kb.UpdateSystemBinds = function() table.wipe(kb.SystemBinds) local n = GetNumBindings() for i=1, n do local command, key1, key2 = GetBinding(i) if key1 then kb.SystemBinds[key1] = command end if key2 then kb.SystemBinds[key2] = command end end end kb.UpdateDynamicButtons = function(dynamicType) for i, button in ipairs(kb.buttons) do if button.isDynamic == dynamicType then kb.UpdateSlot(button, true) end end end