added and adjusted source files for Mirror Magic game engine
[rocksndiamonds.git] / src / game.c
index a3ad6f14842b48d363b52286776b2ffa97ffd748..13f264e8614f3c3a9cde745e95c2de62096dae69 100644 (file)
@@ -2702,6 +2702,9 @@ static void InitGameEngine()
   game_em.use_single_button =
     (game.engine_version > VERSION_IDENT(4,0,0,2));
 
+  game_em.use_snap_key_bug =
+    (game.engine_version < VERSION_IDENT(4,0,1,0));
+
   /* ---------------------------------------------------------------------- */
 
   /* set maximal allowed number of custom element changes per game frame */
@@ -3057,6 +3060,11 @@ static void InitGameEngine()
      strEqual(setup.engine_snapshot_mode, STR_SNAPSHOT_MODE_EVERY_COLLECT) ?
      SNAPSHOT_MODE_EVERY_COLLECT : SNAPSHOT_MODE_OFF);
   game.snapshot.save_snapshot = FALSE;
+
+  /* ---------- initialize level time for Supaplex engine ------------------- */
+  /* Supaplex levels with time limit currently unsupported -- should be added */
+  if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
+    level.time = 0;
 }
 
 int get_num_special_action(int element, int action_first, int action_last)
@@ -4596,6 +4604,10 @@ void InitPlayerGfxAnimation(struct PlayerInfo *player, int action, int dir)
 
 static void ResetGfxFrame(int x, int y)
 {
+  // profiling showed that "autotest" spends 10~20% of its time in this function
+  if (DrawingDeactivatedField())
+    return;
+
   int element = Feld[x][y];
   int graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]);