Mercurial > wow > afterdark
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