List of commits:
Subject Hash Author Date (UTC)
feat(choir): Render group role indicator for units 5f3a7c24d3f79035b8faa156355a2d017688134e Vladyslav Bondarenko 2021-11-18 22:02:27
feat(choir): Adjust raid group frame position f99a54133a1761034baca93bfa8814c614191818 Vladyslav Bondarenko 2021-11-18 00:35:35
feat(choir): Add debuff buttons for raid fe66339420a9eb5e4823cc4fe45e0d97b2983073 Vladyslav Bondarenko 2021-11-17 00:55:54
feat(choir): Add texture to health bars ddaeb29d7ecfd95a98bcc85b3f4f7676c7ccd4d7 Vladyslav Bondarenko 2021-11-14 21:40:26
fix(choir)!: Obscure critical error 0f203b4d69f57240e97c66f1ab4510c6ac3e9276 Vladyslav Bondarenko 2021-11-11 12:52:02
feat(choir): Toggle button visibility given roster d193e7b5eb38cb3ac69d74eec1f96e00d90b6098 Vladyslav Bondarenko 2021-11-10 23:46:24
feat(choir)!: Add permanent raid frame 1839c35af4212c09038e972547d6b5893a9ce219 Vladyslav Bondarenko 2021-11-10 16:04:25
feat(choir)!: Employ Clearcasting subset feat 733c81538c3c965f07993fd7ddc482e724121b75 Vladyslav Bondarenko 2021-11-04 22:40:48
fix(choir): Improve shortcut binding keys eb636de6e3f7bada9f0064ffe4db1db3f6433f6c Vladyslav Bondarenko 2021-10-31 18:55:10
fix(choir): Improve choirBindingKey attribute handling 6c5c2214cc1809e5e5e59cd3672da3cca3f2701f Vladyslav Bondarenko 2021-10-31 13:23:24
feat(choir)!: Add spell shortcut prototype d34f22a6983ffc41122acb40d22e3cb29c208a3c Vladyslav Bondarenko 2021-10-31 12:39:39
feat(choir)!: Add spell effects on unit d581df9fce342709267a3221dead4d00b9d14319 Vladyslav Bondarenko 2021-10-31 10:49:19
feat(choir)!: Close spoiler by pressing Esc 22d7370011ac45d25a410a3f569183d0cc9fb232 Vladyslav Bondarenko 2021-10-29 16:10:08
feat(choir)!: Range indicator 931a0510b562986ec76dc22f329f4af4ed723cdf Vladyslav Bondarenko 2021-10-29 10:40:46
fix(choir)!: Health bar in combat a6622578dd5a1b4e4babf699a4cf1e4eb6bb70d6 Vladyslav Bondarenko 2021-10-28 07:42:57
feat(choir)!: Decorate unit buttons 4dc5ed44a9519b275f4256cfe4281110b7a94c9a Vladyslav Bondarenko 2021-10-25 21:20:56
feat(choir)!: Copy action bar binding 70ce056ffda7f12d913ce9a42b128ea257bdd0dc Vladyslav Bondarenko 2021-10-23 23:34:56
feat!: Initial commit 45c4e781e5ff0a69f8b0bea3a869e2384c7ca454 Vladyslav Bondarenko 2021-10-23 06:03:14
Commit 5f3a7c24d3f79035b8faa156355a2d017688134e - feat(choir): Render group role indicator for units
Author: Vladyslav Bondarenko
Author date (UTC): 2021-11-18 22:02
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2021-11-18 22:02
Parent(s): f5d21e807090fe4314244c98befcd23a258c0603
Signer:
Signing key:
Signing status: N
Tree: 9e38c7c558a0f589b57e9e76c4a2a1b773ab9b8a
File Lines added Lines deleted
choir.lua 67 25
File choir.lua changed (mode: 100644) (index a38c727..cf4f76b)
... ... local function createBackground(ownerFrame)
142 142 return background return background
143 143 end end
144 144
145 local function createUnitButtonRoleWidget(unitButton)
146 assert (unitButton ~= nil)
147
148 local widgetSize = 12
149 local roleWidget = unitButton:CreateTexture(unitButton:GetName() .. 'RoleWidget', 'OVERLAY')
150 roleWidget:SetPoint('TOPRIGHT', unitButton, 'TOPRIGHT', 0, 0)
151 roleWidget:SetPoint('BOTTOMLEFT', unitButton, 'TOPRIGHT', -widgetSize, -widgetSize)
152 roleWidget:SetTexture("Interface\\LFGFrame\\UI-LFG-ICON-PORTRAITROLES.blp")
153
154 return roleWidget
155 end
156
145 157 local function getUnitHealthDeficit(unitDesignation) local function getUnitHealthDeficit(unitDesignation)
146 158 assert (unitDesignation ~= nil) assert (unitDesignation ~= nil)
147 159
 
... ... local function createUnitButtonBar(unitButton)
311 323 return bar return bar
312 324 end end
313 325
326 local function getRoleTexCoord(isTank, isHealer, isDamager)
327 local size = 64
328 if isTank then
329 return 0 / size, 19 / size, 22 / size, 41 / size
330 elseif isHealer then
331 return 20 / size, 39 / size, 1 / size, 20 / size
332 elseif isDamager then
333 return 20 / size, 39 / size, 22 / size, 41 / size
334 else
335 error('invalid argument')
336 end
337 end
338
339 local function updateUnitButtonRoleWidget(roleWidget, unitDesignation)
340 assert (roleWidget ~= nil)
341 assert (unitDesignation ~= nil)
342
343 local isTank, isHealer, isDamager = UnitGroupRolesAssigned(unitDesignation)
344 if isTank or isHealer or isDamager then
345 roleWidget:Show()
346 roleWidget:SetTexCoord(getRoleTexCoord(isTank, isHealer, isDamager))
347 else
348 roleWidget:Hide()
349 end
350 end
351
314 352 local function unitButtonEventProcessor(unitButton) local function unitButtonEventProcessor(unitButton)
315 353 assert (unitButton ~= nil) assert (unitButton ~= nil)
316 354
 
