comparison Degaine.lua @ 8:47f9e596ef5a

Use a specific function for drawing
author contrebasse
date Fri, 10 Dec 2010 16:37:00 +0100
parents f8198806d261
children 571dcc76d801
comparison
equal deleted inserted replaced
7:f8198806d261 8:47f9e596ef5a
25 local InCombatLockdown = InCombatLockdown 25 local InCombatLockdown = InCombatLockdown
26 local ToggleSheath = ToggleSheath 26 local ToggleSheath = ToggleSheath
27 27
28 28
29 --------------------------------------------------------------- 29 ---------------------------------------------------------------
30 -- Local vars
31 ---------------------------------------------------------------
32 -- const
33 local DegaineFrame = CreateFrame("Frame")
34 local playername = UnitName("player")
35
36 -- vars
37 local done = true
38 local t_left = -1
39 local delay = 2 -- seconds
40
41 ---------------------------------------------------------------
30 -- Some stuff... 42 -- Some stuff...
31 --------------------------------------------------------------- 43 ---------------------------------------------------------------
32 -- Bindings 44 -- Bindings
33 BINDING_HEADER_DEGAINE = "Dégainer automatiquement" 45 BINDING_HEADER_DEGAINE = "Dégainer automatiquement"
34 46
35 -- Print status 47 -- Print status
36 local printState = function() 48 local printState = function()
37 DEFAULT_CHAT_FRAME:AddMessage(Degaine_isAuto and "Dégainage automatique |cFF00FF00activé|r" or "Dégainage automatique |cFFFF0000désactivé|r"); 49 DEFAULT_CHAT_FRAME:AddMessage(Degaine_isAuto and "Dégainage automatique |cFF00FF00activé|r" or "Dégainage automatique |cFFFF0000désactivé|r");
38 end 50 end
39 51
40
41 ---------------------------------------------------------------
42 -- Local vars
43 ---------------------------------------------------------------
44 -- const
45 local DegaineFrame = CreateFrame("Frame")
46 local playername = UnitName("player")
47
48 -- vars
49 local done = true
50 local t_left = -1
51 52
52 --------------------------------------------------------------- 53 ---------------------------------------------------------------
53 -- Events config 54 -- Events config
54 --------------------------------------------------------------- 55 ---------------------------------------------------------------
55 -- Events to watch 56 -- Events to watch
74 CHAT_MSG_TEXT_EMOTE = true, 75 CHAT_MSG_TEXT_EMOTE = true,
75 } 76 }
76 77
77 78
78 --------------------------------------------------------------- 79 ---------------------------------------------------------------
79 -- Timer 80 -- Launch drawing weapons
80 --------------------------------------------------------------- 81 ---------------------------------------------------------------
81 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) 82 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs)
82 local Degaine_OnUpdate = function(self,t_elapsed) 83 local Degaine_OnUpdate = function(self,t_elapsed)
83 if not done then 84 if not done then
84 t_left = t_left - t_elapsed; 85 t_left = t_left - t_elapsed;
85 if t_left<=0 then 86 if t_left<=0 then
86 done = true; 87 done = true;
87 ToggleSheath(); 88 ToggleSheath();
89 DegaineFrame:SetScript("OnUpdate", nil);
88 end 90 end
89 end 91 end
90 end 92 end
91 93 local start = function()
94 if Degaine_isAuto and not InCombatLockdown() then
95 t_left = delay
96 done = false
97 DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate);
98 end
99 end
92 100
93 --------------------------------------------------------------- 101 ---------------------------------------------------------------
94 -- Activation functions 102 -- Activation functions
95 --------------------------------------------------------------- 103 ---------------------------------------------------------------
96 local activate = function() 104 local activate = function()
141 --@end-debug@ 149 --@end-debug@
142 150
143 if ((events[event] and (type(events[event])~="function" or events[event]())) 151 if ((events[event] and (type(events[event])~="function" or events[event]()))
144 or (events1player[event] and arg1=="player") 152 or (events1player[event] and arg1=="player")
145 or (events2playername[event] and arg2==playername)) then 153 or (events2playername[event] and arg2==playername)) then
146 t_left = 2 154 start()
147 done = false
148 155
149 elseif event == "PLAYER_REGEN_ENABLED" then 156 elseif event == "PLAYER_REGEN_ENABLED" then
150 desactivate() 157 desactivate()
151 elseif event == "PLAYER_REGEN_DISABLED" then 158 elseif event == "PLAYER_REGEN_DISABLED" then
152 activate() 159 activate()
153 160
154 elseif event == "ADDON_LOADED" and arg1==AddonName then 161 elseif event == "ADDON_LOADED" and arg1==AddonName then
155 if Degaine_isAuto==nil then 162 if Degaine_isAuto==nil then
156 Degaine_isAuto = true 163 Degaine_isAuto = true
157 end 164 end
158 if Degaine_isAuto then 165 if Degaine_isAuto then activate(); else desactivate(); end
159 activate()
160 else
161 desactivate()
162 end
163 printState() 166 printState()
164 167
165 -- Not needed anymore 168 -- Not needed anymore
166 DegaineFrame:UnregisterEvent("ADDON_LOADED") 169 DegaineFrame:UnregisterEvent("ADDON_LOADED")
167 end 170 end
168 end 171 end
169 -- Hook when standing up 172 -- Hook when standing up
170 -- (Didn't work, see http://forums.wowace.com/showthread.php?p=310547#post310547) 173 -- (Didn't work, see http://forums.wowace.com/showthread.php?p=310547#post310547)
171 hooksecurefunc("SitStandOrDescendStart",function() 174 hooksecurefunc("SitStandOrDescendStart",start);
172 if Degaine_isAuto and not InCombatLockdown() then
173 t_left = 2
174 done = false
175 end
176 end)
177 175
178 176
179 --------------------------------------------------------------- 177 ---------------------------------------------------------------
180 -- Commands 178 -- Commands
181 --------------------------------------------------------------- 179 ---------------------------------------------------------------