From d171a991494473bb88a570bd7653603e7017e710 Mon Sep 17 00:00:00 2001 From: Hersi Date: Sat, 11 Dec 2021 19:18:36 +0100 Subject: [PATCH] Added particle clearState masks for track_end.lua Added track crash assets to track_end.lua Added by-clearState foreground rendering to track_end.lua WIP: gameplay/track_end/track_crash.png placeholder --- scripts/common/common.lua | 13 +- scripts/gameplay.lua | 2 +- scripts/gameplay/track_end.lua | 406 ++++++++++++++------ textures/gameplay/track_end/track_crash.png | Bin 0 -> 30355 bytes 4 files changed, 295 insertions(+), 126 deletions(-) create mode 100644 textures/gameplay/track_end/track_crash.png diff --git a/scripts/common/common.lua b/scripts/common/common.lua index c29defb..4fa8d9f 100644 --- a/scripts/common/common.lua +++ b/scripts/common/common.lua @@ -17,7 +17,18 @@ local function splitString(inputstr, sep) return t end +local function filter(tableIn, predicate) + local out = {} + for _, val in ipairs(tableIn) do + if predicate(val) then + table.insert(out, val) + end + end + return out +end + return { stopMusic = stopMusic, - splitString = splitString + splitString = splitString, + filter = filter } \ No newline at end of file diff --git a/scripts/gameplay.lua b/scripts/gameplay.lua index 9f55ba8..3a9ae51 100644 --- a/scripts/gameplay.lua +++ b/scripts/gameplay.lua @@ -95,7 +95,7 @@ function render_outro(deltaTime, clearState) return true, 0; -- Exit right away if user manually exited gameplay end - TrackEnd.render(deltaTime); + TrackEnd.render(deltaTime, clearState); outroTimer = outroTimer + deltaTime return outroTimer > 4, 1 - outroTimer diff --git a/scripts/gameplay/track_end.lua b/scripts/gameplay/track_end.lua index f130ae9..91e47da 100644 --- a/scripts/gameplay/track_end.lua +++ b/scripts/gameplay/track_end.lua @@ -1,3 +1,4 @@ +local Common = require('common.common') local Easing = require('common.easings') local bgImage = gfx.CreateSkinImage("gameplay/track_end/bg.png", 0) @@ -9,6 +10,7 @@ local enterFlarePinkImage = gfx.CreateSkinImage("gameplay/track_end/flares/pink_ local trackCompImage = gfx.CreateSkinImage("gameplay/track_end/track_comp.png", 0) local trackCompBlurImage = gfx.CreateSkinImage("gameplay/track_end/track_comp_blur.png", 0) +local trackCrashImage = gfx.CreateSkinImage("gameplay/track_end/track_crash.png", 0) -- new local particleGreenDot1Image = gfx.CreateSkinImage("gameplay/track_end/particles/green_dot_1.png", 0) @@ -16,6 +18,7 @@ local particleGreenDot2Image = gfx.CreateSkinImage("gameplay/track_end/particles local particleBlueRingImage = gfx.CreateSkinImage("gameplay/track_end/particles/blue_ring.png", 0) local particleLargeRainbowRingImage = gfx.CreateSkinImage("gameplay/track_end/particles/large_rainbow_ring.png", 0) +local particleLargeRedRingImage = gfx.CreateSkinImage("gameplay/track_end/particles/large_red_ring.png", 0) local particleRedBallImage = gfx.CreateSkinImage("gameplay/track_end/particles/red_ball.png", 0) local particleRedRingImage = gfx.CreateSkinImage("gameplay/track_end/particles/red_ring.png", 0) @@ -26,8 +29,24 @@ local particleSmallRainbowRingImage = gfx.CreateSkinImage("gameplay/track_end/pa local particleYellowRingImage = gfx.CreateSkinImage("gameplay/track_end/particles/yellow_ring.png", 0) -local flareEndBlueImage = gfx.CreateSkinImage("gameplay/track_end/flares/blue_end_flare.png", 0) -local flareEndPinkImage = gfx.CreateSkinImage("gameplay/track_end/flares/pink_end_flare.png", 0) +local flareCrashBlueImage = gfx.CreateSkinImage("gameplay/track_end/flares/blue_crash_flare.png", 0) +local flareCrashPinkImage = gfx.CreateSkinImage("gameplay/track_end/flares/pink_crash_flare.png", 0) +local flareCompBlueImage = gfx.CreateSkinImage("gameplay/track_end/flares/blue_end_flare.png", 0) +local flareCompPinkImage = gfx.CreateSkinImage("gameplay/track_end/flares/pink_end_flare.png", 0) + +-- USC provided clear state un-magicnumber-ifier +local STATE_CRASH = 1 +local STATE_COMPLETE = 2 +local STATE_HARDCLEAR = 3 +local STATE_UC = 4 +local STATE_PUC = 5 + +-- bitmask for clear state (bitwise OR (| operator) them in particles.mask to set what screen they should appear on) +local STATE_MASK_CRASH = 1 +local STATE_MASK_COMPLETE = 2 +local STATE_MASK_HARDCLEAR = 4 +local STATE_MASK_UC = 8 +local STATE_MASK_PUC = 16 -- Window variables local resX, resY = game.GetResolution() @@ -52,7 +71,7 @@ end local outroTransitionScale = 0; local outroTransitionGlobalAlpha = 0; -local outroTransitionEnterFlareX = -1920; +local outroTransitionFlareX = -1920; local outroTransitionTextCutX = 0; local outroTransitionTextAlpha = 1; @@ -64,6 +83,7 @@ local particlesDuration = 0.2; local particles = { { name = 'green_dot_one', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleGreenDot1Image, opacity = 1, startX = 1280, @@ -77,6 +97,7 @@ local particles = { }, { name = 'green_dot_two', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleGreenDot2Image, opacity = 1, startX = 1280, @@ -90,6 +111,7 @@ local particles = { }, { name = 'blue_ring', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleBlueRingImage, opacity = 1, startX = 1280, @@ -103,6 +125,7 @@ local particles = { }, { -- TODO: scale transitions name = 'large_rainbow_ring', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleLargeRainbowRingImage, opacity = 0, startOpacity = 0, @@ -116,8 +139,25 @@ local particles = { startTime = particlesStartTime, duration = particlesDuration }, + { + name = 'large_red_ring', + mask = STATE_MASK_CRASH, + texture = particleLargeRedRingImage, + opacity = 0, + startOpacity = 0, + finishOpacity = 1, + startX = (1080/2-(2160*0.675)/2), + finishX = (1080/2-(2160*0.675)/2), + xPos = (1080/2-(2160*0.675)/2), + yPos = (680-(2273*0.675)/2) + 100, + width = 2160*0.675, + height = 2273*0.675, + startTime = particlesStartTime, + duration = particlesDuration + }, { name = 'red_ball', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleRedBallImage, startOpacity = 0, finishOpacity = 1, @@ -131,6 +171,7 @@ local particles = { }, { name = 'red_ring', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleRedRingImage, opacity = 1, startX = -600, @@ -144,6 +185,7 @@ local particles = { }, { name = 'small_yellow_ring_1', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleSmallYellowRing1Image, opacity = 1, startX = 1280, @@ -157,6 +199,7 @@ local particles = { }, { name = 'small_yellow_ring_2', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleSmallYellowRing2Image, opacity = 1, startX = 1280, @@ -170,6 +213,7 @@ local particles = { }, { name = 'small_rainbow_ring', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleSmallRainbowRingImage, opacity = 1, startX = 1280, @@ -183,6 +227,7 @@ local particles = { }, { name = 'yellow_ring', + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, texture = particleYellowRingImage, opacity = 1, startX = -600, @@ -194,9 +239,38 @@ local particles = { startTime = particlesStartTime, duration = particlesDuration }, + { + name = 'blue_flare_dim', + mask = STATE_MASK_CRASH, + texture = flareCrashBlueImage, + opacity = 1, + startX = -1500, + finishX = 0, + xPos = -1500, + yPos = 480, + width = 2160*0.5, + height = 1100*0.5, + startTime = particlesStartTime, + duration = particlesDuration + }, + { + name = 'pink_flare_dim', + mask = STATE_MASK_CRASH, + texture = flareCrashPinkImage, + opacity = 1, + startX = 1500, + finishX = 0, + xPos = 1080+1500, + yPos = 480, + width = 2160*0.5, + height = 1100*0.5, + startTime = particlesStartTime, + duration = particlesDuration + }, { name = 'blue_flare', - texture = flareEndBlueImage, + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, + texture = flareCompBlueImage, opacity = 1, startX = -1500, finishX = 0, @@ -209,7 +283,8 @@ local particles = { }, { name = 'pink_flare', - texture = flareEndPinkImage, + mask = STATE_MASK_COMPLETE | STATE_MASK_HARDCLEAR | STATE_MASK_UC | STATE_MASK_PUC, + texture = flareCompPinkImage, opacity = 1, startX = 1500, finishX = 0, @@ -222,10 +297,18 @@ local particles = { }, } +-- particles for each clear state +local particlesCrash = Common.filter(particles, function (particle) return (particle.mask & STATE_MASK_CRASH) > 0 end) +local particlesComplete = Common.filter(particles, function (particle) return (particle.mask & STATE_MASK_COMPLETE) > 0 end) +local particlesHardClear = Common.filter(particles, function (particle) return (particle.mask & STATE_MASK_HARDCLEAR) > 0 end) +local particlesUC = Common.filter(particles, function (particle) return (particle.mask & STATE_MASK_UC) > 0 end) +local particlesPUC = Common.filter(particles, function (particle) return (particle.mask & STATE_MASK_PUC) > 0 end) if (game.GetSkinSetting('audio_systemVoice')) then + game.LoadSkinSample('gameplay/track_crash_rasis.wav'); game.LoadSkinSample('gameplay/track_comp_rasis.wav'); else + game.LoadSkinSample('gameplay/track_crash.wav'); game.LoadSkinSample('gameplay/track_comp.wav'); end @@ -240,7 +323,7 @@ local tickTransitions = function (deltaTime) outroTransitionGlobalAlpha = math.min(1, (outroTransitionScale*6)) - outroTransitionEnterFlareX = math.min(2*1920, ( + outroTransitionFlareX = math.min(2*1920, ( (outroTransitionScale-0.2)/0.1* -- Last from 0.2 transition scale for 0.1 transition scale, ending at 0.3 TS (1920*2) -- move this amount during the transition )-1920); -- start off-screen @@ -293,8 +376,8 @@ local tickTransitions = function (deltaTime) -- end end -local drawParticles = function () - for index, particle in ipairs(particles) do +local drawParticles = function (particlesToDraw) + for _, particle in ipairs(particlesToDraw) do gfx.BeginPath(); gfx.ImageRect( particle.xPos, @@ -305,91 +388,27 @@ local drawParticles = function () particle.opacity, 0 ); - -- game.Log(particle.name, game.LOGGER_ERROR) end - - gfx.BeginPath(); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleRedX-80, - -- 510-80, - -- 787*0.7, - -- 818*0.7, - -- particleYellowRing, - -- 1, - -- 0 - -- ); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleRedX, - -- 510, - -- 787*0.5, - -- 818*0.5, - -- particleRedBall, - -- 1, - -- 0 - -- ); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleRedX, - -- 510, - -- 787*0.5, - -- 818*0.5, - -- particleRedRing, - -- 1, - -- 0 - -- ); - - -- -- Right side - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleSmallRainbowX, - -- 465, - -- 1117*0.5, - -- 1117*0.5, - -- particleSmallRainbowRing, - -- 1, - -- 0 - -- ); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleSmallYellowRingAX, - -- 575, - -- 579*0.5, - -- 557*0.5, - -- particleSmYellowRingA, - -- 1, - -- 0 - -- ); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleSmallYellowRingBX, - -- 585, - -- 436*0.5, - -- 392*0.5, - -- particleSmYellowRingB, - -- 1, - -- 0 - -- ); - -- gfx.BeginPath(); - -- gfx.ImageRect( - -- outroTransitionParticleSmallYellowRingCX, - -- 625, - -- 275*0.5, - -- 275*0.5, - -- particleSmYellowRingC, - -- 1, - -- 0 - -- ); end -local handleSounds = function () +local handleSounds = function (clearState) if not compSfxPlayed then compSfxPlayed = true; + local trackCrashSamplePath = "gameplay/track_crash" + local trackCompleteSamplePath = "gameplay/track_comp" if (game.GetSkinSetting('audio_systemVoice')) then - game.PlaySample('gameplay/track_comp_rasis.wav'); + trackCrashSamplePath = trackCrashSamplePath .. "_rasis" + trackCompleteSamplePath = trackCompleteSamplePath .. "_rasis" + end + trackCrashSamplePath = trackCrashSamplePath .. ".wav" + trackCompleteSamplePath = trackCompleteSamplePath .. ".wav" + + if clearState == STATE_CRASH then + game.PlaySample(trackCrashSamplePath); + elseif clearState == STATE_COMPLETE then + game.PlaySample(trackCompleteSamplePath); else - game.PlaySample('gameplay/track_comp.wav'); + game.PlaySample(trackCompleteSamplePath); end end end @@ -417,14 +436,187 @@ local function renderBackground() end -local render = function (deltaTime) +local function renderForeground(clearState) + if clearState == STATE_CRASH then + drawParticles(particlesCrash); + + gfx.BeginPath(); + gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) + gfx.GlobalAlpha(outroTransitionTextAlpha); + gfx.ImageRect( + 0, + 680, + 2160*0.5, + 177*0.5, + trackCrashImage, + 0.75, + 0 + ); + elseif clearState == STATE_COMPLETE then + -- Enter flares + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionFlareX, + 530, + 3280*0.5, + 790*0.5, + enterFlareBlueImage, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + -outroTransitionFlareX, -- go from the other side of the screen + 530, + 3280*0.5, + 790*0.5, + enterFlarePinkImage, + 1, + 0 + ); + + drawParticles(particlesComplete); + + gfx.BeginPath(); + gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) + gfx.GlobalAlpha(outroTransitionTextAlpha); + gfx.ImageRect( + 0, + 680, + 2160*0.5, + 177*0.5, + trackCompImage, + 1, + 0 + ); + elseif clearState == STATE_HARDCLEAR then + -- TODO: outro screens for other clearStates + -- WIP IMPLEMENTATION JUST SHOWS COMPLETE ASSETS + -- Enter flares + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionFlareX, + 530, + 3280*0.5, + 790*0.5, + enterFlareBlueImage, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + -outroTransitionFlareX, -- go from the other side of the screen + 530, + 3280*0.5, + 790*0.5, + enterFlarePinkImage, + 1, + 0 + ); + + drawParticles(particlesHardClear); + + gfx.BeginPath(); + gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) + gfx.GlobalAlpha(outroTransitionTextAlpha); + gfx.ImageRect( + 0, + 680, + 2160*0.5, + 177*0.5, + trackCompImage, + 1, + 0 + ); + elseif clearState == STATE_UC then + -- TODO: outro screens for other clearStates + -- WIP IMPLEMENTATION JUST SHOWS COMPLETE ASSETS + -- Enter flares + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionFlareX, + 530, + 3280*0.5, + 790*0.5, + enterFlareBlueImage, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + -outroTransitionFlareX, -- go from the other side of the screen + 530, + 3280*0.5, + 790*0.5, + enterFlarePinkImage, + 1, + 0 + ); + + drawParticles(particlesUC); + + gfx.BeginPath(); + gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) + gfx.GlobalAlpha(outroTransitionTextAlpha); + gfx.ImageRect( + 0, + 680, + 2160*0.5, + 177*0.5, + trackCompImage, + 1, + 0 + ); + elseif clearState == STATE_PUC then + -- TODO: outro screens for other clearStates + -- WIP IMPLEMENTATION JUST SHOWS COMPLETE ASSETS + -- Enter flares + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionFlareX, + 530, + 3280*0.5, + 790*0.5, + enterFlareBlueImage, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + -outroTransitionFlareX, -- go from the other side of the screen + 530, + 3280*0.5, + 790*0.5, + enterFlarePinkImage, + 1, + 0 + ); + + drawParticles(particlesPUC); + + gfx.BeginPath(); + gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) + gfx.GlobalAlpha(outroTransitionTextAlpha); + gfx.ImageRect( + 0, + 680, + 2160*0.5, + 177*0.5, + trackCompImage, + 1, + 0 + ); + end +end + +render = function (deltaTime, clearState) local resx, resy = game.GetResolution() if resx ~= resX or resy ~= resY then resolutionChange(resx, resy) end tickTransitions(deltaTime); - handleSounds(); + handleSounds(clearState); gfx.GlobalAlpha(outroTransitionGlobalAlpha); renderBackground() @@ -435,42 +627,8 @@ local render = function (deltaTime) gfx.Scale(fullX / desW, fullY / desH); gfx.Scissor(0, 0, desW, desH); - -- Enter flares - gfx.BeginPath(); - gfx.ImageRect( - outroTransitionEnterFlareX, - 530, - 3280*0.5, - 790*0.5, - enterFlareBlueImage, - 1, - 0 - ); - gfx.BeginPath(); - gfx.ImageRect( - -outroTransitionEnterFlareX, -- go from the other side of the screen - 530, - 3280*0.5, - 790*0.5, - enterFlarePinkImage, - 1, - 0 - ); + renderForeground(clearState) - drawParticles(); - - gfx.BeginPath(); - gfx.Scissor(0, 530, outroTransitionTextCutX, 1920) - gfx.GlobalAlpha(outroTransitionTextAlpha); - gfx.ImageRect( - 0, - 680, - 2160*0.5, - 177*0.5, - trackCompImage, - 1, - 0 - ); gfx.GlobalAlpha(outroTransitionGlobalAlpha); gfx.ResetScissor(); @@ -491,5 +649,5 @@ local render = function (deltaTime) end return { - render=render + render = render } \ No newline at end of file diff --git a/textures/gameplay/track_end/track_crash.png b/textures/gameplay/track_end/track_crash.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b2090178568f161e2aab3def05ee9268c8e623 GIT binary patch literal 30355 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 Wy(xA%)eru=c**FBVf96ir2hl6JS1rV literal 0 HcmV?d00001