From 0304b124ed487944d1166e1b442316ef01a7708f Mon Sep 17 00:00:00 2001 From: sonicfind <52436993+sonicfind@users.noreply.github.com> Date: Sat, 22 Aug 2020 19:59:14 -0400 Subject: [PATCH] recording: Recording mode-based refactors * Recording mode enum, NoneActive -> NotActive * Changed IsMode method names and added an IsRecording method. * Add methods designated to setting a recording to a certain mode. Co-authored-by: Tyler Wilding --- pcsx2/Recording/InputRecording.cpp | 40 +++++++++++++++------- pcsx2/Recording/InputRecording.h | 18 +++++++--- pcsx2/Recording/InputRecordingControls.cpp | 14 ++++---- pcsx2/gui/AppMain.cpp | 2 +- pcsx2/gui/FrameForGS.cpp | 2 +- pcsx2/gui/MainMenuClicks.cpp | 4 +-- 6 files changed, 52 insertions(+), 28 deletions(-) diff --git a/pcsx2/Recording/InputRecording.cpp b/pcsx2/Recording/InputRecording.cpp index 15517d209c..af2bc36331 100644 --- a/pcsx2/Recording/InputRecording.cpp +++ b/pcsx2/Recording/InputRecording.cpp @@ -39,7 +39,7 @@ void SaveStateBase::InputRecordingFreeze() Freeze(g_FrameCount); #ifndef DISABLE_RECORDING - if (g_InputRecording.IsRecordingActive()) + if (g_InputRecording.IsActive()) { // Explicitly set the frame change tracking variable as to not // detect loading a savestate as a frame being drawn @@ -73,7 +73,6 @@ void SaveStateBase::InputRecordingFreeze() g_InputRecording.SetFrameCounter(newFrameCounter); } } - // Loading a save-state is an asynchronous task, if we are playing a recording // that starts from a savestate (not power-on) and the starting (pcsx2 internal) frame // marker has not been set (which comes from the save-state), we initialize it. @@ -127,7 +126,7 @@ void InputRecording::ControllerInterrupt(u8 &data, u8 &port, u16 &bufCount, u8 b } // We do not want to record or save the first two bytes in the data returned from the PAD plugin - if (!fInterruptFrame || state == InputRecordingMode::NoneActive || bufCount < 3) + if (!fInterruptFrame || state == InputRecordingMode::NotActive || bufCount < 3) { return; } @@ -177,9 +176,9 @@ bool InputRecording::IsInterruptFrame() return fInterruptFrame; } -bool InputRecording::IsRecordingActive() +bool InputRecording::IsActive() { - return state != InputRecordingMode::NoneActive; + return state != InputRecordingMode::NotActive; } bool InputRecording::IsSavestateInitializing() @@ -187,9 +186,14 @@ bool InputRecording::IsSavestateInitializing() return savestateInitializing; } -bool InputRecording::IsRecordingReplaying() +bool InputRecording::IsReplaying() { - return IsRecordingActive() && state == InputRecordingMode::Replaying; + return state == InputRecordingMode::Replaying; +} + +bool InputRecording::IsRecording() +{ + return state == InputRecordingMode::Recording; } wxString InputRecording::RecordingModeTitleSegment() @@ -208,17 +212,27 @@ wxString InputRecording::RecordingModeTitleSegment() } } +void InputRecording::SetToRecordMode() +{ + state = InputRecordingMode::Recording; + recordingConLog("[REC]: Record mode ON.\n"); +} + +void InputRecording::SetToReplayMode() +{ + state = InputRecordingMode::Replaying; + recordingConLog("[REC]: Replay mode ON.\n"); +} + void InputRecording::RecordModeToggle() { if (state == InputRecordingMode::Replaying) { - state = InputRecordingMode::Recording; - recordingConLog("[REC]: Record mode ON.\n"); + SetToRecordMode(); } else if (state == InputRecordingMode::Recording) { - state = InputRecordingMode::Replaying; - recordingConLog("[REC]: Replay mode ON.\n"); + SetToReplayMode(); } } @@ -247,7 +261,7 @@ void InputRecording::Stop() frameCounter = 0; startingFrame = 0; savestateInitializing = false; - state = InputRecordingMode::NoneActive; + state = InputRecordingMode::NotActive; if (inputRecordingData.Close()) { recordingConLog(L"[REC]: InputRecording Recording Stopped.\n"); @@ -281,7 +295,7 @@ bool InputRecording::Create(wxString FileName, bool fromSaveState, wxString auth bool InputRecording::Play(wxString fileName) { - if (IsRecordingActive()) + if (IsActive()) Stop(); if (!inputRecordingData.OpenExisting(fileName)) diff --git a/pcsx2/Recording/InputRecording.h b/pcsx2/Recording/InputRecording.h index 243a9c1846..94d67a45c1 100644 --- a/pcsx2/Recording/InputRecording.h +++ b/pcsx2/Recording/InputRecording.h @@ -41,7 +41,7 @@ public: bool IsInterruptFrame(); // If there is currently an input recording being played back or actively being recorded - bool IsRecordingActive(); + bool IsActive(); // Whether or not the recording's initial save state has yet to be loaded or saved and // the rest of the recording can be initialized @@ -49,11 +49,20 @@ public: bool IsSavestateInitializing(); // If there is currently an input recording being played back - bool IsRecordingReplaying(); + bool IsReplaying(); + + // If there are inputs currently being recorded to a file + bool IsRecording(); // String representation of the current recording mode to be interpolated into the title wxString RecordingModeTitleSegment(); + // Sets input recording to Record Mode + void SetToRecordMode(); + + // Sets input recording to Replay Mode + void SetToReplayMode(); + // Switches between recording and replaying the active input recording file void RecordModeToggle(); @@ -78,7 +87,7 @@ public: private: enum class InputRecordingMode { - NoneActive, + NotActive, Recording, Replaying, }; @@ -88,8 +97,9 @@ private: InputRecordingFile inputRecordingData; bool savestateInitializing = false; u32 startingFrame = 0; - InputRecordingMode state = InputRecording::InputRecordingMode::NoneActive; u32 frameCounter = 0; + InputRecordingMode state = InputRecording::InputRecordingMode::NotActive; + // Resolve the name and region of the game currently loaded using the GameDB // If the game cannot be found in the DB, the fallback is the ISO filename diff --git a/pcsx2/Recording/InputRecordingControls.cpp b/pcsx2/Recording/InputRecordingControls.cpp index fffbf15df2..8dd629db02 100644 --- a/pcsx2/Recording/InputRecordingControls.cpp +++ b/pcsx2/Recording/InputRecordingControls.cpp @@ -54,7 +54,7 @@ void InputRecordingControls::HandleFrameAdvanceAndPausing() return; } - if (g_InputRecording.IsRecordingReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) + if (g_InputRecording.IsReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) { pauseEmulation = true; } @@ -86,9 +86,9 @@ void InputRecordingControls::ResumeCoreThreadIfStarted() void InputRecordingControls::FrameAdvance() { - if (g_InputRecording.IsRecordingReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) + if (g_InputRecording.IsReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) { - g_InputRecording.RecordModeToggle(); + g_InputRecording.SetToRecordMode(); return; } frameAdvanceMarker = g_InputRecording.GetFrameCounter(); @@ -123,9 +123,9 @@ void InputRecordingControls::PauseImmediately() void InputRecordingControls::Resume() { - if (g_InputRecording.IsRecordingReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) + if (g_InputRecording.IsReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) { - g_InputRecording.RecordModeToggle(); + g_InputRecording.SetToRecordMode(); return; } pauseEmulation = false; @@ -139,9 +139,9 @@ void InputRecordingControls::SetFrameCountTracker(u32 newFrame) void InputRecordingControls::TogglePause() { - if (pauseEmulation && g_InputRecording.IsRecordingReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) + if (pauseEmulation && g_InputRecording.IsReplaying() && g_InputRecording.GetFrameCounter() >= g_InputRecording.GetInputRecordingData().GetTotalFrames()) { - g_InputRecording.RecordModeToggle(); + g_InputRecording.SetToRecordMode(); return; } pauseEmulation = !pauseEmulation; diff --git a/pcsx2/gui/AppMain.cpp b/pcsx2/gui/AppMain.cpp index cc997a3403..13cbab529d 100644 --- a/pcsx2/gui/AppMain.cpp +++ b/pcsx2/gui/AppMain.cpp @@ -1059,7 +1059,7 @@ void Pcsx2App::OnProgramLogClosed( wxWindowID id ) void Pcsx2App::OnMainFrameClosed( wxWindowID id ) { #ifndef DISABLE_RECORDING - if (g_InputRecording.IsRecordingActive()) + if (g_InputRecording.IsActive()) { g_InputRecording.Stop(); } diff --git a/pcsx2/gui/FrameForGS.cpp b/pcsx2/gui/FrameForGS.cpp index ec3612b2b5..be19ba7a90 100644 --- a/pcsx2/gui/FrameForGS.cpp +++ b/pcsx2/gui/FrameForGS.cpp @@ -732,7 +732,7 @@ void GSFrame::OnUpdateTitle( wxTimerEvent& evt ) #ifndef DISABLE_RECORDING wxString title; wxString movieMode; - if (g_InputRecording.IsRecordingActive()) + if (g_InputRecording.IsActive()) { title = templates.RecordingTemplate; title.Replace(L"${frame}", pxsFmt(L"%d", g_InputRecording.GetFrameCounter())); diff --git a/pcsx2/gui/MainMenuClicks.cpp b/pcsx2/gui/MainMenuClicks.cpp index 666d6130db..0f428561d0 100644 --- a/pcsx2/gui/MainMenuClicks.cpp +++ b/pcsx2/gui/MainMenuClicks.cpp @@ -529,7 +529,7 @@ void MainEmuFrame::Menu_EnableRecordingTools_Click(wxCommandEvent& event) else { //Properly close any currently loaded recording file before disabling - if (g_InputRecording.IsRecordingActive()) + if (g_InputRecording.IsActive()) Menu_Recording_Stop_Click(event); GetMenuBar()->Remove(TopLevelMenu_InputRecording); // Always turn controller logs off, but never turn it on by default @@ -912,7 +912,7 @@ void MainEmuFrame::Menu_Recording_Play_Click(wxCommandEvent &event) } wxString path = openFileDialog.GetPath(); - const bool recordingLoaded = g_InputRecording.IsRecordingActive(); + const bool recordingLoaded = g_InputRecording.IsActive(); if (!g_InputRecording.Play(path)) { if (recordingLoaded)