rnd-20100220-1-src
[rocksndiamonds.git] / src / game_sp / DoGameStuff.c
index 27aa1c566c563625b2cb670727fc1a649258440a..81f4a9546becbef16c27058cd7d70e6998385250 100644 (file)
@@ -25,7 +25,7 @@ int subDoGameStuff()
 
   int si, cx, dx, bl;
 
-  subAnimateMurphy(MurphyPosIndex);       // move Murphy in any direction
+  subAnimateMurphy(&MurphyPosIndex);       // move Murphy in any direction
 
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   // Build a database of locations and subs-to-call of animatable fields only:
@@ -66,16 +66,67 @@ int subDoGameStuff()
     } // loop    locloop_g_22B8          ' until all animatables done
   }
 
+#if 0
+  printf("::: DoGameStuff.c: KillMurphyFlag == %d [%d]\n",
+        KillMurphyFlag, MurphyMoveCounter);
+#endif
+
   // All animations are done now
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   if (KillMurphyFlag == 1 || MurphyMoveCounter == 0)
   {
+#if 1
+    if (LeadOutCounter == 0 &&
+       !game_sp.LevelSolved &&
+       !game_sp.GameOver)
+#else
     if (LeadOutCounter == 0)
+#endif
     {
+#if 1
+      printf("::: DoGameStuff.c: killing murphy [%d] ...\n", KillMurphyFlag);
+#endif
+
       KillMurphyFlag = 0;             // no more "kill Murphy"
       ExplodeFieldSP(MurphyExplodePos);                 // Explode
       LeadOutCounter = 0x40;           // quit: start lead-out
+
+#if 1
+
+#if 1
+      printf("::: DoGameStuff.c: !!!!!!!!!! GAME OVER !!!!!!!!!!\n");
+      printf("::: [KillMurphyFlag == %d]\n", KillMurphyFlag);
+#endif
+
+#if 1
+      /* give Murphy some more time (LeadOutCounter) to reach the exit */
+#else
+      game_sp.GameOver = TRUE;
+#endif
+
+#endif
     }
+
+#if 1
+#if 0
+    printf("::: *** %d, %d, %d\n", KillMurphyFlag,
+          game_sp.LevelSolved, game_sp.GameOver);
+#endif
+
+#if 0
+    if (KillMurphyFlag == 1 &&
+       !game_sp.LevelSolved &&
+       !game_sp.GameOver)
+    {
+#if 1
+      printf("::: DoGameStuff.c: !!!!!!!!!! GAME OVER !!!!!!!!!!\n");
+#endif
+
+      game_sp.GameOver = TRUE;
+    }
+#endif
+#endif
+
   } //  loc_g_22FB: