mirror of
https://github.com/brues-code/pfUI.git
synced 2026-11-08 03:18:58 +00:00
Add a Valentine's Day AFK scene
Hearts drawn from a turned square and two tinted minimap-mask discs float up the screen and sway, a rosy glow lines the edges, and the goblin Cupid hovers by the side.
This commit is contained in:
@@ -58,6 +58,99 @@ pfUI:RegisterModule("easteregg", function ()
|
|||||||
return scene
|
return scene
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- happy valentine's day
|
||||||
|
if today == "0214" then
|
||||||
|
local valentine = CreateScene("pfValentine", "happy valentine's day!")
|
||||||
|
valentine.text:SetTextColor(1, .4, .6)
|
||||||
|
|
||||||
|
-- a rosy glow around the screen edges
|
||||||
|
local glow = CreateFrame("Frame", nil, valentine)
|
||||||
|
glow:SetAllPoints()
|
||||||
|
glow:SetBackdrop({ edgeFile = pfUI.media["img:glow"], edgeSize = 32 })
|
||||||
|
glow:SetBackdropBorderColor(1, .3, .5, 1)
|
||||||
|
|
||||||
|
-- A heart is a square turned onto its corner with a round lobe on each
|
||||||
|
-- upper edge. The client's minimap mask is a plain white disc, so it
|
||||||
|
-- tints into a lobe without a texture of our own. Smaller hearts are
|
||||||
|
-- farther away, so they are darker and rise slower.
|
||||||
|
local hearts = {}
|
||||||
|
for i = 1, 40 do
|
||||||
|
local width = math.random(10, 28)
|
||||||
|
local side = width / 1.7
|
||||||
|
local shade = .4 + width / 28 * .6
|
||||||
|
local r, g, b = shade, shade * math.random() * .4, shade * (.2 + math.random() * .3)
|
||||||
|
|
||||||
|
local heart = CreateFrame("Frame", nil, valentine)
|
||||||
|
heart:SetSize(width, width)
|
||||||
|
heart.width = width
|
||||||
|
|
||||||
|
local tip = heart:CreateTexture(nil, "ARTWORK")
|
||||||
|
tip:SetColorTexture(1, 1, 1)
|
||||||
|
tip:SetVertexColor(r, g, b)
|
||||||
|
tip:SetSize(side, side)
|
||||||
|
tip:SetPoint("CENTER", 0, -side * .07)
|
||||||
|
tip:SetRotation(math.pi / 4)
|
||||||
|
|
||||||
|
for _, x in ipairs({ -1, 1 }) do
|
||||||
|
local lobe = heart:CreateTexture(nil, "ARTWORK")
|
||||||
|
lobe:SetTexture("Textures\\MinimapMask")
|
||||||
|
lobe:SetVertexColor(r, g, b)
|
||||||
|
lobe:SetSize(side, side)
|
||||||
|
lobe:SetPoint("CENTER", x * side * .354, side * .28)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- like the snow, but up from below the screen
|
||||||
|
heart.float = heart:CreateAnimationGroup()
|
||||||
|
heart.float:SetLooping("REPEAT")
|
||||||
|
heart.float:SetIgnoreFramerateThrottle(true)
|
||||||
|
heart.path = heart.float:CreateAnimation("Path")
|
||||||
|
heart.path:SetCurve("SMOOTH")
|
||||||
|
heart.points = {}
|
||||||
|
for point = 1, 6 do
|
||||||
|
heart.points[point] = heart.path:CreateControlPoint()
|
||||||
|
end
|
||||||
|
hearts[i] = heart
|
||||||
|
end
|
||||||
|
|
||||||
|
local function LetThemFloat()
|
||||||
|
local width, height = valentine:GetWidth(), valentine:GetHeight()
|
||||||
|
for _, heart in ipairs(hearts) do
|
||||||
|
local rise = height + heart.width
|
||||||
|
local duration = rise / (20 + heart.width * 2)
|
||||||
|
local sway = math.random(-30, 30)
|
||||||
|
|
||||||
|
heart:ClearAllPoints()
|
||||||
|
heart:SetPoint("TOP", valentine, "BOTTOMLEFT", math.random() * width, 0)
|
||||||
|
|
||||||
|
heart.path:SetDuration(duration)
|
||||||
|
heart.path:SetStartDelay(math.random() * duration)
|
||||||
|
for point, control in ipairs(heart.points) do
|
||||||
|
control:SetOffset(point % 2 == 1 and sway or -sway, rise * point / 6)
|
||||||
|
end
|
||||||
|
heart.float:Play()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Cupid hovers by the side, turned towards the middle
|
||||||
|
local cupid = CreateFrame("PlayerModel", nil, valentine)
|
||||||
|
cupid:SetSize(260, 260)
|
||||||
|
cupid:SetPoint("BOTTOMRIGHT", -60, 60)
|
||||||
|
cupid:SetScript("OnShow", function()
|
||||||
|
this:SetDisplayInfo(15990)
|
||||||
|
this:SetFacing(-.5)
|
||||||
|
end)
|
||||||
|
cupid:Hide()
|
||||||
|
|
||||||
|
valentine.dusk:SetScript("OnFinished", function()
|
||||||
|
LetThemFloat()
|
||||||
|
cupid:Show()
|
||||||
|
end)
|
||||||
|
|
||||||
|
valentine:HookScript("OnHide", function()
|
||||||
|
cupid:Hide()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
-- happy hallow's end
|
-- happy hallow's end
|
||||||
if today == "1031" then
|
if today == "1031" then
|
||||||
local halloween = CreateScene("pfHallowsEnd", "happy hallow's end!")
|
local halloween = CreateScene("pfHallowsEnd", "happy hallow's end!")
|
||||||
|
|||||||
Reference in New Issue
Block a user