fixed bug with TAS snap keys sometimes moving the player (EM engine only)
authorHolger Schemel <info@artsoft.org>
Thu, 7 Sep 2017 18:32:52 +0000 (20:32 +0200)
committerHolger Schemel <info@artsoft.org>
Thu, 7 Sep 2017 18:32:52 +0000 (20:32 +0200)
src/game_em/input.c

index 4028f19a553f692e9dc7a3541358f0ab24d27918..b2c79ac7f79e475cb4f34214bd0e897f4d6a0c62 100644 (file)
@@ -137,16 +137,27 @@ void readjoy(byte action, struct PLAYER *ply)
   if (action & JOY_BUTTON_2)
     drop = 1;
 
-  ply->joy_snap = snap;
+  /* always update drop action */
   ply->joy_drop = drop;
 
-  if (ply->joy_stick || (north | east | south | west))
+  if (ply->joy_stick || (north | east | south | west)) /* (no "| snap"!) */
   {
     ply->joy_n = north;
     ply->joy_e = east;
     ply->joy_s = south;
     ply->joy_w = west;
+
+    /* when storing last action, only update snap action with direction */
+    /* (prevents clearing direction if snapping stopped before frame 7) */
+    ply->joy_snap = snap;
   }
+
+  /* if no direction was stored before, allow setting snap to current state */
+  if (!ply->joy_n &&
+      !ply->joy_e &&
+      !ply->joy_s &&
+      !ply->joy_w)
+    ply->joy_snap = snap;
 }
 
 void SaveEngineSnapshotValues_EM()