vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
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