comparison KeyButton.lua @ 80:b9a53385462c

- Fixed Demon Hunter Vengeance bindings, along with other spells that are replaced by specialization variants. - Spells replaced by a specialization now display the replacing name along with the original name in their binding slot.
author Nick@Zahhak
date Tue, 21 Mar 2017 02:23:23 -0400
parents d4c100b0fd01
children 9a206b105ea5
comparison
equal deleted inserted replaced
79:ac9e48125660 80:b9a53385462c
20 local CURSOR_SPELLSLOT, CURSOR_BOOKTYPE, CURSOR_PETACTION, CURSOR_TEXTURE 20 local CURSOR_SPELLSLOT, CURSOR_BOOKTYPE, CURSOR_PETACTION, CURSOR_TEXTURE
21 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544 21 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544
22 local BORDER_UNASSIGNED = {0.6,0.6,0.6,1} 22 local BORDER_UNASSIGNED = {0.6,0.6,0.6,1}
23 local BORDER_ASSIGNED = {1,1,1,1} 23 local BORDER_ASSIGNED = {1,1,1,1}
24 local BORDER_DYNAMIC = {1,1,0,1} 24 local BORDER_DYNAMIC = {1,1,0,1}
25 local BORDER_PENDING = {1,0.5,0,1 } 25 local BORDER_PENDING = {1,0.5,0,1}
26 local BORDER_REPLACED = {0,1,.5,1}
26 local BUTTON_HEADERS = { 27 local BUTTON_HEADERS = {
27 ['spell'] = SPELLS, 28 ['spell'] = SPELLS,
28 ['macro'] = MACRO, 29 ['macro'] = MACRO,
29 ['petaction'] = PET, 30 ['petaction'] = PET,
30 ['mount'] = MOUNT, 31 ['mount'] = MOUNT,
142 end 143 end
143 end 144 end
144 elseif click == 'RightButton' then 145 elseif click == 'RightButton' then
145 self:ReleaseSlot() 146 self:ReleaseSlot()
146 else 147 else
147 kb.ProcessInput(strupper(click)) 148 SkeletonKey:ProcessInput(strupper(click))
148 end 149 end
149 SkeletonKey:Update() 150 SkeletonKey:Update()
150 end 151 end
151 152
152 function skb:OnDragStart() 153 function skb:OnDragStart()
172 173
173 local name, icon, _, macroName, macroText 174 local name, icon, _, macroName, macroText
174 local pickupID, pickupBook 175 local pickupID, pickupBook
175 176
176 if actionType == 'spell' then 177 if actionType == 'spell' then
177 actionID = subData 178 local realName = GetSpellInfo(subData)
178 name, _, icon = GetSpellInfo(actionID) 179 name, _, icon, _, _, _, actionID = GetSpellInfo(subData)
179
180 elseif actionType == 'macro' then 180 elseif actionType == 'macro' then
181 name, icon, macroText = GetMacroInfo(actionID) 181 name, icon, macroText = GetMacroInfo(actionID)
182 macroName = name 182 macroName = name
183 elseif actionType == 'petaction' then 183 elseif actionType == 'petaction' then
184 if CURSOR_SPELLSLOT and CURSOR_BOOKTYPE then 184 if CURSOR_SPELLSLOT and CURSOR_BOOKTYPE then
309 self:ReleaseSlot() 309 self:ReleaseSlot()
310 end 310 end
311 end 311 end
312 312
313 local borderType = BORDER_UNASSIGNED 313 local borderType = BORDER_UNASSIGNED
314 314 local displayName = self.actionName
315 local displayTexture = self.iconPath
316 local altName, altTexture
315 if self.command then 317 if self.command then
316 318
317 print('|cFFFF4400', self.actionName, #self.assignedKeys, table.concat(self.assignedKeys, ',')) 319 print('|cFFFF4400:', self.actionName, #self.assignedKeys, table.concat(self.assignedKeys, ','))
318 print(self.isAvailable) 320 print('|cFF00FF88:', self.isAvailable, self.actionID)
319 print(self.actionID) 321
320 self.bindingText= kb.BindingString(unpack(self.assignedKeys)) 322 self.bindingText= kb.BindingString(unpack(self.assignedKeys))
323
321 if not self.isAvailable then 324 if not self.isAvailable then
322 borderType = BORDER_DYNAMIC 325 borderType = BORDER_DYNAMIC
323 self.ignoreTexture:Show() 326 self.ignoreTexture:Show()
324 else 327 else
325 self.ignoreTexture:Hide() 328 self.ignoreTexture:Hide()
336 if self.actionType == 'macro' then 339 if self.actionType == 'macro' then
337 self.macro:Show() 340 self.macro:Show()
338 else 341 else
339 self.macro:Hide() 342 self.macro:Hide()
340 if self.actionType == 'spell' then 343 if self.actionType == 'spell' then
341 self.isAvailable = GetSpellInfo(self.actionName) and true or false 344 altName, _, altTexture = GetSpellInfo(self.actionName)
345 self.isAvailable = displayName and true or false
346 if altName and (altName ~= self.actionName) then
347 displayName = '|cFFFFFF00'..altName..'|r ('..self.actionName..')'
348 displayTexture = altTexture
349 borderType = BORDER_REPLACED
350 end
351
342 end 352 end
343 end 353 end
344 354
345 355
346 if self.dynamicType == 'profession' then 356 if self.dynamicType == 'profession' then
361 else 371 else
362 self.icon:SetAlpha(1) 372 self.icon:SetAlpha(1)
363 end 373 end
364 374
365 375
366 if self.actionType == 'spell' then
367 self.icon:SetTexture(GetSpellTexture(self.actionID))
368 end
369 print('|cFF00BBFFUpdateSlot|r:', '['..slot..'] =', self.command, self.bindingText, self.dynamicType, self.isAvailable, self.actionID) 376 print('|cFF00BBFFUpdateSlot|r:', '['..slot..'] =', self.command, self.bindingText, self.dynamicType, self.isAvailable, self.actionID)
370 else
371 if kb.saveTarget == self then
372 kb.DeactivateSlot(self)
373 end
374 377
375 end 378 end
376 379
377 if not self.isAvailable then 380 if not self.isAvailable then
378 self.bind:SetTextColor(.7,.7,.7,1) 381 self.bind:SetTextColor(.7,.7,.7,1)
392 self:SetAlpha(1) 395 self:SetAlpha(1)
393 end 396 end
394 397
395 --self.alert:SetShown(self.command and not self.isBound) 398 --self.alert:SetShown(self.command and not self.isBound)
396 399
397 self.icon:SetTexture(self.iconPath) 400 self.icon:SetTexture(displayTexture)
398 401
399 self.border:SetColorTexture(unpack(borderType)) 402 self.border:SetColorTexture(unpack(borderType))
400 self.header:SetText(self.statusText) 403 self.header:SetText(self.statusText)
401 self.bind:SetText(self.bindingText) 404 self.bind:SetText(self.bindingText)
402 self.details:SetText(self.actionName) 405 self.details:SetText(displayName)
403 end 406 end
404 407
405 --- Resets button command 408 --- Resets button command
406 function skb:ReleaseSlot () 409 function skb:ReleaseSlot ()
407 local slot = self:GetID() 410 local slot = self:GetID()
408 411
412 -- keep right click from deleting an assignment during bind mode
413 if kb.saveTarget == self then
414 self:GetParent():DeactivateSlot(self)
415 return
416 end
409 417
410 if kb.currentProfile.buttons[slot] then 418 if kb.currentProfile.buttons[slot] then
411 kb.currentProfile.buttons[slot] = nil 419 kb.currentProfile.buttons[slot] = nil
412 end 420 end
413 if self.command then 421 if self.command then
595 603
596 actionID = actionID or 0 604 actionID = actionID or 0
597 self:EnableKeyboard(true) 605 self:EnableKeyboard(true)
598 606
599 -- this is done to keep legacy key-values from breaking algorithm assumptions 607 -- this is done to keep legacy key-values from breaking algorithm assumptions
600 print(slotInfo.assignedKeys) 608 print('assigned', table.concat(slotInfo.assignedKeys,', '))
601 print(GetBindingKey(command)) 609
602 self.assignedKeys = slotInfo.assignedKeys or {GetBindingKey(command)} 610 if #slotInfo.assignedKeys == 0 then
611 print('updating assigned table to:', GetBindingKey(command))
612 slotInfo.assignedKeys = {GetBindingKey(command) }
613 end
614
615 self.assignedKeys = slotInfo.assignedKeys
603 616
604 local slotInfo = { 617 local slotInfo = {
605 command = command, 618 command = command,
606 actionName = name, 619 actionName = name,
607 iconPath = icon, 620 iconPath = icon,