Starting header clean-up.
[neverball] / ball / game.c
index 1e57b59..f5f807b 100644 (file)
@@ -74,6 +74,8 @@ static float grow_goal = 0;             /* how big or small to get!          */
 const  float grow_time = 0.5f;          /* sec for the ball to get to size.  */
 static float grow_t = 0.0;              /* timer for the ball to grow...     */
 static float grow_strt = 0;             /* starting value for growth         */
+const  float grow_big  = 1.5f;          /* large factor                      */
+const  float grow_small= 0.5f;          /* small factor                      */
 
 
 
@@ -82,7 +84,7 @@ static float grow_strt = 0;             /* starting value for growth         */
 static void grow_set(const struct s_file *fp, int size)
 {
     static int got_orig = 0;
-    if (!got_orig) 
+    if (!got_orig)
     {
         grow_orig = fp->uv->r;
         grow_goal = grow_orig;
@@ -92,29 +94,29 @@ static void grow_set(const struct s_file *fp, int size)
 
     if (size == 50)
     {
-        if (grow_goal == grow_orig * 0.5f) return; /*already small!*/
-        else if (grow_goal == grow_orig * 1.5f) /* big, let's set it to normal.*/
+        if (grow_goal == grow_orig * grow_small) return; /*already small!*/
+        else if (grow_goal == grow_orig * grow_big) /* big, let's set it to normal.*/
         {
             grow = 1;
             grow_goal = grow_orig;
         }
         else /*must be normal sized.*/
         {
-            grow_goal = grow_orig * 0.5f;
+            grow_goal = grow_orig * grow_small;
             grow = 1;
-        }        
+        }
     }/* done with 50% size coin */
     if (size == 150)
     {
-        if (grow_goal == grow_orig * 1.5f) return; /*already big!*/
-        else if (grow_goal == grow_orig * 0.5f) /* small, let's set it to normal.*/
+        if (grow_goal == grow_orig * grow_big) return; /*already big!*/
+        else if (grow_goal == grow_orig * grow_small) /* small, let's set it to normal.*/
         {
             grow = 1;
             grow_goal = grow_orig;
         }
         else /*must be normal sized.*/
         {
-            grow_goal = grow_orig * 1.5f;
+            grow_goal = grow_orig * grow_big;
             grow = 1;
         }
     }/* done with 150% size coin */
@@ -123,22 +125,22 @@ static void grow_set(const struct s_file *fp, int size)
     {
         grow_t = 0.0;
         grow_strt = fp->uv->r;
-    }    
+    }
 }
 
 static void grow_ball(const struct s_file *fp, float dt)
-{    
+{
     float dr;
-            
+
     /*calculate new size based on how long since you touched the coin...*/
     grow_t += dt;
     if (grow_t >= grow_time)
     {
         grow = 0;
         grow_t = grow_time;
-    } 
+    }
 
-    dr = grow_strt + ((grow_goal-grow_strt) * (1.0f / (grow_time / grow_t)));    
+    dr = grow_strt + ((grow_goal-grow_strt) * (1.0f / (grow_time / grow_t)));
 
     fp->uv->p[1] += (dr - fp->uv->r); /*No sinking through the floor! keeps ball's bottom constant.*/
     fp->uv->r = dr;
@@ -283,13 +285,13 @@ static void game_draw_balls(const struct s_file *fp)
 static void game_draw_coins(const struct s_file *fp)
 {
     float r = 360.f * SDL_GetTicks() / 1000.f;
-    int ci;    
+    int ci;
 
     coin_push();
     coin_push_text(0); /*regular coins*/
     {
         for (ci = 0; ci < fp->cc; ci++)
-            
+
             if (fp->cv[ci].n > 0 && fp->cv[ci].n < 50)
             {
                 glPushMatrix();
@@ -311,7 +313,7 @@ static void game_draw_coins(const struct s_file *fp)
     coin_push_text(50); /*any shrink coins?*/
     {
         for (ci = 0; ci < fp->cc; ci++)
-            
+
             if (fp->cv[ci].n == 50)
             {
                 glPushMatrix();
@@ -331,7 +333,7 @@ static void game_draw_coins(const struct s_file *fp)
     coin_push_text(150); /*any grow coins?*/
     {
         for (ci = 0; ci < fp->cc; ci++)
-            
+
             if (fp->cv[ci].n == 150)
             {
                 glPushMatrix();
@@ -769,13 +771,13 @@ static int game_update_state(int *state_value)
         part_burst(p, c);
 
         /*add coins if regular, change radius if not.*/
-        if (n <= 10) 
+        if (n <= 10)
             coins += n;
         else
-        { 
+        {
             grow_set(fp, n); /*only 50 and 150 will produce results.*/
             n = 0;
-        }     
+        }
 
         /* Check for goal open. */
         if (goal_c > 0)
@@ -816,6 +818,7 @@ static int game_update_state(int *state_value)
     {
         *state_value = g->s;
         audio_play(AUD_GOAL, 1.0f);
+        grow_goal = grow_orig;
         return g->c ? GAME_SPEC : GAME_GOAL;
     }
 
@@ -832,6 +835,7 @@ static int game_update_state(int *state_value)
         part_burst(p, c+1);
         part_burst(p, c+2);
         drawball = 0;
+        grow_goal = grow_orig;
         audio_play(AUD_TIME, 1.0f);
         return GAME_TIME;
     }
@@ -841,6 +845,7 @@ static int game_update_state(int *state_value)
     if (bt && fp->uv[0].p[1] < fp->vv[0].p[1])
     {
         audio_play(AUD_FALL, 1.0f);
+        grow_goal = grow_orig;
         return GAME_FALL;
     }
 
@@ -889,8 +894,6 @@ int game_step(const float g[3], float dt, int *state_value)
             game_rz = game_iz;
         }
 
-        /*might need to put the call to grow_ball here.*/
-
         if (grow) grow_ball(fp,dt);
 
         game_update_grav(h, g);