changeset 28:a91e7552c682 v1.0beta5

Use a whitelis instead of a blacklist. Used OnUpdate for mounts, didn't work well with UNIT_AURA
author contrebasse
date Fri, 10 Dec 2010 22:40:32 +0100
parents 239bedf57140
children f14fad7938a4
files Degaine.lua
diffstat 1 files changed, 50 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/Degaine.lua	Fri Dec 10 21:43:07 2010 +0100
+++ b/Degaine.lua	Fri Dec 10 22:40:32 2010 +0100
@@ -9,7 +9,7 @@
 --     (it's not possible to know if you were sitting or standing before)
 
 --@debug@
-local debug = true
+local debug = false
 --@end-debug@
 
 
@@ -63,6 +63,25 @@
 
 
 ---------------------------------------------------------------
+-- Launch drawing weapons
+---------------------------------------------------------------
+-- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs)
+local Degaine_OnUpdate = function(self,t_elapsed)
+	t_left = t_left - t_elapsed;
+	if t_left<=0 then
+		ToggleSheath()
+		DegaineFrame:SetScript("OnUpdate", nil)
+	end
+end
+local start = function()
+	if Degaine_isAuto and not InCombatLockdown() then
+		t_left = delay
+		DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate)
+	end
+end
+
+
+---------------------------------------------------------------
 -- Events config
 ---------------------------------------------------------------
 -- Events to watch
@@ -94,17 +113,12 @@
 	UNIT_SPELLCAST_FAILED = true,
 	UNIT_SPELLCAST_INTERRUPTED = true,
 	UNIT_SPELLCAST_SUCCEEDED = true,
-	UNIT_AURA = function()
-		if IsMounted() then
-			wasMounted = true
-		else
-			if wasMounted then
-				wasMounted = false
-				start()
-			end
-		end
-	end
 }
+local SpellWhiteList = {
+	[8690] = true, -- Heartstone
+	[818] = true, -- Basic Campfire
+}
+--[[
 local SpellBlackList = { -- spells that don't stealth weapons (works with events1player)
 	[1784] = true,  -- Stealth (Rogue)
 	[58984] = true, -- Shadowmeld (Nightelf stealth)
@@ -124,6 +138,7 @@
 	[53428] = true  -- Runeforge
 	-- Archaeology ?
 }
+--]]
 local events2playername = { -- the 2nd arg is playername
 	CHAT_MSG_SAY = true,
 	CHAT_MSG_YELL = true,
@@ -138,7 +153,7 @@
 -- I guess that's because a specific /cancelaura or alike is done
 -- hooksecurefunc("Dismount",start);
 
---[[ With OnUpdate
+-- With OnUpdate
 local handleMountsFrame = CreateFrame("frame")
 local handleMountsOnUpdate
 do
@@ -155,26 +170,6 @@
 		end
 	end
 end
---]]
-
-
----------------------------------------------------------------
--- Launch drawing weapons
----------------------------------------------------------------
--- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs)
-local Degaine_OnUpdate = function(self,t_elapsed)
-	t_left = t_left - t_elapsed;
-	if t_left<=0 then
-		ToggleSheath()
-		DegaineFrame:SetScript("OnUpdate", nil)
-	end
-end
-local start = function()
-	if Degaine_isAuto and not InCombatLockdown() then
-		t_left = delay
-		DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate)
-	end
-end
 
 
 ---------------------------------------------------------------
@@ -192,18 +187,20 @@
 		for k,_ in pairs(events) do DegaineFrame:RegisterEvent(k) end
 		for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end
 		for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end
+		--DegaineFrame:RegisterEvent("UNIT_AURA")
+		handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate)
 	--@end-debug@
 	end
 	--@end-debug@
-	handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate)
 end
 local desactivate = function()
 	DegaineFrame:SetScript("OnUpdate", nil)
-	handleMountsFrame:SetScript("OnUpdate",nil)
 	t_left = -1
 	for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end
 	for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end
 	for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end
+	--DegaineFrame:UnregisterEvent("UNIT_AURA")
+	handleMountsFrame:SetScript("OnUpdate",nil)
 end
 Degaine_ToggleAuto = function()
 	if Degaine_isAuto then
@@ -230,13 +227,31 @@
 	--end
 	--@end-debug@
 
+	--[[ IsMounted() renvoie toujours false ici, on doit passer par OnUpdate
+	if event=="UNIT_AURA" then
+		if arg1=="player" then
+			DEFAULT_CHAT_FRAME:AddMessage("player")
+			if IsMounted() then
+				DEFAULT_CHAT_FRAME:AddMessage("ismounted")
+				wasMounted = true
+			else
+				DEFAULT_CHAT_FRAME:AddMessage("notmounted")
+				if wasMounted then
+					DEFAULT_CHAT_FRAME:AddMessage("wasmounted : start")
+					wasMounted = false
+					start()
+				end
+			end
+		end
+	else
+	--]]
 	if events[event] then
 		if type(events[event])~="function" or events[event]() then
 			start()
 		end
 	elseif events1player[event] then
 		if arg1=="player" then
-			if arg5==nil or not SpellBlackList[arg5] then -- arg5 is SpellID
+			if arg5==nil or SpellWhiteList[arg5] then -- arg5 is SpellID
 				start()
 			end
 		end