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>;
121 static auto GetNPSVectorForType(
const NoteData& nd,
122 const std::vector<float>& etaner,
123 const std::vector<int>& nerv,
125 const TapNoteType tnt) -> std::vector<int>;
127 auto GetNPSPerMeasure(
const NoteData& nd,
128 const std::vector<float>& etaner,
129 const std::vector<int>& nerv,
130 float rate) -> std::vector<float>;
136 static auto GetCNPSVector(
const NoteData& nd,
137 const std::vector<int>& nerv,
138 const std::vector<float>& etaner,
140 float rate) -> std::vector<int>;
142 auto GetHash() const ->
unsigned;
143 void GetNoteData(
NoteData& noteDataOut) const;
144 auto GetNoteData() const ->
NoteData;
145 void SetNoteData(const
NoteData& noteDataNew) const;
146 void SetSMNoteData(const std::
string& notes_comp);
147 void GetSMNoteData(std::
string& notes_comp_out) const;
161 void GetETTNoteData(std::
string& notes_comp_out) const;
163 void CalculateRadarValues();
184 auto GetChartKey() const -> const std::
string& {
return ChartKey; }
185 std::vector<float> dummy = { 0.F, 0.F, 0.F, 0.F, 0.F, 0.F, 0.F, 0.F };
186 std::vector<std::vector<float>> diffByRate = {
187 dummy, dummy, dummy, dummy, dummy, dummy, dummy,
188 dummy, dummy, dummy, dummy, dummy, dummy, dummy,
189 dummy, dummy, dummy, dummy, dummy, dummy, dummy
191 void SetChartKey(
const std::string& k) { ChartKey = k; }
192 void SetAllMSD(
const std::vector<std::vector<float>>& msd)
196 auto GetAllMSD() const -> std::vector<std::vector<
float>>
200 auto SortSkillsetsAtRate(
float x,
bool includeoverall)
201 -> std::vector<std::pair<Skillset, float>>;
203 void CalcEtternaMetadata(
Calc* calc =
nullptr);
204 auto DoATestThing(
float ev, Skillset ss,
float rate,
Calc* calc) -> float;
205 void GetCalcDebugOutput();
206 std::vector<std::vector<std::vector<std::vector<float>>>>
208 void UnloadCalcDebugOutput();
210 float firstsecond = 0.F;
211 float lastsecond = 0.F;
215 auto IsRecalcValid() -> bool;
217 auto GetMSD(
float rate,
int ss)
const ->
float
219 return GetMSD(rate,
static_cast<Skillset
>(ss));
221 auto GetMSD(
float rate, Skillset ss)
const -> float;
234 auto IsPlayableForCurrentGame() const ->
bool;
236 auto GetMusicPath() const
237 -> const std::
string;
238 auto GetMusicFile() const
239 -> const std::
string&;
240 void SetMusicFile(const std::
string& file);
241 auto GetPreviewMusicPath() const -> const std::
string;
244 void PushSelf(lua_State* L);
246 StepsType m_StepsType;
253 std::vector<
NoteInfo> serializenotedatacache;
257 void SetDisplayBPM(const DisplayBPM type) { this->displayBPMType = type; }
258 auto GetDisplayBPM() const -> DisplayBPM {
return this->displayBPMType; }
259 void SetMinBPM(
const float f) { this->specifiedBPMMin = f; }
260 auto GetMinBPM() const ->
float {
return this->specifiedBPMMin; }
261 void SetMaxBPM(
const float f) { this->specifiedBPMMax = f; }
262 void SetFirstSecond(
const float f) { this->firstsecond = f; }
263 void SetLastSecond(
const float f) { this->lastsecond = f; }
264 auto GetMaxBPM() const ->
float {
return this->specifiedBPMMax; }
266 bool bIgnoreCurrentRate =
false)
const;
271 return (lastsecond - firstsecond) / rate;
274 auto Getdebugstrings() ->
const std::vector<std::string>&
278 auto IsSkillsetHighestOfChart(Skillset skill,
float rate) -> bool;
280 auto IsFavorited() const ->
bool {
return isFavorited; }
281 auto SetFavorited(
bool b) ->
void { isFavorited = b; }
282 auto HasGoal() const ->
bool {
return hasGoal; }
283 auto SetHasGoal(
bool b) ->
void { hasGoal = b; }
284 auto IsPermaMirror() const ->
bool {
return isPermamirror; }
285 auto SetPermaMirror(
bool b) ->
void { isPermamirror = b; }
288 std::string ChartKey =
"";
289 struct UniquePtrNoteData {
290 std::unique_ptr<NoteData> p;
291 UniquePtrNoteData(): p(std::make_unique<
NoteData>()) { }
292 UniquePtrNoteData(UniquePtrNoteData& rhs) {
293 p = rhs.p ? std::make_unique<NoteData>(*rhs.p) : nullptr;
295 UniquePtrNoteData &operator=(
const UniquePtrNoteData& rhs) {
296 p = rhs.p ? std::make_unique<NoteData>(*rhs.p) : nullptr;
299 NoteData *operator->() {
return &*p; }
300 NoteData &operator*() {
return *p; }
305 mutable UniquePtrNoteData m_pNoteData;
306 mutable bool m_bNoteDataIsFilled;
307 mutable std::string m_sNoteDataCompressed;
310 std::string m_sFilename;
314 std::string m_MusicFile;
317 ProfileSlot m_LoadedFromProfile;
322 mutable unsigned m_iHash;
325 std::string m_sDescription;
327 std::string m_sChartStyle;
329 Difficulty m_Difficulty;
335 bool m_bAreCachedRadarValuesJustLoaded;
337 std::string m_sCredit;
339 std::string chartName;
341 DisplayBPM displayBPMType;
343 float specifiedBPMMin;
347 float specifiedBPMMax;
349 bool hasGoal =
false;
350 bool isFavorited =
false;
351 bool isPermamirror =
false;
353 bool m_bDuplicateDifficulty =
false;
354 std::vector<std::string> debugstrings;