Commit Graph
45 Commits
Author SHA1 Message Date
Michael Votaw 239d38d5aa pre-initialize size of vectors for writing nps/notes per measure to cache file. 2025-03-03 21:24:17 -08:00
Michael Votaw c0db6beb9c We don't need to set cached nps per player individually, just parse all of it and pass it to Steps 2025-03-03 21:24:17 -08:00
Michael Votaw 2625394ac0 Only store NotesPerMeasure and NpsPerMeasure values per-player if the steps type has different steps per player. 2025-03-03 21:24:17 -08:00
Michael Votaw fd790eb83e Replace #MEASUREINFO with two separate tags, #NPSPERMEASURE and #NOTESPERMEASURE. Stop storing MeasureInfo objects on Steps, and just directly store NpsPerMeasure, NotesPerMeasure, and peakNPS. 2025-03-03 21:24:17 -08:00
Michael Votaw 9fd4c38efd Keep a temporary State object around instead of allocating and deleting one nearly every time initResultState is called 2025-02-11 19:39:03 -08:00
Michael Votaw 46c3442018 non-void functions should return values! 2025-02-11 19:39:03 -08:00
Michael Votaw b52ea2257b wrap global function in anonymous namespace 2025-02-11 19:39:03 -08:00
Michael Votaw 97cefc6d71 Reduce the precision of nps to 3 decimal places, and don't use ssprint to join all of it together (very very long charts would cause a stack overflow on Windows) 2025-02-11 19:39:03 -08:00
Michael Votaw 6a7dd95212 Removed ASSERTs. StepParityGenerator::analyzeNoteData() now returns a boolean to indicate whether it succeeded at analyzing the note data.
Fixed issue where getFootPlacementPermutations would return no permutations in some circumstances
2025-02-11 19:39:03 -08:00
Michael Votaw 4e7432a5a0 Several "structural" changes, and some memory optimizations:
- Replaced use of bare '-1' values with StepParity::INVALID_COLUMN
- Removed StepParityGraph object, moved its responsibilities to StepParityGenerator
- Removed some unnecessary data from State object, added 'combinedColumns' and 'whatNoteTheFootIsHitting'
- Created stateCache to allow reuse of state objects
- Fixed a very small bug with TechCounts (missing 'previousPreviousHeel != INVALID_COLUMN')
2025-02-11 19:39:03 -08:00
Michael Votaw 61ee3bc329 Replaced costs array with just a single cost value 2025-02-11 19:39:03 -08:00
Michael Votaw cbfd09658f Check that previousPreviousRightHeel is a valid column placement 2025-02-11 19:39:03 -08:00
Michael Votaw e5ccaca5f1 Removed use of this. Added additional comments from SL implementation. 2025-02-11 19:39:03 -08:00
Michael Votaw a2a2684d0f Remove VERSION_TECH_STATS, because we're not actually updating SSC version 2025-02-11 19:39:03 -08:00
Michael Votaw ea35af311e Reset FILE_CACHE_VERSION to 228 2025-02-11 19:39:03 -08:00
Michael Votaw 6917d51d4d Replacing spaces with tabs 2025-02-11 19:39:03 -08:00
Michael Votaw 53ebe4cce1 Removed now unnecessary tracking of previous/current foot placements (we can get this from row.whereTheFootIs).
Add full and half crossovers
2025-02-11 19:39:03 -08:00
Michael Votaw c9af5d78a3 fix typo (missing comma) 2025-02-11 19:39:03 -08:00
Michael Votaw c7af0a4436 Integrated noteCount, whereTheFeetAre, and columns into Row object (makes tech counts a little cleaner) 2025-02-11 19:39:03 -08:00
Michael Votaw 212b99a4c5 Changed StageLayout into a struct and consolidated layout math functions into it.
Added convenience methods for determining if a given column is an up, down, or side arrow.
Added explicit tech counts for up footswitches and down footswitches
2025-02-11 19:39:03 -08:00
Michael Votaw 36c4223a38 Destroy array of costs after we're done with them 2025-02-11 19:39:03 -08:00
Michael Votaw d5817b6264 Fixed typo (missing semicolon) 2025-02-11 19:39:03 -08:00
Michael Votaw 5f7720a8b8 Added costs for "slow" bracketing (to prioritize jumps), twisted backwards foot.
Removed costs for JUMP, CROWDED_BRACKET, and OTHER
Added cutoffs for counting footswitches and doublesteps below a certain speed as tech
2025-02-11 19:39:03 -08:00
Michael Votaw f70cb4c6aa Jacks and Doublesteps don't count if they're preceded by a jump 2025-02-11 19:39:03 -08:00
Michael Votaw 033cb10f17 Footswitches don't count if it's just using a different part of the same foot. 2025-02-11 19:39:03 -08:00
Michael Votaw 9c959d7dee Cutoff for jacks is 170bpm 1/8th notes, and not after jumps 2025-02-11 19:39:03 -08:00
Michael Votaw ed2b5f8d5e Removing accidentally duplicated lua methods, un-needed SetGrooveStatsHash method (that's getting handled in a different PR) 2025-02-11 19:39:03 -08:00
Michael Votaw 905e44330a Added methods to load/write tech counts to cache. 2025-02-11 19:39:03 -08:00
Michael Votaw bd897b676a Replacing use of CalculateRadarValues with CalculateStepStats, and ReCalculateRadarValuesAndLastSecond with ReCalculateStepStatsAndLastSecond 2025-02-11 19:39:03 -08:00
Michael Votaw afa44ee4df Added methods for calculating and caching tech counts 2025-02-11 19:39:03 -08:00
Michael Votaw 6109105f97 Added TechCounts and all of the StepParity classes 2025-02-11 19:39:03 -08:00
Michael Votaw 10a4a972b0 Added method to NoteData to get number of mines at given row. 2025-02-11 19:39:03 -08:00
Michael Votaw 28270cee31 Made StepsTypeToString publicly available 2025-02-11 19:39:03 -08:00
Michael Votaw 6788df0238 Added MeasureInfo to CMakeData-data.cmake 2025-02-11 19:39:03 -08:00
Michael Votaw 429fab2fbc Added MeasureInfo calculations, and loader/writer for #MEASUREINFO cache 2025-02-11 19:39:03 -08:00
Michael Votaw f96ee75ccc Return the noteType for columnCues instead of isMine. 2024-08-11 09:43:54 -07:00
Michael Votaw 5db1a56d48 Add ColumnCues calculations, exposed to themes via Lua function on Steps object 2024-08-11 09:43:54 -07:00
Michael Votaw e657a75153 Added OldStyleStringToSongSort() function to map best/worst/gradebest/gradeworst to their SongSort counterparts.
Added CourseLoaderCRS::SetCourseSongSort() to parse and set SONGSELECT's SORT parameter.
2024-03-06 01:45:26 -08:00
Michael Votaw 84553d4a50 Refactored code for writing #SONG entries in CourseWriterCRS
Added method for writing #SONGSELECT entries
Added new boolean flag bUseSongSelect to CourseEntry
Added new function StringToSongSort()
Renamed "LIVES" to "GAINLIVES"
2024-03-06 01:45:26 -08:00
Michael Votaw be87de401a Added additional criteria to StepsCriteria and SongCriteria
Added new m_sSongName property to Song class
Slight refactor in Song::LoadSongFromDir() to set m_sSongName
Implemented the basics of #SONGSELECT course parameter
2024-03-06 01:45:26 -08:00
Michael Votaw 343f2de657 Changed SongCriteria.m_sGroupName to a vector m_vsGroupNames, to allow for the potential to select a song from more than one group. 2024-03-06 01:45:26 -08:00
Michael Votaw f44357c3f5 Added BPMRANGE song option for Courses.
Started breaking out some of the logic in CourseLoaderCRS into smaller functions for readibility.
2024-03-06 01:45:26 -08:00
Michael Votaw eeb2528612 If a song has any time signatures defined, but doesn't include for for beat 0, add one.
(Fixes a crash that can occur with some songs if functions like TimingData::NoteRowToMeasureAndBeat are called for rows that don't have a time signature defined)
2024-02-08 01:35:06 -08:00
Michael Votaw 29a265713f When sorting course songs by GRADEBEST or GRADEWORST, check if GAMESTATE has a master player before calling SongUtil::SortSongPointerArrayByGrades(). 2023-12-13 09:12:21 -08:00
Michael Votaw c9750159fb Added missing GRADEBEST and GRADEWORST cases for CourseWriterCRS 2023-12-13 09:12:21 -08:00