rnd-20040928-1-src
[rocksndiamonds.git] / src / game_em / synchro_2.c
index c8a50916fac0e25fa3848bab0a02397d4478d503..662ad2e53630f521ee873bf3be648d9c682c0419 100644 (file)
@@ -27,10 +27,13 @@ void synchro_2(void)
   unsigned int temp = 0;       /* initialized to make compilers happy */
   unsigned int dx; /* only needed to find closest player */
   unsigned int dy;
+  int element;
 
  loop:
 
-  switch (cave_cache[++x])
+  element = cave_cache[++x];
+
+  switch (element)
   {
     default:
       goto loop;
@@ -531,7 +534,7 @@ void synchro_2(void)
          Cave[y+1][x] = Yemerald_stone;
          Next[y][x] = Xstone;
          Next[y+1][x] = Xemerald;
-         play_sound(x, y, SAMPLE_crack);
+         play_element_sound(x, y, SAMPLE_crack, Xnut);
          score += lev.nut_score;
          goto loop;
 
@@ -555,6 +558,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xemerald;
          Boom[y+2][x] = Xemerald;
          Boom[y+2][x+1] = Xemerald;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.bug_score;
          goto loop;
 
@@ -578,6 +584,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.tank_score;
          goto loop;
 
@@ -635,6 +644,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
          Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
          Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          lev.eater_pos = (lev.eater_pos + 1) & 7;
          score += lev.eater_score;
          goto loop;
@@ -653,6 +665,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.alien_score;
          goto loop;
 
@@ -707,7 +722,7 @@ void synchro_2(void)
            case Xplant:
            case Yplant:
              Next[y][x] = Xstone;
-             play_sound(x, y, SAMPLE_stone);
+             play_element_sound(x, y, SAMPLE_stone, Xstone);
              goto loop;
          }
 
@@ -715,7 +730,7 @@ void synchro_2(void)
          Cave[y+1][x] = Ydiamond_stone;
          Next[y][x] = Xblank;
          Next[y+1][x] = Xstone_pause;
-         play_sound(x, y, SAMPLE_squash);
+         play_element_sound(x, y, SAMPLE_squash, Xdiamond);
          goto loop;
 
        case Xbomb:
@@ -731,6 +746,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          goto loop;
 
        case Xwonderwall:
@@ -746,14 +764,14 @@ void synchro_2(void)
            }
 
            Next[y][x] = Xblank;
-           play_sound(x, y, SAMPLE_squash);
+           play_element_sound(x, y, SAMPLE_wonderfall, Xstone);
            goto loop;
          }
 
        default:
          Cave[y][x] = Xstone;
          Next[y][x] = Xstone;
-         play_sound(x, y, SAMPLE_stone);
+         play_element_sound(x, y, SAMPLE_stone, Xstone);
          goto loop;
       }
 
@@ -950,7 +968,7 @@ void synchro_2(void)
        default:
          Cave[y][x] = Xnut;
          Next[y][x] = Xnut;
-         play_sound(x, y, SAMPLE_nut);
+         play_element_sound(x, y, SAMPLE_nut, Xnut);
          goto loop;
       }
 
@@ -1722,7 +1740,7 @@ void synchro_2(void)
        }
 
        Next[y][x] = temp; /* the item we chose to clone */
-       play_sound(x, y, SAMPLE_android);
+       play_element_sound(x, y, SAMPLE_android, temp);
 
        switch (RANDOM & 7)
        {
@@ -2601,7 +2619,7 @@ void synchro_2(void)
          Cave[y][x+1] = Yspring_kill_e;
          Next[y][x] = Xblank;
          Next[y][x+1] = Xspring_e;
-         play_sound(x, y, SAMPLE_slurp);
+         play_element_sound(x, y, SAMPLE_slurp, Xalien);
          score += lev.slurp_score;
          goto loop;
 
@@ -2609,13 +2627,13 @@ void synchro_2(void)
        case XbumperB:
          Cave[y][x+1] = XbumperB;
          Next[y][x] = Xspring_w;
-         play_sound(x, y, SAMPLE_spring);
+         play_element_sound(x, y, SAMPLE_spring, Xspring);
          goto loop;
 
        default:
          Cave[y][x] = Xspring;
          Next[y][x] = Xspring;
-         play_sound(x, y, SAMPLE_spring);
+         play_element_sound(x, y, SAMPLE_spring, Xspring);
          goto loop;
       }
 
