diff Toaster.lua @ 1:f601b8507480

AfterDark - Initial Import
author wobin
date Sun, 20 Dec 2009 21:45:17 +1100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Toaster.lua	Sun Dec 20 21:45:17 2009 +1100
@@ -0,0 +1,88 @@
+local AddonName, AfterDark = ...
+
+local TOASTERUP = "Interface\\AddOns\\AfterDark\\Images\\WingUp"
+local TOASTERCOASTER = "Interface\\AddOns\\AfterDark\\Images\\WingNeutral"
+local TOASTERDOWN = "Interface\\AddOns\\AfterDark\\Images\\WingDown"
+
+function AfterDark:ConstructToaster(frame)
+		frame.toasterup = frame:CreateTexture(nil, "BACKGROUND")
+		frame.toasterup:SetAllPoints(frame)
+		frame.toasterup:SetTexture(TOASTERUP)
+		
+		frame.toasterdown = frame:CreateTexture(nil, "BACKGROUND")
+		frame.toasterdown:SetAllPoints(frame)
+		frame.toasterdown:SetTexture(TOASTERDOWN)
+		frame.toasterdown:SetAlpha(0)
+
+		frame.toasterglide = frame:CreateTexture(nil, "BACKGROUND")
+		frame.toasterglide:SetAllPoints(frame)
+		frame.toasterglide:SetTexture(TOASTERCOASTER)
+		frame.toasterglide:SetAlpha(0)
+		
+		frame.fader = frame.toasterup:CreateAnimationGroup()
+		frame.fader.parent = frame.toasterup
+		frame.fader:SetLooping("BOUNCE")
+		
+		frame.toasterup.fade = frame.fader:CreateAnimation("Alpha")
+		frame.toasterup.fade:SetDuration(1)
+		frame.toasterup.fade:SetChange(-1)
+		frame.toasterup.fade:SetOrder(1)
+		
+		frame.crossfader = frame.toasterdown:CreateAnimationGroup()
+		frame.crossfader.parent = frame.toasterdown
+		frame.crossfader:SetLooping("BOUNCE")
+
+		frame.toasterdown.fade = frame.crossfader:CreateAnimation("Alpha")
+		frame.toasterdown.fade:SetDuration(1)
+		frame.toasterdown.fade:SetChange(1)
+		frame.toasterdown.fade:SetOrder(1)
+
+		frame.hashfader = frame.toasterglide:CreateAnimationGroup()
+		frame.hashfader.parent = frame.toasterglide
+		frame.hashfader:SetLooping("BOUNCE")
+
+		frame.toasterglide.fade = frame.hashfader:CreateAnimation("Alpha")
+		frame.toasterglide.fade:SetDuration(0.5)
+		frame.toasterglide.fade:SetChange(1)
+		frame.toasterglide.fade:SetOrder(1)
+
+		if math.random(0,5) > 4 then
+			local delay = math.random(30,AfterDark.db.profile.Speed * 10)
+
+			frame.tumbler = frame:CreateAnimationGroup()
+			frame.tumbler.parent = frame
+			frame.tumbler:SetLooping("NONE")
+
+			frame.spin = frame.tumbler:CreateAnimation("Rotation")
+			frame.spin:SetDegrees(360)
+			frame.spin:SetOrigin("CENTER", -20,-20)
+			frame.spin:SetStartDelay(delay/10)
+			frame.spin:SetDuration(1)
+			frame.spin:SetOrder(1)
+		end
+	
+		frame.IsToaster = true
+
+		frame.Respeed = function(self)
+			if frame.spin then
+				frame.spin:SetStartDelay(math.random(30, AfterDark.db.profile.Speed * 10)/10)
+			end
+		end
+	
+		frame.Start = function(self)
+			self.mover:Play()
+			self.fader:Play()
+			self.crossfader:Play()
+			self.hashfader:Play()
+			if self.tumbler then
+				self.tumbler:Play()
+			end
+			self:Show()
+		end
+
+		frame.Finish = function(self)
+			self:StopAnimating()
+			self:Hide()
+		end
+
+end