rnd-20010120-5-src
authorHolger Schemel <info@artsoft.org>
Sat, 20 Jan 2001 20:13:03 +0000 (21:13 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:35:52 +0000 (10:35 +0200)
src/game.c
src/tools.c
src/tools.h

index 7fa685050df85dd100f8e5e026387703ee7487f0..a3dd01dfb41705ef8c2d743d0cb433a26c57c6f5 100644 (file)
@@ -1201,20 +1201,12 @@ void RemoveMovingField(int x, int y)
        Feld[oldx][oldy] == EL_MAGIC_WALL_EMPTYING ||
        Feld[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTYING ||
        Feld[oldx][oldy] == EL_AMOEBA_DRIPPING))
-  {
-    Feld[oldx][oldy] = (Feld[oldx][oldy] == EL_QUICKSAND_EMPTYING ?
-                       EL_MORAST_LEER :
-                       Feld[oldx][oldy] == EL_MAGIC_WALL_EMPTYING ?
-                       EL_MAGIC_WALL_EMPTY :
-                       Feld[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTYING ?
-                       EL_MAGIC_WALL_BD_EMPTY :
-                       Feld[oldx][oldy] == EL_AMOEBA_DRIPPING ?
-                       EL_AMOEBE_NASS : 0);
-    Store[oldx][oldy] = Store2[oldx][oldy] = 0;
-  }
+    Feld[oldx][oldy] = get_next_element(Feld[oldx][oldy]);
   else
     Feld[oldx][oldy] = EL_LEERRAUM;
 
+  Store[oldx][oldy] = Store2[oldx][oldy] = 0;
+
   Feld[newx][newy] = EL_LEERRAUM;
   MovPos[oldx][oldy] = MovDir[oldx][oldy] = MovDelay[oldx][oldy] = 0;
   MovPos[newx][newy] = MovDir[newx][newy] = MovDelay[newx][newy] = 0;
@@ -2999,58 +2991,53 @@ void ContinueMoving(int x, int y)
 
     if (element == EL_QUICKSAND_FILLING)
     {
-      element = Feld[newx][newy] = EL_MORAST_VOLL;
+      element = Feld[newx][newy] = get_next_element(element);
       Store[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_QUICKSAND_EMPTYING)
     {
-      Feld[x][y] = EL_MORAST_LEER;
+      Feld[x][y] = get_next_element(element);
       element = Feld[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_MAGIC_WALL_FILLING)
     {
-      element = Feld[newx][newy] =
-       (game.magic_wall_active ? EL_MAGIC_WALL_FULL : EL_MAGIC_WALL_DEAD);
+      element = Feld[newx][newy] = get_next_element(element);
+      if (!game.magic_wall_active)
+       element = Feld[newx][newy] = EL_MAGIC_WALL_DEAD;
       Store[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_MAGIC_WALL_EMPTYING)
     {
-      Feld[x][y] = (game.magic_wall_active ? EL_MAGIC_WALL_EMPTY :
-                   EL_MAGIC_WALL_DEAD);
+      Feld[x][y] = get_next_element(element);
+      if (!game.magic_wall_active)
+       Feld[x][y] = EL_MAGIC_WALL_DEAD;
       element = Feld[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_MAGIC_WALL_BD_FILLING)
     {
-      element = Feld[newx][newy] =
-       (game.magic_wall_active ? EL_MAGIC_WALL_BD_FULL :
-        EL_MAGIC_WALL_BD_DEAD);
+      element = Feld[newx][newy] = get_next_element(element);
+      if (!game.magic_wall_active)
+       element = Feld[newx][newy] = EL_MAGIC_WALL_BD_DEAD;
       Store[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_MAGIC_WALL_BD_EMPTYING)
     {
-      Feld[x][y] = (game.magic_wall_active ? EL_MAGIC_WALL_BD_EMPTY :
-                   EL_MAGIC_WALL_BD_DEAD);
+      Feld[x][y] = get_next_element(element);
+      if (!game.magic_wall_active)
+       Feld[x][y] = EL_MAGIC_WALL_BD_DEAD;
       element = Feld[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (element == EL_AMOEBA_DRIPPING)
     {
-      Feld[x][y] = EL_AMOEBE_NASS;
+      Feld[x][y] = get_next_element(element);
       element = Feld[newx][newy] = Store[x][y];
-      Store[x][y] = 0;
     }
     else if (Store[x][y] == EL_SALZSAEURE)
     {
-      Store[x][y] = 0;
-      Feld[newx][newy] = EL_SALZSAEURE;
-      element = EL_SALZSAEURE;
+      element = Feld[newx][newy] = EL_SALZSAEURE;
     }
 
+    Store[x][y] = 0;
     MovPos[x][y] = MovDir[x][y] = MovDelay[x][y] = 0;
     MovDelay[newx][newy] = 0;
 
index e1ec84bd480dd9a172ed29da0b54275b99d73613..b1c832c04e6f839302880dc74e8c9f30c04d5bc3 100644 (file)
@@ -2356,6 +2356,22 @@ static void HandleToolButtons(struct GadgetInfo *gi)
   request_gadget_id = gi->custom_id;
 }
 
+int get_next_element(int element)
+{
+  switch(element)
+  {
+    case EL_QUICKSAND_FILLING:         return EL_MORAST_VOLL;
+    case EL_QUICKSAND_EMPTYING:                return EL_MORAST_LEER;
+    case EL_MAGIC_WALL_FILLING:                return EL_MAGIC_WALL_FULL;
+    case EL_MAGIC_WALL_EMPTYING:       return EL_MAGIC_WALL_EMPTY;
+    case EL_MAGIC_WALL_BD_FILLING:     return EL_MAGIC_WALL_BD_FULL;
+    case EL_MAGIC_WALL_BD_EMPTYING:    return EL_MAGIC_WALL_BD_EMPTY;
+    case EL_AMOEBA_DRIPPING:           return EL_AMOEBE_NASS;
+
+    default:                           return element;
+  }
+}
+
 int el2gfx(int element)
 {
   switch(element)
index cf4c37063ea3ac088003e63dd633c0915a280f04..cb159f174a0aa03e2ba9b9dbf122fa263a89e32c 100644 (file)
@@ -111,6 +111,7 @@ int ReadPixel(DrawBuffer *, int, int);
 
 void CreateToolButtons();
 
+int get_next_element(int);
 int el2gfx(int);
 
 #endif /* TOOLS_H */