Mercurial > wow > skeletonkey
comparison SkeletonStats/Views/DamageDone.lua @ 4:a30285f8191e
Units:
make sure unit frames are SecureUnitButton derivatives
remove of unnecessary target/focus events
Stats:
resolve GUID after event handlers have fired
keep frame manipulation in uf.ui, get needed values from wrapper functions
author | Nenue |
---|---|
date | Tue, 21 Jun 2016 11:56:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3:07293831dd7b | 4:a30285f8191e |
---|---|
1 | |
2 local core = select(2, ...) | |
3 local prototypes = core.prototypes | |
4 local SOURCE_MASK = COMBATLOG_OBJECT_AFFILIATION_RAID+COMBATLOG_OBJECT_AFFILIATION_PARTY+COMBATLOG_OBJECT_AFFILIATION_MINE | |
5 | |
6 local dd = { | |
7 header = 'Damage Done', | |
8 } | |
9 dd.SPELL_DAMAGE = function(subEvent, ...) | |
10 local sourceGUID, sourceName, sourceFlags, _, destGUID, destName, destFlags, _, spellID, spellName, spellSchool, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = ... | |
11 | |
12 if not sourceName then | |
13 return false | |
14 end | |
15 | |
16 if bit.band(sourceFlags, SOURCE_MASK) == 0 then | |
17 --print('discarded non-raid damage event', sourceFlags, sourceName) | |
18 return false | |
19 end | |
20 | |
21 local view = core.current.view | |
22 view[sourceName] = view[sourceName] or {} | |
23 local p = view[sourceName] | |
24 | |
25 | |
26 p.guid = sourceGUID | |
27 p.last = amount | |
28 p.damage = (p.damage or 0) + amount | |
29 p.name = (sourceName or 'Unknown') | |
30 | |
31 p.child = p.child or {} | |
32 p.child[spellName] = p.child[spellName] or {} | |
33 p.child[spellName].hit = (p.child[spellName].hit or 0) + 1 | |
34 | |
35 -- true = store this event's actor | |
36 return true | |
37 end | |
38 | |
39 dd.SPELL_DAMAGE_PERIODIC = dd.SPELL_DAMAGE | |
40 dd.RANGE_DAMAGE = dd.SPELL_DAMAGE | |
41 | |
42 dd.SWING_DAMAGE = function(subEvent, ...) | |
43 local sourceGUID, sourceName, sourceFlags, _, destGUID, destName, destFlags, _, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = ... | |
44 local spellID, spellName, spellSchool = -1, 'Attack', 1 | |
45 dd.SPELL_DAMAGE(subEvent, sourceGUID, sourceName, sourceFlags, _, destGUID, destName, destFlags, _, spellID, spellName, spellSchool, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing) | |
46 end | |
47 | |
48 dd.init = function() | |
49 dd.maxDamage = 0 | |
50 end | |
51 | |
52 dd.sort = function(a, b) | |
53 return a.damage > b.damage | |
54 end | |
55 | |
56 dd.calculate = function(bar, data, actor) | |
57 if dd.maxDamage < data.damage then | |
58 dd.maxDamage = data.damage | |
59 end | |
60 | |
61 end | |
62 | |
63 dd.refresh = function(bar, data, actor) | |
64 local icon, textLeft, textRight | |
65 local r, g, b, a, percent = 1,1,1,1,1 | |
66 if actor.class and CLASS_ICON_TCOORDS[actor.classFilename] then | |
67 icon = { "Interface\\TargetingFrame\\UI-Classes-Circles" , CLASS_ICON_TCOORDS[actor.classFilename] } | |
68 end | |
69 textLeft = data.name | |
70 textRight = data.damage .. ' ('..data.last..')' | |
71 | |
72 | |
73 if actor.class and RAID_CLASS_COLORS[actor.classFilename] then | |
74 r = RAID_CLASS_COLORS[actor.classFilename].r | |
75 g = RAID_CLASS_COLORS[actor.classFilename].g | |
76 b = RAID_CLASS_COLORS[actor.classFilename].b | |
77 end | |
78 percent = (data.damage / dd.maxDamage) | |
79 | |
80 return icon, textLeft, textRight, r, g, b, a, percent | |
81 end | |
82 | |
83 prototypes.damageDone = dd |