summaryrefslogtreecommitdiff
path: root/vfg/src/music.h
diff options
context:
space:
mode:
Diffstat (limited to 'vfg/src/music.h')
-rwxr-xr-xvfg/src/music.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/vfg/src/music.h b/vfg/src/music.h
index 7e54292..1cb92ff 100755
--- a/vfg/src/music.h
+++ b/vfg/src/music.h
@@ -17,14 +17,22 @@ class levelscore {
if( !XML.loadFile(filename) ){
printf("unable to load %s check data/ folder\n",filename.c_str());
}else{
+ int multiplier=1000/XML.getAttribute("VFxmas", "timebase",1000,0);
if(XML.pushTag("VFxmas")) {
for (int i=0;i<XML.getNumTags("Level");i++) {
- levels[XML.getAttribute("Level", "Time",0,i)]=XML.getAttribute("Level", "Lives",0,i);
+ levels[XML.getAttribute("Level", "Time",0,i)*multiplier]=XML.getAttribute("Level", "Lives",0,i);
}
printf("processed %s: %i difficulty levels \n",filename.c_str(),levels.size());
}
}
}
+ void test() {
+ map<int,int>::iterator iter=levels.end();
+ iter--;
+ for (int i=0;i<iter->first;i+=500) {
+ printf("time %i: level %i, nextleveltime %i\n",i,getLevel(i), nextLevelTime(i));
+ }
+ }
int getLives(int time) {
map<int,int>::iterator iter;
int lives=0;
@@ -52,6 +60,14 @@ class levelscore {
}
return bound;
}
+ int nextLevelTime(int time) {
+ map<int,int>::iterator iter;
+ int level=-1;
+ for (iter = levels.begin(); iter != levels.end(); ++iter) {
+ if (iter->first>time) return iter->first-time;
+ }
+ return 2<<20; // a big number
+ }
private:
map<int,int> levels;
};
@@ -115,7 +131,7 @@ class lyricscore: public score {
if( !XML.loadFile(filename) ){
printf("unable to load %s check data/ folder\n",filename.c_str());
}else{
- int multiplier=1000/XML.getAttribute("VFxmas", "timebase",0,0);
+ int multiplier=1000/XML.getAttribute("VFxmas", "timebase",1000,0);
if(XML.pushTag("VFxmas")) {
for (int i=0;i<XML.getNumTags("Lyric");i++) {
int in=XML.getAttribute("Lyric", "In",0,i)*multiplier;
@@ -144,7 +160,7 @@ class musicscore: public score {
void drawNotes(levelscore *levels);
void drawFlakes(levelscore *levels);
void playerControl(int key,int threshold);
- void makeFlakes(int threshStart,int threshEnd);
+ void makeFlakes(int threshStart,int threshEnd,levelscore *levels);
int missedFlakes;
int missedNote;
@@ -178,6 +194,7 @@ class song {
int hitNote();
bool isPlaying;
void playerControl(int key);
+ int getLevel(long time);
private:
ofSoundPlayer backing;
ofSoundPlayer melody;