From 3646e9777fa29bd0534c533622dd8170d5d5ceb1 Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Sat, 15 Dec 2007 15:07:52 +0000 Subject: [PATCH] add GroupIcons module --- Artwork/Group1.tga | Bin 0 -> 779 bytes Artwork/Group2.tga | Bin 0 -> 814 bytes Artwork/Group3.tga | Bin 0 -> 834 bytes Artwork/Group4.tga | Bin 0 -> 812 bytes Artwork/Group5.tga | Bin 0 -> 814 bytes Artwork/Group6.tga | Bin 0 -> 856 bytes Artwork/Group7.tga | Bin 0 -> 804 bytes Artwork/Group8.tga | Bin 0 -> 864 bytes Artwork/Normal.tga | Bin 0 -> 820 bytes GroupIcons.lua | 131 +++++++++++++++++++++++++++++++++++++++++++++ Mapster.toc | 1 + 11 files changed, 132 insertions(+) create mode 100644 Artwork/Group1.tga create mode 100644 Artwork/Group2.tga create mode 100644 Artwork/Group3.tga create mode 100644 Artwork/Group4.tga create mode 100644 Artwork/Group5.tga create mode 100644 Artwork/Group6.tga create mode 100644 Artwork/Group7.tga create mode 100644 Artwork/Group8.tga create mode 100644 Artwork/Normal.tga create mode 100644 GroupIcons.lua diff --git a/Artwork/Group1.tga b/Artwork/Group1.tga new file mode 100644 index 0000000000000000000000000000000000000000..d2e0b7f5d509b1e85e58fc087c4c78285480a341 GIT binary patch literal 779 zcmb7?ze>bF5XRU1!9)lgIg;8YcKQaI>V$wOcq)=Ud5A59++l5Jmp*M?!#;i9z&6Ff zy1ykCJn_UEm}T~x@0*>ST_H}y)@EWRPQ5p_YZgoUT>F*wqSA{5DMn;&I4ivqw)V3) zj$hI={V2=wvyxJ7Y$6acFbtPE!eN^v$vc#`ZB^g*sv3qtIYc02V8EO-XhX`8?Yd5_ zl(u8f^OW!V#0r$`cxZ@({;*5Bq4*jmRaHe~gOP&+aVsdOL`OdbVB|EHc}xO*Z@J+f zrtT3D_U$MjNLnQSP)1Rtnx^@Wa%$3?De^p5OnSW9zD}oEm=RiaU8^7nlnSW@}nRcFU_pgG4hGTxV-Whwie_T9e%k1v<{P{Y&SzL%O DhY%YV literal 0 HcmV?d00001 diff --git a/Artwork/Group2.tga b/Artwork/Group2.tga new file mode 100644 index 0000000000000000000000000000000000000000..f7094148419ce4c534023bd77944e5a8ceef615d GIT binary patch literal 814 zcmb7CJ!=9%5M6Q}IinIeL2QIHrn|J-%qaxyhSDEqwv8lJ2P+I&hCs-XKII{Dyj?Xo#v3+iL8<=S5`NW&8Mfk^^`Pc zAeJ&@U6#w`*JiW%(d+d-1K;;kgC}|zAwzSiqcSvWwOUBZcs#~(xkRwpY>?rJ9!AI@ zbDzUpn{tdsQG_=LGCa|^0g$TnC zrfH(z?;}l94Cpi%C5vpP@D~VqyPxtcfu_ypbJ(^G&+`z+@z%>YdE_(cSF*mtTCG-S zG#V%r3Yg7i6vTh2`;v!bovznwh%lmr-Y!m=#X>vb#^3;flheOr$mg`_RCtN^dD?3{D4?* zFaAIf#0LnIIitH^VgebM%e^z_%GV4wgTa6%lL^_Y)rvISV1Wk+ zAcb=VB1;_M;PriM@tD@@ zHT8NuVjR_KHSqxhEZd3*fHolwL`I!mz>ZNiTS?b-p}_+Lkbnm?o{6;qxC59mpU=s0 z9HHj(d7;7!6tk>@R2wiAjYbJGAw8ST(sVlglN^@2&AV7EsNHT$-g><*)Za=DN44#A zxm*g(Fbtu6A5bviy)QyEtIE+=jx03Xx`slzTTL()hqP{CyO@; literal 0 HcmV?d00001 diff --git a/Artwork/Group4.tga b/Artwork/Group4.tga new file mode 100644 index 0000000000000000000000000000000000000000..8a50f0643af588493d4b563b87d9d8eb72a9f441 GIT binary patch literal 812 zcmb7?ziI+O5XP5y>XAe757-H5OqaaD#mayX63Cx3FQ5-#VR1#^G<~|fhfkrTyW(0A zUm&f8FwSqI$C(&N26ox`=KE%6cE^}gv$u+=m^1eccfxj}tFG%xS3lA%1nKXPy5)@3 zGdW%7jYi|8-EMyj27}Ki48u*169^F)mP;Pv;I>+=cPP{8RF=!7MC;1phzGCbL`H1zq#F=F~&2AWlh#xoe$ae`8d`ut>0R2_UtDl(%eNZmHDtc zld^uD&*$GOmCARk)rxvy7{)19M94rWOC95~EtN`NAfwSpX0w^}Hk*yOtcZ|-fK<%| zLTfq7k)2E?G9Hh`_kD3)SBk}=3vIjqI)gwj5678EPMM)y X?d|#TrS{r*YCPQEyxlc|ns0spmt`!D literal 0 HcmV?d00001 diff --git a/Artwork/Group6.tga b/Artwork/Group6.tga new file mode 100644 index 0000000000000000000000000000000000000000..108c0be5d554908a07a8809423747723b7454446 GIT binary patch literal 856 zcmbVLF>At55PrsJ+A363oD?c(w{{n?P8Nctg{CdVT^IjBhC=EO$kt!r>X0n{2A$(5 zIOhXc-`>oI{dK_>24!A z;k@%s#d%#83Wc|3vpMbcdY_JM+hH6YB0#_pF7hZH+iJD?0gC5&v{)?2*=#nX!$SlJ z7+{L#9747%(gB^#X0%)`$uvze41?0?G+CBKtJR8tfwMh23*jz712y3YSf|q=#%MGe z(Re%-zuj&N1`fE4H-0AQA~WiQ<@0$Ft=DS`!%+NWGAS51;IbH9+gHHdu|wPz7K_D1 z6a)cHCKK^XrIKLafXiC@Xo6HKMVh8jtyZH%B0=SHnS9?rn7}|5w#XIg^}3vj#tk5g z|1SLWTcskc8xDse>-YPFLg({2IU+ySxX9Ci>AEfzi$&6Pohp?ILIh;#VYh9}^16xS| literal 0 HcmV?d00001 diff --git a/Artwork/Group7.tga b/Artwork/Group7.tga new file mode 100644 index 0000000000000000000000000000000000000000..3409516912c083ee28d9927eaadea9e7fd756c68 GIT binary patch literal 804 zcmbV~v1&q542BQqSgM^w!TB!UtzDd3CksMpp{}h2E}5w0h=AB8E2#zIIS>N_7Q&9$ zU=VpSk5F#u&w3CNblW2arI> z%8hPvgKk|2)A`09uxOzjn8%x$Z~os?>R4?kr*i7l_<;D1h*eGVGsn%3~tcC0)$`@M`;jU*Zl-!Fc?sprW7s~3(|0d1{NTI z6rU3~GFb=*>vTG$@pw#)MuT)+C&MtP*=$l2MFbl#>(mw;bsS8Ws0k@Rj^hyPD2(Hn zfS_u%Di$Dsga@9DwWj;lO$P<(6()HKQzLf6~e34YEd?ul{I3W!{Ko63jh6h{`^e09{^7W```Tl d&{%?z@4}MMvQM8kut|~P zV4QEc3tZ=^KkPE|&;Rdkb|=Q1n*$bRVJ^;U(l@4=j-`%U9i`LB!jyYv={2vKnYoV3 zBuQSfEc>jg>dRSccXJ{bDk!{`bxc5-rs)TgrfH<_dvW79N 0 then + GroupIcons:ScheduleRepeatingTimer("Update", 0.5) + else + GroupIcons:Update() + end + end) + + FixWorldMapUnits(true) +end + +function GroupIcons:OnDisable() + FixWorldMapUnits(false) + FixBattlefieldUnits(false) +end + +function FixUnit(unit, state, isNormal) + local frame = _G[unit] + local icon = _G[unit.."Icon"] + if state then + frame:SetScript("OnUpdate", nil) + if isNormal then + icon:SetTexture(path .. "Normal") + end + else + frame:SetScript("OnUpdate", MapUnit_OnUpdate) + icon:SetVertexColor(1, 1, 1) + icon:SetTexture("Interface\\WorldMap\\WorldMapPartyIcon") + end +end + +function FixWorldMapUnits(state) + for i = 1, 4 do + FixUnit(fmt("WorldMapParty%d", i), state, true) + end + for i = 1,40 do + FixUnit(fmt("WorldMapRaid%d", i), state) + end +end + +function FixBattlefieldUnits(state) + if BattlefieldMinimap then + for i = 1, 40 do + FixUnit(fmt("BattlefieldMinimapRaid%d", i), state) + end + end +end + +function UpdateUnitIcon(tex, unit, flash, isRaid) + local _, fileName = UnitClass(unit) + if isRaid then + local _, _, subgroup = GetRaidRosterInfo(strsub(unit, 5)+0) + if not subgroup or not fileName then return end + tex:SetTexture(fmt("%sGroup%d", path, subgroup)) + end + local t = RAID_CLASS_COLORS[fileName] + if flash then + if UnitAffectingCombat(unit) then + -- red flash for units in combat + tex:SetVertexColor(0.8, 0, 0) + elseif UnitIsDeadOrGhost(unit) then + -- dark grey flash for dead units + tex:SetVertexColor(0.2, 0.2, 0.2) + elseif MapUnit_IsInactive(unit) then + -- flash in that blizzard color for inactive units (added in 2.3 iirc) + tex:SetVertexColor(0.5, 0.2, 0) + end + elseif t then -- no flash, set class color + tex:SetVertexColor(t.r, t.g, t.b) + else --fallback grey, you never know what happens + tex:SetVertexColor(0.8, 0.8, 0.8) + end +end + +function GroupIcons:Update() + local worldMapShown = WorldMapFrame:IsShown() + local battlefieldMinimapShown = BattlefieldMinimap and BattlefieldMinimap:IsVisible() + if not worldMapShown and not battlefieldMinimapShown then + self:CancelAllTimers() + return + end + + local flash = GetTime() % 1 < 0.5 + + local numRaid = GetNumRaidMembers() + if numRaid > 0 then + for i = 1, numRaid do + local wmUnit = _G[fmt("WorldMapRaid%d", i)].unit + local bmUnit = battlefieldMinimapShown and _G[fmt("BattlefieldMinimapRaid%d", i)].unit + if not (wmUnit or bmUnit) then break end + -- update the world map units + if worldMapShown and wmUnit then + local tex = _G[fmt("WorldMapRaid%dIcon", i)] + UpdateUnitIcon(tex, wmUnit, flash, true) + end + -- update the battlefield minimap units + if bmUnit then + local tex = _G[fmt("BattlefieldMinimapRaid%dIcon", i)] + UpdateUnitIcon(tex, bmUnit, flash, true) + end + end + else + for i = 1, GetNumPartyMembers() do + local tex = _G[fmt("WorldMapParty%dIcon", i)] + UpdateUnitIcon(tex, fmt("party%d", i), flash) + end + end +end diff --git a/Mapster.toc b/Mapster.toc index 8cc3e67..11ea036 100644 --- a/Mapster.toc +++ b/Mapster.toc @@ -9,3 +9,4 @@ Mapster.lua Coords.lua +GroupIcons.lua