diff options
Diffstat (limited to 'vfg/src/testApp.cpp')
| -rwxr-xr-x | vfg/src/testApp.cpp | 110 |
1 files changed, 80 insertions, 30 deletions
diff --git a/vfg/src/testApp.cpp b/vfg/src/testApp.cpp index 8c701b2..3e711f2 100755 --- a/vfg/src/testApp.cpp +++ b/vfg/src/testApp.cpp @@ -16,11 +16,23 @@ void guiWindow::draw(){ parent->gui.draw(); ofSetColor(255,255,255); ofDrawBitmapString(ofToString(parent->game.queued)+" in queue", 10,ofGetHeight()-15); - char buf[8]; + char buf[200]; sprintf(buf,"%.1f",ofGetFrameRate()); ofDrawBitmapString(buf, ofGetWidth()-43,ofGetHeight()-15); ofDrawBitmapString(levelnames[parent->gamestate-1], 10,ofGetHeight()-35); - if (parent->gamestate==GAME_PLAYING) ofDrawBitmapString(parent->songs[parent->currentsong]->getScoreString(),10,ofGetHeight()-55); + switch (parent->gamestate) { + case GAME_PLAYING: + ofDrawBitmapString(parent->songs[parent->currentsong]->getScoreString(),10,ofGetHeight()-55); + break; + case GAME_INTRO: + sprintf(buf,"%f %i of %i",parent->intro.getPosition(),parent->intro.getCurrentFrame(),parent->intro.getTotalNumFrames()); + ofDrawBitmapString(buf,10,ofGetHeight()-55); + break; + case GAME_ADVERT: + sprintf(buf,"%f %i of %i",parent->advert.getPosition(),parent->advert.getCurrentFrame(),parent->advert.getTotalNumFrames()); + ofDrawBitmapString(buf,10,ofGetHeight()-55); + break; + } } void guiWindow::dragEvent(ofDragInfo dragInfo, ofxFenster* win){ @@ -35,6 +47,9 @@ void testApp::setup(){ game.setup("1122",2000); //Asterisk.cpp thread polls server every 2000ms +//songs.push_back(new song("WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Backing_v.2.1.mp3","WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Lead_v.2.1.mp3","VODA_MUS_WEWISHU_Midi_v.2.2.xml","Lyrics_WeWishYou.2.1.xml","Levels_test.xml")); + + songs.push_back(new song("SilentNight/VODA_SilentNight_Backing_v.1.1.1.mp3","SilentNight/VODA_SilentNight_Melody_v.1.1.1.mp3","VODA_SilentNight_Midi_v.1.1.1.xml","Lyrics_WeWishYou.2.1.xml","Levels_WeWishYou.2.1.xml")); songs.push_back(new song("WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Backing_v.2.1.mp3","WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Lead_v.2.1.mp3","VODA_MUS_WEWISHU_Midi_v.2.2.xml","Lyrics_WeWishYou.2.1.xml","Levels_WeWishYou.2.1.xml")); songs.push_back(new song("DeckTheHalls_v.4.0/VODA_MUS_DeckTheHalls-Backing_v.4.0.mp3","DeckTheHalls_v.4.0/VODA_MUS_DeckTheHalls-Lead_v.4.0.mp3","VODA_MIDI_DeckTheHalls-v.4.0.xml","Lyrics_DeckTheHalls.4.0.xml","Levels_DeckTheHalls.4.0.xml")); songs.push_back(new song("DingDong.v.2.2/VODA_MUS_DingDong_Backing_v.2.2.mp3","DingDong.v.2.2/VODA_MUS_DingDong_Melody_v.2.2.mp3","VODA_MIDI_DingDong_v.2.2.xml","Lyrics_DingDong.2.2.xml","Levels_DingDong.2.2.xml")); @@ -74,7 +89,7 @@ void testApp::setup(){ lyricspanel=new Billboard("Lyrics-panel.png",0.5,0.703); - banner.load("Ribbon/Dublin/Ribbon-Dublin_%05i.png",500); + banner.load("Ribbon/Dublin/Ribbon_%05i.png",500); banner.setAnchorPercent(0.5,0.0); banner.setFrameRate(50); banner.play(); @@ -98,11 +113,11 @@ void testApp::setup(){ //mount -t tmpfs -o size=64M tmpfs /RAM //cp *.m* RAM - intro.loadMovie("RAM/Game-Demo_v5.mp4"); + intro.loadMovie("RAM/Game-Demo_v6_DUBLIN.mp4"); intro.setLoopState(OF_LOOP_NONE); intro.setVolume(0.0); - advert.loadMovie("RAM/GW2003761_GRY-VFBR055-060_MPEG_hi.mov"); + advert.loadMovie("RAM/VFxmasAD.mov"); advert.setLoopState(OF_LOOP_NONE); advert.setVolume(1.0); @@ -182,6 +197,8 @@ void testApp::update(){ activatePractice(); } else if (ret==ASTERISK_GAMEOVER) { + printf("player hung up!\n"); + songs[currentsong]->gameOver(); endGame(); } else if (ret>48&&ret<52) { @@ -212,6 +229,7 @@ void testApp::update(){ case GAME_ENDPLAYING: case GAME_ENDINGINTRO: case GAME_PRACTICE: + case GAME_WALKON: background.update(); banner.update(); wirebirds.update(); @@ -259,7 +277,7 @@ void testApp::draw(){ float hOffs=(ofGetWidth()-ofGetHeight())/2; float scale=ofGetHeight()/1080.0f; float bannerscale,aspect,wOffs,seg; //this old chestnut - float segamt=((float)(ofGetElapsedTimeMillis()-segmentStartTime)*2.0f)/fadelength; //same variable used in all segments + float segamt=min(1.0f,((float)(ofGetElapsedTimeMillis()-segmentStartTime)*2.0f)/fadelength); //same variable used in all segments int hit,missed; switch(gamestate) { case GAME_STARTINGINTRO: @@ -282,9 +300,6 @@ void testApp::draw(){ case GAME_INTRO: case GAME_ENDINGINTRO: intro.draw(hOffs,0,ofGetHeight(),ofGetHeight()); - if (intro.getCurrentFrame()==intro.getTotalNumFrames()) { - gamestate=GAME_READY; - } break; case GAME_READY: case GAME_STARTPLAYING: @@ -301,9 +316,6 @@ void testApp::draw(){ drawBackgroundLayers(); break; } - else if (segamt>1.0) { - gamestate=GAME_ADVERT; - } else { //if (!advert.isPlaying()) advert.play(); ofEnableAlphaBlending(); @@ -388,21 +400,21 @@ void testApp::draw(){ //penguin: 11,35,11 //raccoon: 20,39,43r ofEnableAlphaBlending(); - seg=((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001; + seg=(((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001)/6; wOffs=hOffs+(0.7*ofGetWidth()*seg); for (int i=0;i<3;i++) (*playanimal)[i].draw(wOffs+(gridX[i+1]*ofGetHeight()),gridY[0]*ofGetHeight(),scale); - songs[currentsong]->draw(hOffs,scale);//allows the song to fade its volume out and stop playing + songs[currentsong]->draw(hOffs,scale);//allows the song to fade its volume out and stop playing, last notes to play out break; case GAME_WALKON: - ofEnableAlphaBlending(); - seg=((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001; - wOffs=hOffs+(0.7*ofGetWidth()*(1.0f-seg)); - for (int i=0;i<3;i++) (*playanimal)[i].draw(wOffs+(gridX[i+1]*ofGetHeight()),gridY[0]*ofGetHeight(),scale); - break; - } - - - //draw tags and logos + ofEnableAlphaBlending(); + seg=(((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001)/6; + wOffs=hOffs-(0.7*ofGetWidth()*(1.0f-seg)); + for (int i=0;i<3;i++) (*playanimal)[i].draw(wOffs+(gridX[i+1]*ofGetHeight()),gridY[0]*ofGetHeight(),scale); + break; + } + + + //draw tags and VF logo switch(gamestate) { case GAME_STARTINGADVERT: if (segamt<0.5) { @@ -429,7 +441,7 @@ void testApp::draw(){ } logos[0]->draw((gridX[0]*ofGetHeight())+hOffs,0,scale); break; - } + } //draw banner, DCC logo and wirebirds bannerscale=scale; ofSetColor(255,255,255); @@ -460,12 +472,16 @@ void testApp::draw(){ break; case GAME_STARTPLAYING: case GAME_PLAYING: - if (showWire) wirebirds.draw(ofGetWidth()/2,ofGetHeight()*birdpoint,scale); + if (showWire) wirebirds.draw(ofGetWidth()/2,ofGetHeight()*birdpoint,scale); bannerscale=scale*0.675; ofEnableAlphaBlending(); banner.draw(ofGetWidth()*0.5,0,bannerscale); break; case GAME_ENDPLAYING: + bannerscale=scale*0.675; + ofEnableAlphaBlending(); + banner.draw(ofGetWidth()*0.5,0,bannerscale); + break; case GAME_WALKON: //DCC LOGO logos[1]->draw((gridX[0]*ofGetHeight())+hOffs,gridY[1]*ofGetHeight(),scale); @@ -479,18 +495,27 @@ void testApp::draw(){ case GAME_STARTINGINTRO: case GAME_INTRO: case GAME_ENDINGINTRO: + if (intro.getCurrentFrame()==intro.getTotalNumFrames()-1) { + gamestate=GAME_READY; + } + break; case GAME_READY: break; case GAME_STARTINGADVERT: backgroundmusic.setVolume(max(0.0,1.0-(segamt*2.0))); + if (segamt==1.0) { + gamestate=GAME_ADVERT; + } case GAME_ADVERT: - if (advert.getCurrentFrame()==advert.getTotalNumFrames()&&gamestate==GAME_ADVERT) { + if (advert.getCurrentFrame()==advert.getTotalNumFrames()-1) { gamestate=GAME_ENDINGADVERT; segmentStartTime=ofGetElapsedTimeMillis(); } break; case GAME_ENDINGADVERT: backgroundmusic.setVolume(max(0.0,(segamt-0.5)*2.0)); + if (segamt==1.0) gamestate=GAME_READY; + break; case GAME_STARTPLAYING: case GAME_PRACTICE: break; @@ -501,17 +526,41 @@ void testApp::draw(){ } break; case GAME_ENDPLAYING: - backgroundmusic.setVolume(max(0.0,(segamt-0.5)*2.0)); - if (((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001>6.0) { + if ((((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001)>6.0) { gamestate=GAME_WALKON; + segmentStartTime=ofGetElapsedTimeMillis(); switchAnimals(); + //work out offet and schedule transition to finish at the end of 6 seconds + //6 seconds to walk in / out -> 12 seconds turnaround + //frames to start/cycle/stop walking + //penguin: 11,35,11 + //raccoon: 20,39,43 + + //penguins: 8 cycles + end = 291, diff 180ms (+ 1 frame per cycle? 0ms) + //raccoons: 6 cycles + end = diff 230ms (+1 fr/cyc? 90ms) + for (int i=0;i<3;i++) { + (*playanimal)[i].clear(); + int numcycles,start; + if (playanimal==&penguins) { + start=400; //(of 700 cycle) + numcycles=7; + } + else { + start=400; //of 780 + numcycles=5; + } + (*playanimal)[i].play("Walking",ofGetElapsedTimeMillis()+start); + for (int j=0;j<numcycles;j++) (*playanimal)[i].play("Walking"); + (*playanimal)[i].play("Walk_end"); + } } break; case GAME_WALKON: + backgroundmusic.setVolume(max(0.0,(segamt-0.5)*2.0)); if (((float)(ofGetElapsedTimeMillis()-segmentStartTime))*.001>6.0) { gamestate=GAME_READY; segmentStartTime=ofGetElapsedTimeMillis(); - } + } break; } } @@ -573,7 +622,8 @@ void testApp::endGame(){ //penguins: start + 289 = 8.25 //raccoons: start + 280 = 7.17 for (int i=0;i<3;i++) { - (*playanimal)[i].play("Walk_start"); + + (*playanimal)[i].playNow("Walk_start"); for (int j=0;j<9;j++) (*playanimal)[i].play("Walking"); } } |
