Mercurial > hg > demos > krapula
changeset 14:b2b506e1f42a
Add nice headache white fade synced to beat.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 29 Sep 2012 08:19:14 +0300 |
parents | fcca32ea1ca8 |
children | e5c517ccc1e5 |
files | krapula.c |
diffstat | 1 files changed, 37 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/krapula.c Sat Sep 29 07:20:08 2012 +0300 +++ b/krapula.c Sat Sep 29 08:19:14 2012 +0300 @@ -907,7 +907,7 @@ else if (t < 45) { - SDL_Surface *ruutu; + static SDL_Surface *ruutu, *feidi; static int currState, currCredit, creditStartTime; static DMLerpContext lerpX, lerpY, lerpZ; static DMScaledBlitFunc nblit, kblit; @@ -916,6 +916,7 @@ if (!nollattu) { ruutu = engineGetResImage("ruutu.png"); + feidi = engineGetResImage("feidi.png"); dmClearSurface(ruutu, dmMapRGBA(ruutu, 0,0,0,0)); nblit = dmGetScaledBlitFunc(nosfe[0]->format, engine.screen->format, DMD_NONE); kblit = dmGetScaledBlitFunc(credits[0].img->format, engine.screen->format, DMD_TRANSPARENT); @@ -1006,6 +1007,41 @@ engine.screen); } } + + { + static int fadeStartTime; + static BOOL fadeActive; + static DMLerpContext fadeLerp; + BOOL hit = TRUE; + int ch; + JSS_LOCK(plr); + for (hit = FALSE, ch = 0; ch < 6; ch++) + if (plr->iCExtInstrumentN[ch] == 0) + { + hit = TRUE; + break; + } + JSS_UNLOCK(plr); + + if (hit && !fadeActive) + { + fadeActive = TRUE; + fadeStartTime = engineGetTime(0); + dmLerpInit(&fadeLerp, 255, 0, 250); + } + if (fadeActive) + { + int fadeTime = engineGetTime(0) - fadeStartTime; + if (fadeTime < 250) + { + dmScaledBlitSurface32to32TransparentGA(feidi, + 0, 0, engine.screen->w, engine.screen->h, engine.screen, + dmLerpSCurve(&fadeLerp, fadeTime)); + } + else + fadeActive = FALSE; + } + } } else if (t < 60)