From 565e0a9d34e860ed6f72feac2c30ebb65393270c Mon Sep 17 00:00:00 2001 From: Barinade Date: Thu, 3 Oct 2019 19:07:41 -0500 Subject: [PATCH] Set up a way to load Gameplay's Notedata starting from a given Noterow --- .../Screen/Gameplay/ScreenGameplay.cpp | 51 +++++++++++++++++++ src/Etterna/Screen/Gameplay/ScreenGameplay.h | 2 + 2 files changed, 53 insertions(+) diff --git a/src/Etterna/Screen/Gameplay/ScreenGameplay.cpp b/src/Etterna/Screen/Gameplay/ScreenGameplay.cpp index ec2eb2995e..5971ccfe17 100644 --- a/src/Etterna/Screen/Gameplay/ScreenGameplay.cpp +++ b/src/Etterna/Screen/Gameplay/ScreenGameplay.cpp @@ -389,6 +389,57 @@ ScreenGameplay::~ScreenGameplay() } } +void +ScreenGameplay::SetupNoteDataFromRow(Steps* pSteps, int row) +{ + NoteData originalNoteData; + pSteps->GetNoteData(originalNoteData); + + const Style* pStyle = GAMESTATE->GetCurrentStyle(m_vPlayerInfo.m_pn); + NoteData ndTransformed; + pStyle->GetTransformedNoteDataForStyle( + m_vPlayerInfo.GetStepsAndTrailIndex(), originalNoteData, ndTransformed); + + m_vPlayerInfo.GetPlayerState()->Update(0); + + NoteDataUtil::RemoveAllButRange(ndTransformed, row, MAX_NOTE_ROW); + + // load player + { + m_vPlayerInfo.m_NoteData = ndTransformed; + NoteDataUtil::RemoveAllTapsOfType(m_vPlayerInfo.m_NoteData, + TapNoteType_AutoKeysound); + m_vPlayerInfo.m_pPlayer->Load(); + } + + // load auto keysounds + { + NoteData nd = ndTransformed; + NoteDataUtil::RemoveAllTapsExceptForType(nd, TapNoteType_AutoKeysound); + m_AutoKeysounds.Load(m_vPlayerInfo.GetStepsAndTrailIndex(), nd); + } + + { + RString sType; + switch (GAMESTATE->m_SongOptions.GetCurrent().m_SoundEffectType) { + case SoundEffectType_Off: + sType = "SoundEffectControl_Off"; + break; + case SoundEffectType_Speed: + sType = "SoundEffectControl_Speed"; + break; + case SoundEffectType_Pitch: + sType = "SoundEffectControl_Pitch"; + break; + default: + break; + } + + m_vPlayerInfo.m_SoundEffectControl.Load( + sType, m_vPlayerInfo.GetPlayerState(), &m_vPlayerInfo.m_NoteData); + } +} + void ScreenGameplay::SetupSong(int iSongIndex) { diff --git a/src/Etterna/Screen/Gameplay/ScreenGameplay.h b/src/Etterna/Screen/Gameplay/ScreenGameplay.h index 1924a08066..dcd56fc616 100644 --- a/src/Etterna/Screen/Gameplay/ScreenGameplay.h +++ b/src/Etterna/Screen/Gameplay/ScreenGameplay.h @@ -113,6 +113,8 @@ class ScreenGameplay : public ScreenWithMenuElements void RestartGameplay(); + virtual void SetupNoteDataFromRow(Steps* pSteps, int row); + virtual void InitSongQueues(); /** @brief The different game states of ScreenGameplay. */