From c0db6beb9c26b0f687144917fe271c93bc600682 Mon Sep 17 00:00:00 2001 From: Michael Votaw Date: Sun, 16 Feb 2025 15:05:39 -0600 Subject: [PATCH] We don't need to set cached nps per player individually, just parse all of it and pass it to Steps --- src/NotesLoaderSSC.cpp | 10 +++++++--- src/Steps.cpp | 28 +++++++++++----------------- src/Steps.h | 4 ++-- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/NotesLoaderSSC.cpp b/src/NotesLoaderSSC.cpp index c3404ff6c7..c3fa85a389 100644 --- a/src/NotesLoaderSSC.cpp +++ b/src/NotesLoaderSSC.cpp @@ -421,18 +421,20 @@ void SetNpsPerMeasure(StepsTagInfo& info) LOG->Warn("#NPSPERMEASURE has more sections (%zu) than possible number of players (%d)!", valuesPerPlayer.size(), NUM_PlayerNumber); } + std::vector> npsPerMeasures; for(std::size_t pn = 0; pn < valuesPerPlayer.size() && pn < NUM_PlayerNumber; pn++) { std::vector values; split(valuesPerPlayer[pn], ",", values, true); - std::vector npsPerMeasure; + std::vector npsPerMeasure; npsPerMeasure.resize(values.size()); for(std::size_t i = 0; i < values.size(); i++) { npsPerMeasure[i] = StringToFloat(values[i]); } - info.steps->SetCachedNotesPerMeasure(npsPerMeasure, static_cast(pn)); + npsPerMeasures.push_back(npsPerMeasure); } + info.steps->SetCachedNpsPerMeasure(npsPerMeasures); } else { @@ -454,6 +456,7 @@ void SetNotesPerMeasure(StepsTagInfo& info) } + std::vector> notesPerMeasures; for(std::size_t pn = 0; pn < valuesPerPlayer.size() && pn < NUM_PlayerNumber; pn++) { std::vector values; @@ -464,8 +467,9 @@ void SetNotesPerMeasure(StepsTagInfo& info) { notesPerMeasure[i] = StringToInt(values[i]); } - info.steps->SetCachedNotesPerMeasure(notesPerMeasure, static_cast(pn)); + notesPerMeasures.push_back(notesPerMeasure); } + info.steps->SetCachedNotesPerMeasure(notesPerMeasures); } else { diff --git a/src/Steps.cpp b/src/Steps.cpp index d77be6ea75..d984e71332 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -757,35 +757,29 @@ void Steps::SetCachedTechCounts( const TechCounts ts[NUM_PLAYERS] ) m_bAreCachedTechCountsValuesJustLoaded = true; } -void Steps::SetCachedNpsPerMeasure(std::vector& npsPerMeasure, PlayerNumber pn) +void Steps::SetCachedNpsPerMeasure(std::vector>& npsPerMeasure) { DeAutogen(); + m_CachedNpsPerMeasure.assign(npsPerMeasure.begin(), npsPerMeasure.end()); + m_PeakNps.clear(); - if(m_CachedNpsPerMeasure.size() <= pn) + for(std::vector n : npsPerMeasure) { - m_CachedNpsPerMeasure.resize(pn + 1); - m_PeakNps.resize(pn + 1); + std::vector::iterator peakNps = std::max_element(n.begin(), n.end()); + if(peakNps != n.end()) + { + m_PeakNps.push_back(*peakNps); + } } - m_CachedNpsPerMeasure[pn].assign(npsPerMeasure.begin(), npsPerMeasure.end()); - std::vector::iterator peakNps = std::max_element(npsPerMeasure.begin(), npsPerMeasure.end()); - if(peakNps != npsPerMeasure.end()) - { - m_PeakNps[pn] = *peakNps; - } m_AreCachedNpsPerMeasureJustLoaded = true; } -void Steps::SetCachedNotesPerMeasure(std::vector& notesPerMeasure, PlayerNumber pn) +void Steps::SetCachedNotesPerMeasure(std::vector>& notesPerMeasure) { DeAutogen(); - if(m_CachedNotesPerMeasure.size() <= pn) - { - m_CachedNotesPerMeasure.resize(pn + 1); - } - - m_CachedNotesPerMeasure[pn].assign(notesPerMeasure.begin(), notesPerMeasure.end()); + m_CachedNotesPerMeasure.assign(notesPerMeasure.begin(), notesPerMeasure.end()); m_AreCachedNotesPerMeasureJustLoaded = true; } diff --git a/src/Steps.h b/src/Steps.h index fc7534a1df..12799a987f 100644 --- a/src/Steps.h +++ b/src/Steps.h @@ -145,8 +145,8 @@ public: void SetMeter( int meter ); void SetCachedRadarValues( const RadarValues v[NUM_PLAYERS] ); void SetCachedTechCounts(const TechCounts ts[NUM_PLAYERS]); - void SetCachedNpsPerMeasure(std::vector& npsPerMeasure, PlayerNumber pn); - void SetCachedNotesPerMeasure(std::vector& notesPerMeasure, PlayerNumber pn); + void SetCachedNpsPerMeasure(std::vector>& npsPerMeasure); + void SetCachedNotesPerMeasure(std::vector>& notesPerMeasure); float PredictMeter() const; unsigned GetHash() const;