|
From: Tapio V. <aa...@us...> - 2010-01-17 22:05:07
|
Module: performous
Branch: master
Commit: b6955665a24eaf8d4902080399daea067133562f
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 18 00:03:19 2010 +0200
Allow ; and , to be on a same line as notes in SM format.
---
game/songparser-sm.cc | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/game/songparser-sm.cc b/game/songparser-sm.cc
index f42f6ed..be35f8a 100644
--- a/game/songparser-sm.cc
+++ b/game/songparser-sm.cc
@@ -193,10 +193,12 @@ Notes SongParser::smParseNotes(std::string line) {
Notes notes;
unsigned measure = 1;
double begin = 0.0;
+ bool forceMeasure = false;
std::map<int, int> holdMarks; // Keeps track of hold notes not yet terminated
- while (getline(line)) {
+ while (forceMeasure || getline(line)) {
+ if (forceMeasure) { line = ";"; forceMeasure = false; }
boost::trim(line); // Remove whitespace
if (line.empty()) continue;
if (line.substr(0, 2) == "//") continue; // Skip comments
@@ -238,6 +240,11 @@ Notes SongParser::smParseNotes(std::string line) {
would be easier to count afterwards.
*/
DanceChord chord;
+ // Deal with ; or , being on a same line
+ if (line[line.size()-1] == ';' || line[line.size()-1] == ',') {
+ forceMeasure = true;
+ line = line.substr(0, line.size()-1);
+ }
for(std::size_t i = 0; i < line.size(); i++) {
char notetype = line[i];
if (notetype == '0') continue;
|