rnd-20070917-1-src
authorHolger Schemel <info@artsoft.org>
Mon, 17 Sep 2007 00:49:01 +0000 (02:49 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:56:20 +0000 (10:56 +0200)
src/conftime.h
src/game.c
src/game_em/export.h
src/game_em/synchro_2.c
src/libgame/system.h
src/tools.c

index e57d99c841cab2c3659dddb3274e77d383f46c06..73469ff514e9171a42a82d949541bde48cebaca5 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-09-16 00:50"
+#define COMPILE_DATE_STRING "2007-09-17 02:41"
index 30a12e54269a8a7b305e93d6ff4205c8957bfc23..88bca397acab2ff7622569e1dbe4056d7d36052c 100644 (file)
@@ -8662,7 +8662,7 @@ void ContinueMoving(int x, int y)
   }
 
 #if USE_NEW_CUSTOM_VALUE
-    CustomValue[newx][newy] = CustomValue[x][y];
+  CustomValue[newx][newy] = CustomValue[x][y];
 #endif
 
   ChangeDelay[x][y] = 0;
index 209872535a9ab391758c7633f247e15d7620ae49..05e7ae65c5d8ce7c5ccec27055d7d3c32d00a0e1 100644 (file)
@@ -353,6 +353,12 @@ enum
   Xsand_stonesand_2,
   Xsand_stonesand_3,
   Xsand_stonesand_4,
+
+#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS
+  Xsand_stonesand_quickout_1,
+  Xsand_stonesand_quickout_2,
+#endif
+
   Xsand_stoneout_1,
   Xsand_stoneout_2,
   Xsand_sandstone_1,
index 7657bf8ddfda096fbbf52f131f4bd540900ec8a8..82ca79b64730c41c3bad652cbb196a3d5c6c68b5 100644 (file)
@@ -4716,6 +4716,16 @@ void synchro_2(void)
        case Xacid_6:
        case Xacid_7:
        case Xacid_8:
+#if 1
+         Cave[y][x] = Xsand_stonesand_quickout_1;
+         if (Cave[y][x+1] == Xblank)
+           Cave[y][x+1] = Yacid_splash_eB;
+         if (Cave[y][x-1] == Xblank)
+           Cave[y][x-1] = Yacid_splash_wB;
+         Next[y][x] = Xsand_stonesand_quickout_2;
+         play_element_sound(x, y, SAMPLE_acid, Xacid_1);
+         goto loop;
+#else
          Cave[y][x] = Xsand_stonesand_3;
          if (Cave[y][x+1] == Xblank)
            Cave[y][x+1] = Yacid_splash_eB;
@@ -4724,15 +4734,24 @@ void synchro_2(void)
          Next[y][x] = Xsand_stonesand_4;
          play_element_sound(x, y, SAMPLE_acid, Xacid_1);
          goto loop;
+#endif
 
        case Xblank:
        case Yacid_splash_eB:
        case Yacid_splash_wB:
+#if 1
+         Cave[y][x] = Xsand_stonesand_quickout_1;
+         Cave[y+1][x] = Xsand_stoneout_1;
+         Next[y][x] = Xsand_stonesand_quickout_2;
+         Next[y+1][x] = Xsand_stoneout_2;
+         goto loop;
+#else
          Cave[y][x] = Xsand_stonesand_3;
          Cave[y+1][x] = Xsand_stoneout_1;
          Next[y][x] = Xsand_stonesand_4;
          Next[y+1][x] = Xsand_stoneout_2;
          goto loop;
+#endif
 
        case Xsand:
          Cave[y][x] = Xsand_stonesand_1;
@@ -4777,6 +4796,16 @@ void synchro_2(void)
       Next[y][x] = Xsand;
       goto loop;
 
+#if 1
+    case Xsand_stonesand_quickout_1:
+      Next[y][x] = Xsand_stonesand_quickout_2;
+      goto loop;
+
+    case Xsand_stonesand_quickout_2:
+      Next[y][x] = Xsand;
+      goto loop;
+#endif
+
     case Xsand_stoneout_1:
       Next[y][x] = Xsand_stoneout_2;
       goto loop;
index db3c511833ca2d1cb4bab202bb9709f9b363d74b..59522dc6269213db49fdb4c50794527b0cd36d5e 100644 (file)
@@ -858,6 +858,9 @@ struct SetupInfo
   boolean override_level_graphics;
   boolean override_level_sounds;
   boolean override_level_music;
+#if 0
+  boolean override_classic_artwork;
+#endif
 
   struct SetupEditorInfo editor;
   struct SetupEditorCascadeInfo editor_cascade;
index 7e2c3752d3a63f193abf5f86c2d66bdb1d659797..23be2acbf3a7e03f1171bbbe36bcbb9254d65a81 100644 (file)
@@ -4813,6 +4813,14 @@ em_object_mapping_list[] =
     Xsand_stonesand_4,                 FALSE,  FALSE,
     EL_QUICKSAND_EMPTYING,             -1, -1
   },
+  {
+    Xsand_stonesand_quickout_1,                FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
+  },
+  {
+    Xsand_stonesand_quickout_2,                FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
+  },
 #else
   {
     Xsand_stonesand_1,                 FALSE,  FALSE,
@@ -6024,7 +6032,10 @@ inline static boolean check_linear_animation_EM(int tile)
   switch (tile)
   {
     case Xsand_stonesand_1:
+    case Xsand_stonesand_quickout_1:
     case Xsand_sandstone_1:
+    case Xsand_stonein_1:
+    case Xsand_stoneout_1:
     case Xboom_1:
     case Xdynamite_1:
     case Ybug_w_n:
@@ -6117,10 +6128,29 @@ void SetGfxAnimation_EM(struct GraphicInfo_EM *g_em,
                             action == ACTION_FILLING ||
                             action == ACTION_EMPTYING);
 
+#if 0
+  if (tile == Xsand_stonesand_1 ||
+      tile == Xsand_stonesand_2 ||
+      tile == Xsand_stonesand_3 ||
+      tile == Xsand_stonesand_4)
+    printf("::: 1: quicksand frame %d [%d]\n", GfxFrame[x][y], tile);
+#endif
+
+#if 1
+  if ((action_removing || check_linear_animation_EM(tile)) && frame_em == 0)
+  {
+    GfxFrame[x][y] = 0;
+
+    // printf("::: resetting... [%d]\n", tile);
+  }
+#else
   if (action_removing || check_linear_animation_EM(tile))
   {
     GfxFrame[x][y] = frame_em;
+
+    // printf("::: resetting... [%d]\n", tile);
   }
+#endif
   else if (action_moving)
   {
     boolean is_backside = object_mapping[tile].is_backside;
@@ -6145,8 +6175,21 @@ void SetGfxAnimation_EM(struct GraphicInfo_EM *g_em,
   else
   {
     GfxFrame[x][y]++;
+
+    /* special case: animation for Xsand_stonesand_quickout_1/2 twice as fast */
+    if (tile == Xsand_stonesand_quickout_1 ||
+       tile == Xsand_stonesand_quickout_2)
+      GfxFrame[x][y]++;
   }
 
+#if 0
+  if (tile == Xsand_stonesand_1 ||
+      tile == Xsand_stonesand_2 ||
+      tile == Xsand_stonesand_3 ||
+      tile == Xsand_stonesand_4)
+    printf("::: 2: quicksand frame %d [%d]\n", GfxFrame[x][y], tile);
+#endif
+
 #if 1
   if (graphic_info[graphic].anim_global_sync)
     sync_frame = FrameCounter;