52 void CopyFrom(
Steps* pSource, StepsType ntTo);
53 void CreateBlank(StepsType ntTo);
55 void Compress()
const;
56 void Decompress()
const;
68 auto GetChartStyle() const -> const std::
string& {
return m_sChartStyle; }
78 auto GetMeter() const ->
int {
return m_iMeter; }
81 return m_CachedRadarValues;
87 auto GetCredit() const -> const std::
string& {
return m_sCredit; }
89 auto GetChartName() const -> const std::
string& {
return chartName; }
90 void SetChartName(
const std::string& name) { this->chartName = name; }
91 void SetFilename(
const std::string& fn) { m_sFilename = fn; }
92 auto GetFilename() const -> const std::
string& {
return m_sFilename; }
93 void SetSavedToDisk(
bool b) { m_bSavedToDisk = b; }
94 auto GetSavedToDisk() const ->
bool {
return m_bSavedToDisk; }
95 void SetDifficulty(Difficulty dc)
99 void SetDescription(
const std::string& sDescription)
101 SetDifficultyAndDescription(this->
GetDifficulty(), sDescription);
103 void SetDifficultyAndDescription(Difficulty dc,
104 const std::string& sDescription);
105 void SetCredit(
const std::string& sCredit);
106 void SetChartStyle(
const std::string& sChartStyle);
107 void SetDupeDiff(
bool state) { m_bDuplicateDifficulty = state; }
108 auto IsDupeDiff() ->
bool {
return m_bDuplicateDifficulty; }
109 static auto MakeValidEditDescription(std::string& sPreferredDescription)
112 void SetLoadedFromProfile(ProfileSlot slot) { m_LoadedFromProfile = slot; }
113 void SetMeter(
int meter);
117 static auto GetNPSVector(
const NoteData& nd,
118 const std::vector<float>& etaner,
119 const std::vector<int>& nerv,
120 float rate) -> std::vector<int>;
122 auto GetNPSPerMeasure(
const NoteData& nd,
123 const std::vector<float>& etaner,
124 const std::vector<int>& nerv,
125 float rate) -> std::vector<float>;
131 static auto GetCNPSVector(
const NoteData& nd,
132 const std::vector<int>& nerv,
133 const std::vector<float>& etaner,
135 float rate) -> std::vector<int>;
137 auto GetHash() const ->
unsigned;
138 void GetNoteData(
NoteData& noteDataOut) const;
139 auto GetNoteData() const ->
NoteData;
140 void SetNoteData(const
NoteData& noteDataNew) const;
141 void SetSMNoteData(const std::
string& notes_comp);
142 void GetSMNoteData(std::
string& notes_comp_out) const;
156 void GetETTNoteData(std::
string& notes_comp_out) const;
158 void CalculateRadarValues();
179 auto GetChartKey() const -> const std::
string& {
return ChartKey; }
180 std::vector<float> dummy = { 0.F, 0.F, 0.F, 0.F, 0.F, 0.F, 0.F, 0.F };
181 std::vector<std::vector<float>> diffByRate = {
182 dummy, dummy, dummy, dummy, dummy, dummy, dummy,
183 dummy, dummy, dummy, dummy, dummy, dummy, dummy,
184 dummy, dummy, dummy, dummy, dummy, dummy, dummy
186 void SetChartKey(
const std::string& k) { ChartKey = k; }
187 void SetAllMSD(
const std::vector<std::vector<float>>& msd)
191 auto GetAllMSD() const -> std::vector<std::vector<
float>>
195 auto SortSkillsetsAtRate(
float x,
bool includeoverall)
196 -> std::vector<std::pair<Skillset, float>>;
198 void CalcEtternaMetadata(
Calc* calc =
nullptr);
199 auto DoATestThing(
float ev, Skillset ss,
float rate,
Calc* calc) -> float;
200 void GetCalcDebugOutput();
201 std::vector<std::vector<std::vector<std::vector<float>>>>
203 void UnloadCalcDebugOutput();
205 float firstsecond = 0.F;
206 float lastsecond = 0.F;
210 auto IsRecalcValid() -> bool;
212 auto GetMSD(
float rate,
int ss)
const ->
float
214 return GetMSD(rate,
static_cast<Skillset
>(ss));
216 auto GetMSD(
float rate, Skillset ss)
const -> float;
229 auto IsPlayableForCurrentGame() const ->
bool;
231 auto GetMusicPath() const
232 -> const std::
string;
233 auto GetMusicFile() const
234 -> const std::
string&;
235 void SetMusicFile(const std::
string& file);
238 void PushSelf(lua_State* L);
240 StepsType m_StepsType;
247 std::vector<
NoteInfo> serializenotedatacache;
251 void SetDisplayBPM(const DisplayBPM type) { this->displayBPMType = type; }
252 auto GetDisplayBPM() const -> DisplayBPM {
return this->displayBPMType; }
253 void SetMinBPM(
const float f) { this->specifiedBPMMin = f; }
254 auto GetMinBPM() const ->
float {
return this->specifiedBPMMin; }
255 void SetMaxBPM(
const float f) { this->specifiedBPMMax = f; }
256 void SetFirstSecond(
const float f) { this->firstsecond = f; }
257 void SetLastSecond(
const float f) { this->lastsecond = f; }
258 auto GetMaxBPM() const ->
float {
return this->specifiedBPMMax; }
260 bool bIgnoreCurrentRate =
false)
const;
265 return (lastsecond - firstsecond) / rate;
268 auto Getdebugstrings() ->
const std::vector<std::string>&
272 auto IsSkillsetHighestOfChart(Skillset skill,
float rate) -> bool;
274 auto IsFavorited() const ->
bool {
return isFavorited; }
275 auto SetFavorited(
bool b) ->
void { isFavorited = b; }
276 auto HasGoal() const ->
bool {
return hasGoal; }
277 auto SetHasGoal(
bool b) ->
void { hasGoal = b; }
278 auto IsPermaMirror() const ->
bool {
return isPermamirror; }
279 auto SetPermaMirror(
bool b) ->
void { isPermamirror = b; }
282 std::string ChartKey =
"";
283 struct UniquePtrNoteData {
284 std::unique_ptr<NoteData> p;
285 UniquePtrNoteData(): p(std::make_unique<
NoteData>()) { }
286 UniquePtrNoteData(UniquePtrNoteData& rhs) {
287 p = rhs.p ? std::make_unique<NoteData>(*rhs.p) : nullptr;
289 UniquePtrNoteData &operator=(
const UniquePtrNoteData& rhs) {
290 p = rhs.p ? std::make_unique<NoteData>(*rhs.p) : nullptr;
293 NoteData *operator->() {
return &*p; }
294 NoteData &operator*() {
return *p; }
299 mutable UniquePtrNoteData m_pNoteData;
300 mutable bool m_bNoteDataIsFilled;
301 mutable std::string m_sNoteDataCompressed;
304 std::string m_sFilename;
308 std::string m_MusicFile;
311 ProfileSlot m_LoadedFromProfile;
316 mutable unsigned m_iHash;
319 std::string m_sDescription;
321 std::string m_sChartStyle;
323 Difficulty m_Difficulty;
329 bool m_bAreCachedRadarValuesJustLoaded;
331 std::string m_sCredit;
333 std::string chartName;
335 DisplayBPM displayBPMType;
337 float specifiedBPMMin;
341 float specifiedBPMMax;
343 bool hasGoal =
false;
344 bool isFavorited =
false;
345 bool isPermamirror =
false;
347 bool m_bDuplicateDifficulty =
false;
348 std::vector<std::string> debugstrings;