# HG changeset patch # User Matti Hamalainen # Date 1348895954 -10800 # Node ID b2b506e1f42a5b7b384cabdb5e74f98f49415173 # Parent fcca32ea1ca842b50b1009e1d3e3cc1dd922fcb1 Add nice headache white fade synced to beat. diff -r fcca32ea1ca8 -r b2b506e1f42a krapula.c --- 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)