vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | local metro = AceLibrary("Metrognome-2.0") |
2 | local tablet = AceLibrary("Tablet-2.0") |
||
3 | |||
4 | CombatTimeFu = AceLibrary("AceAddon-2.0"):new("FuBarPlugin-2.0", "AceEvent-2.0") |
||
5 | |||
6 | function CombatTimeFu:OnInitialize() |
||
7 | self.combatStart = 0 |
||
8 | self.combatEnd = 0 |
||
9 | self.inCombat = false |
||
10 | |||
11 | self.name = "CombatTimeFu" |
||
12 | end |
||
13 | |||
14 | function CombatTimeFu:OnEnable() |
||
15 | self:RegisterEvent("PLAYER_REGEN_DISABLED", "OnPlayerRegenDisabled") |
||
16 | self:RegisterEvent("PLAYER_REGEN_ENABLED", "OnPlayerRegenEnabled") |
||
17 | self:RegisterEvent("PLAYER_ENTERING_WORLD", "OnPlayerRegenEnabled"); |
||
18 | end |
||
19 | |||
20 | function CombatTimeFu:OnDisable() |
||
21 | self:UnRegisterEvent("PLAYER_REGEN_DISABLED") |
||
22 | self:UnRegisterEvent("PLAYER_REGEN_ENABLED") |
||
23 | self:UnRegisterEvent("PLAYER_ENTERING_WORLD"); |
||
24 | end |
||
25 | |||
26 | -- Out of combat |
||
27 | function CombatTimeFu:OnPlayerRegenEnabled() |
||
28 | self.combatEnd = GetTime() |
||
29 | self.inCombat = false |
||
30 | self:Update() |
||
31 | |||
32 | -- Disable updating, don't need it while idle |
||
33 | metro:Unregister(self.name) |
||
34 | end |
||
35 | |||
36 | -- In combat |
||
37 | function CombatTimeFu:OnPlayerRegenDisabled() |
||
38 | self.combatStart = GetTime() |
||
39 | self.combatEnd = 0 |
||
40 | self.inCombat = true |
||
41 | |||
42 | -- Start updating while in combat |
||
43 | metro:Register(self.name, self.Update, 0.1, self) |
||
44 | metro:Start(self.name) |
||
45 | end |
||
46 | |||
47 | function CombatTimeFu:GetCurrentCombatTime() |
||
48 | local sec = 0 |
||
49 | if self.inCombat then |
||
50 | sec = GetTime()-self.combatStart |
||
51 | else |
||
52 | sec = self.combatEnd-self.combatStart |
||
53 | end |
||
54 | if(sec < 0) then |
||
55 | sec = 0 |
||
56 | end |
||
57 | local s = math.floor(sec) |
||
58 | local frac = (sec - s)*100 |
||
59 | local m = math.floor(sec/60) |
||
60 | sec = math.mod(sec, 60) |
||
61 | return string.format("%d:%02d:%02d", m, sec, frac) |
||
62 | end |
||
63 | |||
64 | function CombatTimeFu:OnTextUpdate() |
||
65 | if self.inCombat == true then |
||
66 | self:SetText("Combat: |cffff0000".. self:GetCurrentCombatTime() .."|r") |
||
67 | else |
||
68 | if self.combatEnd == 0 then |
||
69 | self:SetText("Combat: |cff00ff00No|r") |
||
70 | else |
||
71 | self:SetText("Combat: |cff00ff00".. self:GetCurrentCombatTime() .."|r") |
||
72 | end |
||
73 | end |
||
74 | end |
||
75 | |||
76 | function CombatTimeFu:OnTooltipUpdate() |
||
77 | local cat = tablet:AddCategory( |
||
78 | 'columns', 2, |
||
79 | 'child_textR', 1, |
||
80 | 'child_textG', 1, |
||
81 | 'child_textB', 0, |
||
82 | 'child_text2R', 1, |
||
83 | 'child_text2G', 1, |
||
84 | 'child_text2B', 1 |
||
85 | ) |
||
86 | cat:AddLine( |
||
87 | 'text', "Combat status", |
||
88 | 'text2', self.inCombat and "|cffff0000In combat|r" or "|cff00ff00Not in combat|r" |
||
89 | ) |
||
90 | cat:AddLine( |
||
91 | 'text', "Combat time", |
||
92 | 'text2', self.combatStart > 0 and self:GetCurrentCombatTime() or "None" |
||
93 | ) |
||
94 | end |