Modify chomp() to brutally remove any combination of trailing line feeds
[neverball] / ball / game.c
index 6f5b8b3..ed2ff7b 100644 (file)
@@ -65,7 +65,6 @@ static float jump_dt;                   /* Jump duration                     */
 static float jump_p[3];                 /* Jump destination                  */
 static float fade_k = 0.0;              /* Fade in/out level                 */
 static float fade_d = 0.0;              /* Fade in/out direction             */
-static int   drawball = 1;              /* Should the ball be drawn?         */
 static int   ball_b = 0;                /* Is the ball a bonus ball?         */
 
 static int   grow = 0;                  /* Should the ball be changing size? */
@@ -201,8 +200,6 @@ int game_init(const struct level *level, int t, int g)
     game_rx = 0.f;
     game_rz = 0.f;
 
-    drawball = 1;
-
     /* Initialize jump and goal states. */
 
     jump_e = 1;
@@ -530,7 +527,7 @@ static void game_draw_fore(int pose, float rx, float ry, int d, const float p[3]
 
             sol_draw(&file);
 
-            if (config_get_d(CONFIG_SHADOW) && drawball)
+            if (config_get_d(CONFIG_SHADOW))
             {
                 shad_draw_set(ball_p, ball_r);
                 sol_shad(&file);
@@ -546,8 +543,7 @@ static void game_draw_fore(int pose, float rx, float ry, int d, const float p[3]
             {
                 part_draw_coin(-rx * d, -ry);
                 game_draw_items(&file);
-                if (drawball)
-                    game_draw_balls(&file);
+                game_draw_balls(&file);
             }
             game_draw_goals(&file, -rx * d, -ry);
             game_draw_jumps(&file);
@@ -761,36 +757,40 @@ static void game_update_time(float dt, int b)
 static int game_update_state(int *state_value)
 {
     struct s_file *fp = &file;
+    struct s_goal *zp;
+    struct s_item *hp;
+
     float p[3];
     float c[3];
+
     int bt = state_value != NULL;
-    struct s_goal *g;
-    struct s_item *hp;
 
     /* Test for an item. */
     if (bt && (hp = sol_item_test(fp, p, COIN_RADIUS)))
     {
+        int sound = AUD_COIN;
+
         item_color(hp, c);
         part_burst(p, c);
+
         grow_set(fp, hp->t);
 
         if (hp->t == ITEM_COIN)
+        {
             coins += hp->n;
 
-        /* Check for goal open. */
-        if (goal_c > 0)
-        {
-            goal_c = goal_c - hp->n;
-            if (goal_c <= 0)
+            /* Check for goal open. */
+            if (goal_c > 0)
             {
-                audio_play(AUD_SWITCH, 1.f);
-                goal_c = 0;
+                goal_c -= hp->n;
+                if (goal_c <= 0)
+                {
+                    sound = AUD_SWITCH;
+                    goal_c = 0;
+                }
             }
-            else
-                audio_play(AUD_COIN, 1.f);
         }
-        else
-            audio_play(AUD_COIN, 1.f);
+        audio_play(sound, 1.f);
 
         /* Reset item type. */
         hp->t = ITEM_NONE;
@@ -815,26 +815,17 @@ static int game_update_state(int *state_value)
 
     /* Test for a goal. */
 
-    if (bt && goal_c == 0 && (g = sol_goal_test(fp, p, 0)))
+    if (bt && goal_c == 0 && (zp = sol_goal_test(fp, p, 0)))
     {
-        *state_value = g->s;
+        *state_value = zp->s;
         audio_play(AUD_GOAL, 1.0f);
-        return g->c ? GAME_SPEC : GAME_GOAL;
+        return zp->c ? GAME_SPEC : GAME_GOAL;
     }
 
     /* Test for time-out. */
 
     if (bt && clock_down && clock <= 0.f)
     {
-        const GLfloat *p = fp->uv->p;
-        const GLfloat c[5] = {1.0f, 1.0f, 0.0f, 0.0f, 1.0f};
-        part_burst(p, c);
-        part_burst(p, c+1);
-        part_burst(p, c+2);
-        part_burst(p, c);
-        part_burst(p, c+1);
-        part_burst(p, c+2);
-        drawball = 0;
         audio_play(AUD_TIME, 1.0f);
         return GAME_TIME;
     }
@@ -898,9 +889,7 @@ int game_step(const float g[3], float dt, int *state_value)
         game_update_grav(h, g);
         part_step(h, t);
 
-        if (!drawball)
-                /* nothing */;
-        else if (jump_b)
+        if (jump_b)
         {
             jump_dt += t;