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)