2#include "../Models/NoteData/NoteDataStructures.h"
7#include <unordered_map>
10#if defined(MINADLL_COMPILE) && defined(_WIN32)
11#define MINACALC_API __declspec(dllexport)
20using MinaSD = std::vector<std::vector<float>>;
30static constexpr int default_interval_count = 1000;
35static constexpr int max_intervals = 100000;
42static constexpr int max_rows_for_single_interval = 50;
56static constexpr hands both_hands[num_hands] = { left_hand, right_hand };
92 float score_goal) -> std::vector<float>;
105 std::array<unsigned, num_hands> hand_col_masks = { 0U, 0U };
106 std::vector<unsigned> col_masks{};
107 std::shared_ptr<Bazoinkazoink> ulbu_in_charge;
114 void InitializeKeycountLogic();
115 std::unordered_map<unsigned, std::shared_ptr<Bazoinkazoink>> ulbu_collective{};
125 auto InitializeHands(
126 const std::vector<NoteInfo>&
NoteInfo,
128 float offset) -> bool;
135 auto Chisel(
float player_skill,
140 bool debugoutput =
false) -> float;
147 static inline void InitAdjDiff(
161 std::vector<std::array<RowInfo, max_rows_for_single_interval>>
177 std::array<std::array<std::vector<float>, NUM_CalcPatternMod>,
185 std::array<std::array<std::vector<float>, NUM_CalcDiffValue>,
209 std::array<std::array<std::vector<float>, NUM_Skillset>,
219 std::array<std::array<std::vector<float>, NUM_Skillset>,
239 std::array<std::vector<std::pair<float, float>>, num_hands>
jack_diff{};
255 std::array<float, max_rows_for_single_interval>
tc_static{};
260 std::array<float, max_rows_for_single_interval>
cj_static{};
277 std::array<std::vector<std::vector<std::vector<float>>>, num_hands>
279 std::array<std::array<std::vector<float>, NUM_Skillset>, num_hands> debugMSD{};
280 std::array<std::array<std::vector<float>, NUM_Skillset>, num_hands> debugPtLoss{};
281 std::array<std::array<std::vector<float>, NUM_Skillset>, num_hands> debugTotalPatternMod{};
285 std::array<std::array<std::vector<std::pair<float, float>>, 2>, num_hands>
333MinaSDCalc(
const std::vector<NoteInfo>&
NoteInfo,
336 const unsigned keycount,
337 Calc* calc) -> std::vector<float>;
347MinaSDCalc(
const std::vector<NoteInfo>&
NoteInfo,
348 const unsigned keycount,
349 Calc* calc) -> MinaSD;
364 const std::vector<NoteInfo>&
NoteInfo,
367 const unsigned keycount,
368 std::vector<std::vector<std::vector<std::vector<float>>>>& handInfo,
369 std::vector<std::string>& debugstrings,
373GetCalcVersion() -> int;
Main driver class for the difficulty calculator as a whole.
Definition MinaCalc.h:82
std::array< std::vector< std::array< float, 4 > >, num_hands > debugTechVals
per hand vector of arrays: techyo chaos values of [row_time, pewp, obliosis, c]
Definition MinaCalc.h:289
bool loadparams
Set true to force calc params to load outside debug mode.
Definition MinaCalc.h:101
std::array< std::array< std::vector< float >, NUM_CalcDiffValue >, num_hands > init_base_diff_vals
Definition MinaCalc.h:187
int numitv
Total number of intervals for the current file/rate (one per half second)
Definition MinaCalc.h:263
std::array< std::vector< float >, num_hands > jack_stam_stuff
Only used for debugging jack stamina related adjustments to jack_diff.
Definition MinaCalc.h:249
std::vector< float > stam_adj_diff
Definition MinaCalc.h:230
std::array< float, max_rows_for_single_interval > tc_static
Definition MinaCalc.h:255
std::array< std::array< std::vector< float >, NUM_Skillset >, num_hands > base_diff_for_stam_mod
Definition MinaCalc.h:221
std::array< std::array< std::vector< std::pair< float, float > >, 2 >, num_hands > debugMovingWindowCV
Definition MinaCalc.h:286
float grindscaler
Definition MinaCalc.h:270
void resize_interval_dependent_vectors(size_t amt)
Definition MinaCalc.h:295
std::vector< std::array< RowInfo, max_rows_for_single_interval > > adj_ni
Definition MinaCalc.h:162
std::array< std::array< std::vector< float >, NUM_CalcPatternMod >, num_hands > pmod_vals
Definition MinaCalc.h:179
bool ssr
Set true for score related output, and false for MSD caching.
Definition MinaCalc.h:98
unsigned keycount
Assigns the keymode specific logic.
Definition MinaCalc.h:104
Calc()
Definition MinaCalc.h:155
bool debugmode
For debug output. Should only ever be true at music select.
Definition MinaCalc.h:95
std::array< std::vector< float >, num_hands > jack_loss
unused - formerly populated by jack related point loss values
Definition MinaCalc.h:246
auto CalcMain(const std::vector< NoteInfo > &NoteInfo, float music_rate, float score_goal) -> std::vector< float >
Definition MinaCalc.cpp:51
std::array< std::vector< std::vector< std::vector< float > > >, num_hands > debugValues
Definition MinaCalc.h:278
std::array< std::vector< int >, num_hands > itv_points
Definition MinaCalc.h:171
std::array< std::vector< std::pair< float, float > >, num_hands > jack_diff
Definition MinaCalc.h:239
std::array< float, max_rows_for_single_interval > cj_static
Definition MinaCalc.h:260
float MaxPoints
Total points achievable in the current file (two per note)
Definition MinaCalc.h:266
std::vector< int > itv_size
Number of rows in each interval.
Definition MinaCalc.h:165
std::array< std::array< std::vector< float >, NUM_Skillset >, num_hands > base_adj_diff
Definition MinaCalc.h:211
Definition NoteDataStructures.h:7
float row_time
Rate-scaled time of this row.
Definition MinaCalc.h:77
unsigned row_notes
Definition MinaCalc.h:68
std::array< int, num_hands > hand_counts
Counting the left handed and right handed notes in this row.
Definition MinaCalc.h:74
int row_count
1-4 referring to if the row is a tap, jump, hand, or quad.
Definition MinaCalc.h:71