... ... local function unitButtonEventProcessor(unitButton)
328 366
329 367 updateUnitButtonBarOverlay(bar, unitDesignation) updateUnitButtonBarOverlay(bar, unitDesignation)
330 368 updateUnitButtonBarText(bar, unitDesignation) updateUnitButtonBarText(bar, unitDesignation)
369 updateUnitButtonRoleWidget(unitButton.roleWidget, unitDesignation)
331 370 end end
332 371
333 372 local function createInheritanceHandler(unitButton) local function createInheritanceHandler(unitButton)
 
... ... local function createUnitButton(parentFrame, frameName, unit, width, height)
416 455 local bar = createUnitButtonBar(u) local bar = createUnitButtonBar(u)
417 456 u.bar = bar u.bar = bar
418 457
458 local roleWidget = createUnitButtonRoleWidget(u)
459 u.roleWidget = roleWidget
460
419 461 createUnitButtonExistanceHandler(u) createUnitButtonExistanceHandler(u)
420 462
421 463 u:SetAttribute('type', 'target') u:SetAttribute('type', 'target')
 
... ... local function createUnitButton(parentFrame, frameName, unit, width, height)
428 470 u:RegisterEvent('RAID_ROSTER_UPDATE') u:RegisterEvent('RAID_ROSTER_UPDATE')
429 471 u:RegisterEvent('UPDATE_BATTLEFIELD_SCORE') u:RegisterEvent('UPDATE_BATTLEFIELD_SCORE')
430 472 u:RegisterEvent('ADDON_LOADED') u:RegisterEvent('ADDON_LOADED')
473 u:RegisterEvent('LFG_ROLE_UPDATE')
431 474
432 475 assert (u ~= nil) assert (u ~= nil)
433 476 return u return u
 
... ... end
651 694 local function raidGroupEventProcessor(groupFrame) local function raidGroupEventProcessor(groupFrame)
652 695 assert (groupFrame ~= nil) assert (groupFrame ~= nil)
653 696
654 local u0, u1, u2, u3, u4 = groupFrame:GetChildren()
655 assert (u0 ~= nil)
656 assert (u1 ~= nil)
657 assert (u2 ~= nil)
658 assert (u3 ~= nil)
659 assert (u4 ~= nil)
697 local t = {groupFrame:GetChildren()}
698
699 local groupExists = false
660 700
661 local groupExists = UnitExists(u0:GetAttribute('unit') or 'none') or
662 UnitExists(u1:GetAttribute('unit') or 'none') or
663 UnitExists(u2:GetAttribute('unit') or 'none') or
664 UnitExists(u3:GetAttribute('unit') or 'none') or
665 UnitExists(u4:GetAttribute('unit') or 'none')
701 local i = 0
702 while (i < #t) do
703 i = i + 1
704 local u = t[i]
705 if UnitExists(u:GetAttribute('unit') or 'none') then
706 groupExists = true
707 end
708 end
666 709
667 710 if groupExists then if groupExists then
668 711 groupFrame:Show() groupFrame:Show()
 
... ... end
674 717 local function partyFrameEventProcessor(playerPartyFrame) local function partyFrameEventProcessor(playerPartyFrame)
675 718 assert (playerPartyFrame ~= nil) assert (playerPartyFrame ~= nil)
676 719
677 local isRaid = UnitPlayerOrPetInRaid('player')
720 local t = {playerPartyFrame:GetChildren()}
721 local isRaid = 1 == UnitPlayerOrPetInRaid('player')
678 722 if isRaid then if isRaid then
679 local p0, p1, p2, p3, p4 = playerPartyFrame:GetChildren()
680 UnregisterUnitWatch(p0)
681 UnregisterUnitWatch(p1)
682 UnregisterUnitWatch(p2)
683 UnregisterUnitWatch(p3)
684 UnregisterUnitWatch(p4)
685 723 playerPartyFrame:Hide() playerPartyFrame:Hide()
686 elseif not playerPartyFrame:IsShown() then
687 local p0, p1, p2, p3, p4 = playerPartyFrame:GetChildren()
688 RegisterUnitWatch(p0, true)
689 RegisterUnitWatch(p1, true)
690 RegisterUnitWatch(p2, true)
691 RegisterUnitWatch(p3, true)
692 RegisterUnitWatch(p4, true)
724 else
693 725 playerPartyFrame:Show() playerPartyFrame:Show()
694 726 end end
727 local i = 0
728 while (i < #t) do
729 i = i + 1
730 local p = t[i]
731 if isRaid then
732 UnregisterUnitWatch(p)
733 else
734 RegisterUnitWatch(p, true)
735 end
736 end
695 737 end end
696 738
697 739 local function createRaidGroupLabel(groupFrame, groupNumber) local function createRaidGroupLabel(groupFrame, groupNumber)
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/choir

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/choir

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/choir

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main