From b4a6b06fba12b3fa86de0d5f604df3ee51c68fd0 Mon Sep 17 00:00:00 2001 From: feos Date: Sat, 28 Oct 2023 13:35:01 +0300 Subject: [PATCH] tastudio: disable rec mode when drawing inputs see #2144 --- .../tools/TAStudio/TAStudio.ListView.cs | 9 +++++++ .../tools/TAStudio/TAStudio.cs | 24 ++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index bca7d75c71..fd3f9dbdea 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -425,6 +425,7 @@ namespace BizHawk.Client.EmuHawk } _triggerAutoRestore = true; + TastudioPlayMode(true); JumpToGreenzone(); } @@ -597,6 +598,7 @@ namespace BizHawk.Client.EmuHawk _axisPaintState = CurrentTasMovie.GetAxisState(frame, buttonName); _triggerAutoRestore = true; + TastudioPlayMode(true); return; } } @@ -666,6 +668,7 @@ namespace BizHawk.Client.EmuHawk CurrentTasMovie.SetBoolStates(firstSel, lastSel - firstSel + 1, buttonName, !allPressed); _boolPaintState = CurrentTasMovie.BoolIsPressed(lastSel, buttonName); _triggerAutoRestore = true; + TastudioPlayMode(true); RefreshDialog(); } #if false // to match previous behaviour @@ -681,6 +684,7 @@ namespace BizHawk.Client.EmuHawk CurrentTasMovie.ToggleBoolState(TasView.CurrentCell.RowIndex.Value, buttonName); _boolPaintState = CurrentTasMovie.BoolIsPressed(frame, buttonName); _triggerAutoRestore = true; + TastudioPlayMode(true); RefreshDialog(); } } @@ -809,6 +813,7 @@ namespace BizHawk.Client.EmuHawk { AxisEditRow = -1; _triggerAutoRestore = true; + TastudioPlayMode(true); JumpToGreenzone(); DoTriggeredAutoRestoreIfNeeded(); RefreshDialog(); @@ -1122,6 +1127,7 @@ namespace BizHawk.Client.EmuHawk if (_rightClickAlt || _rightClickControl || _rightClickShift) { _triggerAutoRestore = true; + TastudioPlayMode(true); JumpToGreenzone(); _suppressContextMenu = true; } @@ -1152,6 +1158,7 @@ namespace BizHawk.Client.EmuHawk if (!_triggerAutoRestore) { + TastudioPlayMode(true); JumpToGreenzone(); } } @@ -1358,6 +1365,7 @@ namespace BizHawk.Client.EmuHawk { CurrentTasMovie.SetAxisState(_axisEditRow, _axisEditColumn, _axisBackupState); _triggerAutoRestore = Emulator.Frame > _axisEditRow; + TastudioPlayMode(true); JumpToGreenzone(); DoTriggeredAutoRestoreIfNeeded(); } @@ -1431,6 +1439,7 @@ namespace BizHawk.Client.EmuHawk if (value != prev) // Auto-restore { _triggerAutoRestore = Emulator.Frame > _axisEditRow; + TastudioPlayMode(true); JumpToGreenzone(); DoTriggeredAutoRestoreIfNeeded(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index ad83a15c82..e5b5fa453b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -707,20 +707,31 @@ namespace BizHawk.Client.EmuHawk loadZone.PlaceZone(CurrentTasMovie, Config); } - private void TastudioPlayMode() - { - TasPlaybackBox.RecordingMode = false; - } - private void TastudioToggleReadOnly() { TasPlaybackBox.RecordingMode ^= true; WasRecording = TasPlaybackBox.RecordingMode; // hard reset at manual click and hotkey } - private void TastudioRecordMode() + private void TastudioPlayMode(bool resetWasRecording = false) + { + TasPlaybackBox.RecordingMode = false; + + // once user started editing, rec mode is unsafe + if (resetWasRecording) + { + WasRecording = TasPlaybackBox.RecordingMode; + } + } + + private void TastudioRecordMode(bool resetWasRecording = false) { TasPlaybackBox.RecordingMode = true; + + if (resetWasRecording) + { + WasRecording = TasPlaybackBox.RecordingMode; + } } private void TastudioStopMovie() @@ -1024,6 +1035,7 @@ namespace BizHawk.Client.EmuHawk if (_triggerAutoRestore) { + TastudioPlayMode(true); // once user started editing, rec mode is unsafe DoAutoRestore(); _triggerAutoRestore = false;