@@ -2696,7 +2714,7 @@ void synchro_2(void)
          Cave[y][x-1] = Yspring_kill_w;
          Next[y][x] = Xblank;
          Next[y][x-1] = Xspring_w;
-         play_sound(x, y, SAMPLE_slurp);
+         play_element_sound(x, y, SAMPLE_slurp, Xalien);
          score += lev.slurp_score;
          goto loop;
 
@@ -2704,13 +2722,13 @@ void synchro_2(void)
        case XbumperB:
          Cave[y][x-1] = XbumperB;
          Next[y][x] = Xspring_e;
-         play_sound(x, y, SAMPLE_spring);
+         play_element_sound(x, y, SAMPLE_spring, Xspring);
          goto loop;
 
        default:
          Cave[y][x] = Xspring;
          Next[y][x] = Xspring;
-         play_sound(x, y, SAMPLE_spring);
+         play_element_sound(x, y, SAMPLE_spring, Xspring);
          goto loop;
       }
 
@@ -2759,6 +2777,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          goto loop;
 
        case Xbug_n:
@@ -2781,6 +2802,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xemerald;
          Boom[y+2][x] = Xemerald;
          Boom[y+2][x+1] = Xemerald;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.bug_score;
          goto loop;
 
@@ -2804,6 +2828,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.tank_score;
          goto loop;
 
@@ -2823,6 +2850,9 @@ void synchro_2(void)
          Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
          Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
          Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          lev.eater_pos = (lev.eater_pos + 1) & 7;
          score += lev.eater_score;
          goto loop;
@@ -2841,13 +2871,16 @@ void synchro_2(void)
          Boom[y+2][x-1] = Xblank;
          Boom[y+2][x] = Xblank;
          Boom[y+2][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          score += lev.alien_score;
          goto loop;
 
        default:
          Cave[y][x] = Xspring;
          Next[y][x] = Xspring;
-         play_sound(x, y, SAMPLE_spring);
+         play_element_sound(x, y, SAMPLE_spring, Xspring);
          goto loop;
       }
 
