added creating engine snapshots when using mouse click events
[rocksndiamonds.git] / src / game.c
index 859cf24e4cfb6812f03c2017c17872fa7a82cf0c..8b77ddef674f65d232e0c968c5e4c5ef9529870f 100644 (file)
@@ -11200,6 +11200,15 @@ static void CheckSaveEngineSnapshot(struct PlayerInfo *player)
     if (!player->is_dropping)
       player->was_dropping = FALSE;
   }
+
+  static struct MouseActionInfo mouse_action_last = { 0 };
+  struct MouseActionInfo mouse_action = player->effective_mouse_action;
+  boolean new_released = (!mouse_action.button && mouse_action_last.button);
+
+  if (new_released)
+    CheckSaveEngineSnapshotToList();
+
+  mouse_action_last = mouse_action;
 }
 
 static void CheckSingleStepMode(struct PlayerInfo *player)
@@ -11210,7 +11219,8 @@ static void CheckSingleStepMode(struct PlayerInfo *player)
        player stopped moving after one tile (or never starts moving at all) */
     if (!player->is_moving &&
        !player->is_pushing &&
-       !player->is_dropping_pressed)
+       !player->is_dropping_pressed &&
+       !player->effective_mouse_action.button)
       TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
   }
 
@@ -11661,9 +11671,8 @@ static void GameActionsExt(void)
     byte mapped_action[MAX_PLAYERS];
 
 #if DEBUG_PLAYER_ACTIONS
-    Print(":::");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
 #endif
 
     for (i = 0; i < MAX_PLAYERS; i++)
@@ -11673,19 +11682,18 @@ static void GameActionsExt(void)
       stored_player[i].effective_action = mapped_action[i];
 
 #if DEBUG_PLAYER_ACTIONS
-    Print(" =>");
+    DebugContinued("", "=> ");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
-    Print("\n");
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
+    DebugContinued("game:playing:player", "\n");
 #endif
   }
 #if DEBUG_PLAYER_ACTIONS
   else
   {
-    Print(":::");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
-    Print("\n");
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
+    DebugContinued("game:playing:player", "\n");
   }
 #endif
 #endif