#include "testApp.h" //bug in codeblocks: it sometimes checks for existence of executable from previous project //-------------------------------------------------------------- void testApp::setup(){ songs.push_back(new song("JingleBells_v.4.0/VODA_MUS_JingleBells_Backing_v.4.0.mp3","JingleBells_v.4.0/VODA_MUS_JingleBells_Melody_v.4.0.mp3","VODA_MUS_JingleBells_MIDI_v.4.0.xml","Lyrics_JingleBells.4.0.xml","Levels_JingleBells.4.0.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")); ofSetBackgroundAuto(false); ofBackground(0,0,0); for (int i=0;i<3;i++) penguins.push_back(Animal()); penguins[0].load("Penguin-Blue.xml"); penguins[1].load("Penguin-Purple.xml"); penguins[2].load("Penguin-Green.xml"); for (int i=0;i<3;i++) raccoons.push_back(Animal()); raccoons[0].load("Raccoon-Blue.xml"); raccoons[1].load("Raccoon-Purple.xml"); raccoons[2].load("Raccoon-Green.xml"); tags.push_back(new Tag("Tags/TAG_Get-Ready.png",2000,0.5,0)); tags.push_back(new Tag("Tags/TAG_Level-1.png",3000,0.5,0)); tags.push_back(new Tag("Tags/TAG_Level-2.png",3000,0.5,0)); tags.push_back(new Tag("Tags/TAG_Level-3.png",3000,0.5,0)); tags.push_back(new Tag("Tags/TAG_Level-4.png",3000,0.5,0)); logos.push_back(new Billboard("Logo-VF.png",0.5,0.0)); logos.push_back(new Billboard("Logo-DCC.png",0.36,0.855)); lyricspanel=new Billboard("Lyrics-panel.png",0.5,0.703); banner.load("Ribbon/Dublin/Ribbon_%05i.png",500); banner.setAnchorPercent(0.5,0.0); banner.setFrameRate(50); banner.play(); //loadanimals("Raccoons"); playanimal =&penguins; //testpenguin.load("Penguin-Blue.xml"); //debug: commented out: 436m 257m //508fr 1.7s load in use: 837m 444m //release: commented out: 436m 256m //508fr 1.4s load in use: 836m 443m background.loadMovie("Background_v3.mp4"); background.setLoopState(OF_LOOP_NORMAL); background.play(); vignette.loadImage("Vignette.png"); showFPS=false; currentsong=0; nextsong=0; } /* void testApp::loadanimals(string which) { playanimals.clear(); for (int i=0;i<3;i++) playanimals.push_back(Animal()); if (which=="Penguins") { playanimals[0].load("Penguin-Blue.xml"); playanimals[1].load("Penguin-Purple.xml"); playanimals[2].load("Penguin-Green.xml"); } else { playanimals[0].load("Raccoon-Blue.xml"); playanimals[1].load("Raccoon-Purple.xml"); playanimals[2].load("Raccoon-Green.xml"); } } */ void testApp::exit(){ delete lyricspanel; } //-------------------------------------------------------------- void testApp::update(){ int ret=game.update(); if (ret==1000) { currentlevel=0; currentsong=nextsong; songs[currentsong]->setTimeframe(3000); songs[currentsong]->setFlakeThresh(1000,100); songs[currentsong]->preRoll(750); tags[0]->play(); } else if (ret>48&&ret<52) { songs[currentsong]->playerControl(ret-48); (*playanimal)[ret-49].playNow("Clap"); } if (songs[currentsong]->isPlaying&&songs[currentsong]->getLevel(ofGetElapsedTimeMillis()+4000)>currentlevel) { int anim=ofRandom(1.9999); //this gives a binary random number for (int i=0;i<3;i++) { if (anim) (*playanimal)[i].playNow("Happy"); else (*playanimal)[i].playNow("Jump"); anim=(anim+1)%2; } tags[currentlevel+1]->play(); currentlevel++; printf("finished level %i!\n",currentlevel); } for (int i=0;i<3;i++) { (*playanimal)[i].update(); } background.update(); banner.update(); } //-------------------------------------------------------------- void testApp::draw(){ ofDisableAlphaBlending(); ofSetColor(255,255,255); background.draw(0,0,ofGetWidth(),ofGetHeight()); float scale=ofGetHeight()/1080.0f; ofEnableAlphaBlending(); vignette.draw(0,0,ofGetWidth(),ofGetHeight()); //ofBackground(0,0,0,0.1); /* ofSetColor(0,0,0,100); ofRect(0,0,ofGetWidth(),ofGetHeight()); */ if (songs[currentsong]->isPlaying) { ofSetColor(255,255,255); songs[currentsong]->drawNotes(); int missed=songs[currentsong]->missedNote(); if (missed>-1) (*playanimal)[missed].playNow("Shudder"); int hit=songs[currentsong]->hitNote(); if (hit>-1) (*playanimal)[hit].play("Catch"); } ofSetColor(255,255,255); for (int i=0;i<3;i++) (*playanimal)[i].draw(gridX[i+1]*ofGetWidth(),gridY[0]*ofGetHeight(),scale); if (songs[currentsong]->isPlaying) { ofSetColor(255,255,255); lyricspanel->draw(ofGetWidth()*0.5,ofGetHeight()*gridY[1],scale); songs[currentsong]->draw(scale); } else { ofDrawBitmapString("game over!", (ofGetWidth()/2)-25,(ofGetHeight()/2)-5); logos[1]->draw(gridX[0]*ofGetWidth(),gridY[1]*ofGetHeight(),scale); } ofSetColor(255,255,255); for (int i=0;iisPlaying) tags[i]->draw(0.5f*ofGetWidth(),0,scale); } logos[0]->draw(gridX[0]*ofGetWidth(),0,scale); float bannerscale=songs[currentsong]->isPlaying?scale*(1.0f-(max(0.0,min(((float)songs[currentsong]->getCurrentTime())*.001,1.0))*0.325)):scale; banner.draw(ofGetWidth()*0.5,0,bannerscale); char buf[30]; sprintf(buf,"%.1f",ofGetFrameRate()); if (showFPS) ofDrawBitmapString(buf, ofGetWidth()-50,(ofGetHeight()*gridY[1])-3); } //-------------------------------------------------------------- void testApp::keyPressed(int key){ switch (key) { case ' ': nextsong=(nextsong+1)%songs.size(); if (!songs[currentsong]->isPlaying) { currentlevel=0; currentsong=nextsong; songs[currentsong]->setTimeframe(3000); songs[currentsong]->setFlakeThresh(1000,100); songs[currentsong]->preRoll(750); tags[0]->play(); } break; case '1': case '2': case '3': songs[currentsong]->playerControl(key-'1'); (*playanimal)[key-'1'].playNow("Clap"); break; case 's': game.startGame(); break; case 'f': showFPS=!showFPS; break; case 'r': //loadanimals("Raccoons"); playanimal =&raccoons; break; case 'p': //loadanimals("Penguins"); playanimal =&penguins; break; } } //-------------------------------------------------------------- void testApp::keyReleased(int key){ switch (key) { case '1': case '2': case '3': break; } } //-------------------------------------------------------------- void testApp::mouseMoved(int x, int y ){ } //-------------------------------------------------------------- void testApp::mouseDragged(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::mousePressed(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::mouseReleased(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::windowResized(int w, int h){ } //-------------------------------------------------------------- void testApp::gotMessage(ofMessage msg){ } //-------------------------------------------------------------- void testApp::dragEvent(ofDragInfo dragInfo){ }