@@ -2858,7 +2891,7 @@ void synchro_2(void)
       {
        Cave[y][x+1] = Ydiamond_eat;
        Next[y][x+1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2866,7 +2899,7 @@ void synchro_2(void)
       {
        Cave[y+1][x] = Ydiamond_eat;
        Next[y+1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2874,7 +2907,7 @@ void synchro_2(void)
       {
        Cave[y][x-1] = Ydiamond_eat;
        Next[y][x-1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2882,7 +2915,7 @@ void synchro_2(void)
       {
        Cave[y-1][x] = Ydiamond_eat;
        Next[y-1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2930,7 +2963,7 @@ void synchro_2(void)
       {
        Cave[y+1][x] = Ydiamond_eat;
        Next[y+1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2938,7 +2971,7 @@ void synchro_2(void)
       {
        Cave[y][x-1] = Ydiamond_eat;
        Next[y][x-1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2946,7 +2979,7 @@ void synchro_2(void)
       {
        Cave[y-1][x] = Ydiamond_eat;
        Next[y-1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -2954,7 +2987,7 @@ void synchro_2(void)
       {
        Cave[y][x+1] = Ydiamond_eat;
        Next[y][x+1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3002,7 +3035,7 @@ void synchro_2(void)
       {
        Cave[y][x-1] = Ydiamond_eat;
        Next[y][x-1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3010,7 +3043,7 @@ void synchro_2(void)
       {
        Cave[y-1][x] = Ydiamond_eat;
        Next[y-1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3018,7 +3051,7 @@ void synchro_2(void)
       {
        Cave[y][x+1] = Ydiamond_eat;
        Next[y][x+1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3026,7 +3059,7 @@ void synchro_2(void)
       {
        Cave[y+1][x] = Ydiamond_eat;
        Next[y+1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3074,7 +3107,7 @@ void synchro_2(void)
       {
        Cave[y-1][x] = Ydiamond_eat;
        Next[y-1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3082,7 +3115,7 @@ void synchro_2(void)
       {
        Cave[y][x+1] = Ydiamond_eat;
        Next[y][x+1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3090,7 +3123,7 @@ void synchro_2(void)
       {
        Cave[y+1][x] = Ydiamond_eat;
        Next[y+1][x] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3098,7 +3131,7 @@ void synchro_2(void)
       {
        Cave[y][x-1] = Ydiamond_eat;
        Next[y][x-1] = Xblank;
-       play_sound(x, y, SAMPLE_eater);
+       play_element_sound(x, y, SAMPLE_eater, Xdiamond);
        goto loop;
       }
 
@@ -3212,7 +3245,7 @@ void synchro_2(void)
              Cave[y-1][x] = Yalien_n;
              Next[y][x] = Xblank;
              Next[y-1][x] = Xalien_pause;
-             play_sound(x, y, SAMPLE_alien);
+             play_element_sound(x, y, SAMPLE_alien, Xalien);
              goto loop;
          }
        }
@@ -3247,7 +3280,7 @@ void synchro_2(void)
              Cave[y+1][x] = Yalien_s;
              Next[y][x] = Xblank;
              Next[y+1][x] = Xalien_pause;
-             play_sound(x, y, SAMPLE_alien);
+             play_element_sound(x, y, SAMPLE_alien, Xalien);
              goto loop;
          }
        }
@@ -3285,7 +3318,7 @@ void synchro_2(void)
              Cave[y][x+1] = Yalien_e;
              Next[y][x] = Xblank;
              Next[y][x+1] = Xalien_pause;
-             play_sound(x, y, SAMPLE_alien);
+             play_element_sound(x, y, SAMPLE_alien, Xalien);
              goto loop;
          }
        }
@@ -3320,7 +3353,7 @@ void synchro_2(void)
              Cave[y][x-1] = Yalien_w;
              Next[y][x] = Xblank;
              Next[y][x-1] = Xalien_pause;
-             play_sound(x, y, SAMPLE_alien);
+             play_element_sound(x, y, SAMPLE_alien, Xalien);
              goto loop;
          }
        }
@@ -3548,14 +3581,14 @@ void synchro_2(void)
            }
 
            Next[y][x] = Xblank;
-           play_sound(x, y, SAMPLE_squash);
+           play_element_sound(x, y, SAMPLE_wonderfall, Xemerald);
            goto loop;
          }
 
        default:
          Cave[y][x] = Xemerald;
          Next[y][x] = Xemerald;
-         play_sound(x, y, SAMPLE_diamond);
+         play_element_sound(x, y, SAMPLE_diamond, Xemerald);
          goto loop;
       }
 
@@ -3775,14 +3808,14 @@ void synchro_2(void)
            }
 
            Next[y][x] = Xblank;
-           play_sound(x, y, SAMPLE_squash);
+           play_element_sound(x, y, SAMPLE_wonderfall, Xdiamond);
            goto loop;
          }
 
        default:
          Cave[y][x] = Xdiamond;
          Next[y][x] = Xdiamond;
-         play_sound(x, y, SAMPLE_diamond);
+         play_element_sound(x, y, SAMPLE_diamond, Xdiamond);
          goto loop;
       }
 
@@ -3858,7 +3891,7 @@ void synchro_2(void)
 
          Cave[y][x] = temp;
          Next[y][x] = temp;
-         play_sound(x, y, SAMPLE_drip);
+         play_element_sound(x, y, SAMPLE_drip, Xdrip_fall);
          goto loop;
       }
 
@@ -4078,6 +4111,9 @@ void synchro_2(void)
          Boom[y+1][x-1] = Xblank;
          Boom[y+1][x] = Xblank;
          Boom[y+1][x+1] = Xblank;
+#if 0
+         play_element_sound(x, y, SAMPLE_boom, element);
+#endif
          goto loop;
       }
 
@@ -4282,7 +4318,7 @@ void synchro_2(void)
 
     ball_common:
 
-      play_sound(x, y, SAMPLE_ball);
+      play_element_sound(x, y, SAMPLE_ball, element);
       if (lev.ball_random)
       {
        switch (RANDOM & 7)
@@ -4429,14 +4465,14 @@ void synchro_2(void)
       {
        Cave[y-1][x] = Ygrow_ns_eat;
        Next[y-1][x] = Xgrow_ns;
-       play_sound(x, y, SAMPLE_grow);
+       play_element_sound(x, y, SAMPLE_grow, Xgrow_ns);
       }
 
       if (tab_blank[Cave[y+1][x]])
       {
        Cave[y+1][x] = Ygrow_ns_eat;
        Next[y+1][x] = Xgrow_ns;
-       play_sound(x, y, SAMPLE_grow);
+       play_element_sound(x, y, SAMPLE_grow, Xgrow_ns);
       }
 
       goto loop;
@@ -4446,14 +4482,14 @@ void synchro_2(void)
       {
        Cave[y][x+1] = Ygrow_ew_eat;
        Next[y][x+1] = Xgrow_ew;
-       play_sound(x, y, SAMPLE_grow);
+       play_element_sound(x, y, SAMPLE_grow, Xgrow_ew);
       }
 
       if (tab_blank[Cave[y][x-1]])
       {
        Cave[y][x-1] = Ygrow_ew_eat;
        Next[y][x-1] = Xgrow_ew;
-       play_sound(x, y, SAMPLE_grow);
+       play_element_sound(x, y, SAMPLE_grow, Xgrow_ew);
       }
 
       goto loop;
@@ -4464,7 +4500,7 @@ void synchro_2(void)
       if (lev.wonderwall_time && lev.wonderwall_state)
       {
        Cave[y][x] = XwonderwallB;
-       play_sound(x, y, SAMPLE_wonder);
+       play_element_sound(x, y, SAMPLE_wonder, Xwonderwall);
       }
 
       goto loop;
@@ -4509,22 +4545,22 @@ void synchro_2(void)
     /* --------------------------------------------------------------------- */
 
     case Xdynamite_1:
-      play_sound(x, y, SAMPLE_tick);
+      play_element_sound(x, y, SAMPLE_tick, Xdynamite_1);
       Next[y][x] = Xdynamite_2;
       goto loop;
 
     case Xdynamite_2:
-      play_sound(x, y, SAMPLE_tick);
+      play_element_sound(x, y, SAMPLE_tick, Xdynamite_2);
       Next[y][x] = Xdynamite_3;
       goto loop;
 
     case Xdynamite_3:
-      play_sound(x, y, SAMPLE_tick);
+      play_element_sound(x, y, SAMPLE_tick, Xdynamite_3);
       Next[y][x] = Xdynamite_4;
       goto loop;
 
     case Xdynamite_4:
-      play_sound(x, y, SAMPLE_tick);
+      play_element_sound(x, y, SAMPLE_tick, Xdynamite_4);
       Next[y][x] = Zdynamite;
       Boom[y-1][x-1] = Xblank;
       Boom[y-1][x] = Xblank;
@@ -4726,6 +4762,9 @@ void synchro_2(void)
       Boom[y+1][x-1] = Xemerald;
       Boom[y+1][x] = Xemerald;
       Boom[y+1][x+1] = Xemerald;
+#if 0
+      play_element_sound(x, y, SAMPLE_boom, element);
+#endif
       goto loop;
 
     case Xboom_bomb:
@@ -4742,12 +4781,20 @@ void synchro_2(void)
       Boom[y+1][x-1] = Xblank;
       Boom[y+1][x] = Xblank;
       Boom[y+1][x+1] = Xblank;
+#if 0
+      play_element_sound(x, y, SAMPLE_boom, element);
+#endif
       goto loop;
 
     case Xboom_android:
+#if 0
+      play_element_sound(x, y, SAMPLE_boom, Xandroid);
+#endif
     case Xboom_1:
       Next[y][x] = Xboom_2;
+#if 1
       play_sound(x, y, SAMPLE_boom);
+#endif
       goto loop;
 
     case Xboom_2: