From 742fc5a818d1c9d13ca8570f1235277aa97aa287 Mon Sep 17 00:00:00 2001 From: Scott Doxey Date: Tue, 17 Sep 2024 09:31:08 -0400 Subject: [PATCH] Split parse method logic into two methods. --- includes/RhythmGameUtilities/Parsers.hpp | 114 ++++++++++++++--------- 1 file changed, 70 insertions(+), 44 deletions(-) diff --git a/includes/RhythmGameUtilities/Parsers.hpp b/includes/RhythmGameUtilities/Parsers.hpp index 535c7ab..730f9ba 100644 --- a/includes/RhythmGameUtilities/Parsers.hpp +++ b/includes/RhythmGameUtilities/Parsers.hpp @@ -99,97 +99,123 @@ std::vector ParseSectionsFromChart(const char *contents) return sections; } -std::map -ParseTimeSignaturesFromChartSections(std::vector sections) +std::map ParseTimeSignaturesFromChartSection(ChartSection section) { auto timeSignatures = std::map(); + for (auto &line : section.lines) + { + if (line.second.front() == ToString(TypeCode::TimeSignatureMarker)) + { + timeSignatures.insert( + {std::stoi(line.first), std::stoi(line.second.at(1))}); + } + } + + return timeSignatures; +} + +std::map +ParseTimeSignaturesFromChartSections(std::vector sections) +{ for (auto §ion : sections) { if (section.name == ToString(NamedSection::SyncTrack)) { - for (auto &line : section.lines) - { - if (line.second.front() == - ToString(TypeCode::TimeSignatureMarker)) - { - timeSignatures.insert( - {std::stoi(line.first), std::stoi(line.second.at(1))}); - } - } + return ParseTimeSignaturesFromChartSection(section); } } - return timeSignatures; + return std::map(); } -std::map ParseBpmFromChartSections(std::vector sections) +std::map ParseBpmFromChartSection(ChartSection section) { auto bpm = std::map(); + for (auto &line : section.lines) + { + if (line.second.front() == ToString(TypeCode::BPM_Marker)) + { + bpm.insert({std::stoi(line.first), std::stoi(line.second.at(1))}); + } + } + + return bpm; +} + +std::map ParseBpmFromChartSections(std::vector sections) +{ for (auto §ion : sections) { if (section.name == ToString(NamedSection::SyncTrack)) { - for (auto &line : section.lines) - { - if (line.second.front() == ToString(TypeCode::BPM_Marker)) - { - bpm.insert( - {std::stoi(line.first), std::stoi(line.second.at(1))}); - } - } + return ParseBpmFromChartSection(section); } } - return bpm; + return std::map(); +} + +std::vector ParseNotesFromChartSection(ChartSection section) +{ + auto notes = std::vector(); + + for (auto &line : section.lines) + { + if (line.second.front() == ToString(TypeCode::NoteMarker)) + { + notes.push_back({std::stoi(line.first), + std::stoi(line.second.at(1)), + std::stoi(line.second.at(2))}); + } + } + + return notes; } std::vector ParseNotesFromChartSections(std::vector sections, Difficulty difficulty) { - auto notes = std::vector(); - for (auto §ion : sections) { if (section.name == ToString(difficulty) + "Single") { - for (auto &line : section.lines) - { - if (line.second.front() == ToString(TypeCode::NoteMarker)) - { - notes.push_back({std::stoi(line.first), - std::stoi(line.second.at(1)), - std::stoi(line.second.at(2))}); - } - } + return ParseNotesFromChartSection(section); } } - return notes; + return std::vector(); } -std::map -ParseLyricsFromChartSections(std::vector sections) +std::map ParseLyricsFromChartSection(ChartSection section) { auto lyrics = std::map(); + for (auto &line : section.lines) + { + if (line.second.back().rfind("lyric", 0) == 0) + { + lyrics.insert({std::stoi(line.first), line.second.at(1)}); + } + } + + return lyrics; +} + +std::map +ParseLyricsFromChartSections(std::vector sections) +{ for (auto §ion : sections) { if (section.name == ToString(NamedSection::Events)) { - for (auto &line : section.lines) - { - if (line.second.back().rfind("lyric", 0) == 0) - { - lyrics.insert({std::stoi(line.first), line.second.at(1)}); - } - } + return ParseLyricsFromChartSection(section); } } - return lyrics; + return std::map(); } } // namespace RhythmGameUtilities