view Toaster.lua @ 1:f601b8507480

AfterDark - Initial Import
author wobin
date Sun, 20 Dec 2009 21:45:17 +1100
parents
children
line wrap: on
line source
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