void GameEngine::startLevel() { //Set the level. Initalized at ZERO. currentLevel++; critterFactory->nextLevel(); while (lives > 0) { frame(); } //set timer; //Render Loop // Every render frame is is done in three things: // A) The gameLogic calculates the change of movement of every tower, projectile, and critter // B) The gameLogic displays all the towers, projectiles, critters. // C) Any special mouse click events (buying new tower, etc) //SDL_Timer... //calculate(); //When level is over endLevel(); }
void MainWindow::startGame(){ std::ifstream hScore("highscores.txt"); int tempScore; std::string tempName; highScores.clear(); for(int i = 0; i < 10; i++){ hScore >> tempScore; hScore.get(); std::getline(hScore, tempName); highScores.insert (std::pair<int,std::string>(tempScore, tempName) ); } srand(time(0)); hasRed = false; errorL->hide(); endScore->hide(); if(nameB->toPlainText().isEmpty()){ // display the warning label errorL->setText("You must enter a name in the\nbox below to start the game!"); errorL->show(); return; } // get the player name and set it pName = nameB->toPlainText().toUtf8().constData(); playerName = "Pilot: " + nameB->toPlainText(); nameL->setText(playerName); nameB->setVisible(false); holder3->setVisible(true); // reset the score scoreL->setText("Score: 0"); score = 0; // reset the level level = 0; attack = 0; // make a new player ship human = new Player(apl,300,500,this); gameScene->addItem(human); // this is the backdoor if(pName == "JBiebs"){ human->setGodly(); } // hide the start button, start the level endLevel(); startB->hide(); scoreList->hide(); }
void OgreApp::update(float elapsed) { OgreFramework::getSingletonPtr()->m_pSoundMgr->update(elapsed); switch (gameState) { case STATE_PLAY: { // Update the game state if (!pause) { player->update(elapsed); if (tunnel->needsCleaning()) { endLevel(); //// Generate a new tunnel because we are done with current one if (gameState == STATE_PLAY) setLevel(); } } else { #if !defined(OGRE_IS_IOS) // Navigation Debug Keys if (player->getKeyUp()) player->move(Vector3(player->getCamForward() * globals.initCamSpeed * elapsed)); if (player->getKeyDown()) player->move(Vector3(player->getCamForward() * -globals.initCamSpeed * elapsed)); if (player->getKeyLeft()) player->move(Vector3(player->getCamRight() * -globals.initCamSpeed * elapsed)); if (player->getKeyRight()) player->move(Vector3(player->getCamRight() * globals.initCamSpeed * elapsed)); #endif } hud->update(elapsed); // Graphical view changes lightNodeMain->setPosition(OgreFramework::getSingletonPtr()->m_pCameraMain->getPosition()); Quaternion camRot = player->getCombinedRotAndRoll(); OgreFramework::getSingletonPtr()->m_pCameraMain->setPosition(player->getCamPos()); OgreFramework::getSingletonPtr()->m_pCameraMain->setOrientation(camRot); OgreFramework::getSingletonPtr()->m_pSceneMgrMain->getSkyPlaneNode()->setOrientation(player->getCombinedRotAndRoll()); break; } case STATE_PROMPT: { break; } } }
void PizzaSpeedLevel::update(float df) { if (_timeRunning) { _spaceShip->setPosition( _spaceShip->getPosition().x-df*50.0F*_timeSlider->getPercent()/10, _spaceShip->getPosition().y+df*24.0F*_timeSlider->getPercent()/10 ); if (calcDistance(90,470,_spaceShip->getPosition().x,_spaceShip->getPosition().y)<10000) endLevel(); } }
void MainWindow::handleTimer(){ // if player is dead if(human->isDead()){ endGame(); return; } // randomly add mothership if(!(rand() % 300) && !hasRed){ redShip = new Red(ar1, ar2, ar3, 10, 15, this, human); enemies.push_back(redShip); gameScene->addItem(redShip); hasRed = true; } // add enemies if(enemies.empty() && ecount == maxcount){ endLevel(); } if(ecount < maxcount){ int select = rand() % 9; Thing * addMe; if(select < 3){ addMe = new Blue(ab1, ab2, rand() % 280 + 10, rand() % 250 + 50, this); } else if(select < 5){ addMe = new Green(ag1, ag2, rand() % 280 + 10, rand() % 250 + 50, this); } else if(select < 7){ addMe = new Pink(app, rand() % 280 + 10, rand() % 250 + 50, this); } else if(select < 8){ addMe = new Yellow(ay, rand() % 280 + 10, rand() % 250 + 50, this); } else{ addMe = new Purple(ap, rand() % 280 + 10, 350, this, human); } enemies.push_back(addMe); gameScene->addItem(addMe); ecount++; } // all enemies movement, actions, collisions std::deque<int> oenemies; for(unsigned int i = 0; i < enemies.size(); i++){ // check the player bullets with the enemy for(unsigned int j = 0; j < pbullets.size(); j++){ if(static_cast<Bullet*>(pbullets[j])->isCollides(enemies[i])){ enemies[i]->gotHit(static_cast<Bullet*>(pbullets[j])->getAttack()); } } if(enemies[i]->isValid()){ enemies[i]->move(); enemies[i]->action(); if(enemies[i]->isPurple()){ static_cast<Purple*>(enemies[i])->isCollides(); } } else{ oenemies.push_front(i); } } // delete bad enemies while(!oenemies.empty()){ score += enemies[oenemies[0]]->getScore(); delete enemies[oenemies[0]]; enemies.erase(enemies.begin() + oenemies[0]); oenemies.pop_front(); } // move and check enemy bullets std::deque<int> obullets; for(unsigned int i = 0; i < ebullets.size(); i++){ ebullets[i]->action(); if(ebullets[i]->isValid()){ ebullets[i]->move(); } else{ obullets.push_front(i); } } // delete bad enemy bullets while(!obullets.empty()){ delete ebullets[obullets[0]]; ebullets.erase(ebullets.begin() + obullets[0]); obullets.pop_front(); } // now move and check player bullets std::deque<int> oobullets; for(unsigned int i = 0; i < pbullets.size(); i++){ pbullets[i]->action(); if(pbullets[i]->isValid()){ pbullets[i]->move(); } else{ oobullets.push_front(i); } } // delete bad player bullets while(!oobullets.empty()){ delete pbullets[oobullets[0]]; pbullets.erase(pbullets.begin() + oobullets[0]); oobullets.pop_front(); } // now do the beam bool beamOK = true; // check if it hits the player for(unsigned int i = 0; i < beampellets.size(); i++){ if(static_cast<Bullet*>(beampellets[i])->isCollides(human)){ human->gotHit(100); beamOK = false; } } // check if it gets to the end, update the redShip accordingly for(unsigned int i = 0; i < beampellets.size(); i++){ beampellets[i]->action(); beampellets[i]->move(); if(!beampellets[i]->isValid()){ static_cast<Red*>(redShip)->nextState(); beamOK = false; break; } } // if one part of the beam breaks, it all breaks if(!beamOK){ for(unsigned int i = 0; i < beampellets.size(); i++){ delete beampellets[i]; } beampellets.clear(); } // check the enemy bullets with the player for(unsigned int i = 0; i < ebullets.size(); i++){ if(static_cast<Bullet*>(ebullets[i])->isCollides(human)){ human->gotHit(static_cast<Bullet*>(ebullets[i])->getAttack()); } } // update player HP int temp = 100 * human->getHP() / maxhp; std::stringstream ss; ss << "HP: " << temp << "%"; QString qstr = QString::fromStdString(ss.str()); hpL->setText(qstr); // heart display human->action(); int getLives = human->getLives(); // if(getLives > 4){ // h5->setVisible(true); // } // else{ // h5->setVisible(false); // } // if(getLives > 3){ // h4->setVisible(true); // } // else{ // h4->setVisible(false); // } if(getLives > 2){ h3->setVisible(true); } else{ h3->setVisible(false); } if(getLives > 1){ h2->setVisible(true); } else{ h2->setVisible(false); } if(getLives > 0){ h1->setVisible(true); } else{ h1->setVisible(false); } // handle lives if(human->getHP() <= 0){ human->setHP(maxhp); human->setInvincible(); } // do the queued player things static_cast<GScene*>(gameScene)->action(); if(++anim % 3 == 0){ if(pvx || pvy){ human->move(pvx,pvy); } if(pattack && anim % 12 == 0){ human->doAttack(); pattack = false; anim = 0; } } if(pvx != 0){pvx += -1 * abs(pvx)/pvx;} if(pvy != 0){pvy += -1 * abs(pvy)/pvy;} // update score std::stringstream ss2; ss2 << "Score: " << score; QString qstr2 = QString::fromStdString(ss2.str()); scoreL->setText(qstr2); }
bool OgreApp::keyPressed(const OIS::KeyEvent &keyEventRef) { #if !defined(OGRE_IS_IOS) OgreFramework::getSingletonPtr()->keyPressed(keyEventRef); switch (keyEventRef.key) { case OIS::KC_LEFT: { player->setKeyLeft(true); if (player->checkPerformLeftMove(true)) activatePerformLeftMove(); break; } case OIS::KC_RIGHT: { player->setKeyRight(true); player->resetCursorMoved(); if (player->checkPerformRightMove(true)) activatePerformRightMove(); break; } case OIS::KC_UP: { player->setKeyUp(true); if (player->getSpeedControl() == SPEED_CONTROL_FLEXIBLE) { int s = player->getBaseSpeed(); if (s + 1 <= globals.maxCamSpeed) s++; player->setBaseSpeed(s); } break; } case OIS::KC_DOWN: { player->setKeyDown(true); if (player->getSpeedControl() == SPEED_CONTROL_FLEXIBLE) { int s = player->getBaseSpeed(); if (s - 1 >= globals.minCamSpeed) s--; player->setBaseSpeed(s); } break; } case OIS::KC_P: { setPause(!pause); break; } case OIS::KC_MINUS: { endLevel(FAIL); setLevel(FAIL); break; } case OIS::KC_EQUALS: { endLevel(PASS); setLevel(PASS); break; } case OIS::KC_X: { player->changeMovementMode(); break; } case OIS::KC_C: { player->setShowCombo(player->getShowCombo() ? 0 : 1); break; } case OIS::KC_SPACE: { player->setKeySpace(true); activatePerformDoubleTap(0, 0); break; } case OIS::KC_Z: { activatePerformBeginLongPress(); break; } default: break; } #endif return true; }
void OEMFGame :: run() { // clearWithColor(0x000000, false); // refresh(); refreshCentered(); refreshScoreBoard(); updateScreen(); Uint32 start = SDL_GetTicks(); Sint32 waitTime = 0; SDL_Event event; while (!m_done) { if ((waitTime = SDL_GetTicks() - start) >= m_frameDuration) { start = SDL_GetTicks(); //refresh(); refreshCentered(); refreshScoreBoard(); updateScreen(); } handleInput(); updatePhysics(); // handle flags if (m_requestFlagDie) { m_requestFlagDie = false; die(); } if (m_requestFlagEnd) { m_requestFlagEnd = false; endLevel(); initialize(); } Uint32 sym; /* Check for events */ while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_MOUSEMOTION: break; case SDL_MOUSEBUTTONDOWN: break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_ESCAPE) { string options[2] = {string("No"), string("Yes")}; if (chooseList(0, "Are you sure you want to end the game?", options, 2) == 1) m_done = 1; } else if (event.key.keysym.sym == SDLK_q) { m_frameDuration-=10; } else if (event.key.keysym.sym == SDLK_w) { m_frameDuration+=10; } else if (event.key.keysym.sym == SDLK_e) { m_delayTime--; printf("m_delayTime = %d\n", m_delayTime); } else if (event.key.keysym.sym == SDLK_r) { m_delayTime++; printf("m_delayTime = %d\n", m_delayTime); } else if (event.key.keysym.sym == SDLK_p) { SDL_SaveBMP(m_screen, "screenshot.bmp"); } else { // key array sym = event.key.keysym.sym; if (sym < KEYCOUNT) { m_keyDown[sym] = true; } } break; case SDL_KEYUP: // key array sym = event.key.keysym.sym; if (sym < KEYCOUNT) { m_keyDown[sym] = false; } break; case SDL_QUIT: m_done = 1; break; default: break; } } // Uint32 start2 = SDL_GetTicks(); // while (SDL_GetTicks() - start2 < m_delayTime); SDL_Delay(m_delayTime); // frameDuration = SDL_GetTicks() - start; // waitTime = 20 - (Sint32) frameDuration; // if (waitTime > 0) // SDL_Delay(waitTime); } }
bool OgreApp::keyPressed(const OIS::KeyEvent &keyEventRef) { #if !defined(OGRE_IS_IOS) OgreFramework::getSingletonPtr()->keyPressed(keyEventRef); switch (keyEventRef.key) { case OIS::KC_LEFT: { break; } case OIS::KC_RIGHT: { break; } case OIS::KC_UP: { break; } case OIS::KC_DOWN: { break; } case OIS::KC_P: { setPause(!pause); break; } case OIS::KC_MINUS: { endLevel(FAIL); setLevel(FAIL); break; } case OIS::KC_EQUALS: { endLevel(PASS); setLevel(PASS); break; } case OIS::KC_X: { break; } case OIS::KC_C: { break; } case OIS::KC_SPACE: { player->setKeySpace(true); activatePerformSingleTap(0, 0); break; } case OIS::KC_Z: { player->setKeySpace(true); activatePerformSingleTap(0, 0); break; } default: break; } #endif return true; }
void Game::play(string path) { pathTest=path; ini(); //SDL_EnableKeyRepeat(10, 0); playLoop=true; fadingToLeave=false; while (playLoop) { if(m_chat.boxOpened()) m_chat.checkKeyboard(); else while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: fadingToLeave=true; playLoop=false; command="quit"; break; case SDL_MOUSEMOTION: m_camera.onMouseMotion(event.motion); break; case SDL_MOUSEBUTTONUP: if(event.button.button==SDL_BUTTON_LEFT) { if(m_mode=="play") { if(playerList[0]->getLife()>0) { Vector3D dir=(m_camera.getTarget()-(playerList[0]->getPos()+Vector3D(0,0,1))).normalize(); if(castSpell(playerList[0],"rope",dir)) { infosSocket s; s.confirmationID=-1; s.type=2; s.variable[1]=playerList[0]->getPos().X; s.variable[2]=playerList[0]->getPos().Y; s.variable[3]=playerList[0]->getPos().Z; s.variable[4]=dir.X; s.variable[5]=dir.Y; s.variable[6]=dir.Z; m_online->sendSocket(s);//add socket to queue } } } else if(m_mode=="spectate") { switchSpectate(1); } } if(event.button.button==SDL_BUTTON_RIGHT) { if(m_mode=="play") { if(playerList[0]->getLife()>0) { playerList[0]->unlinkRope(); infosSocket s; s.confirmationID=-1; s.type=3; m_online->sendSocket(s);//add socket to queue } } else if(m_mode=="spectate") { switchSpectate(-1); } } if(event.button.button==SDL_BUTTON_WHEELUP) { Video::getInstance()->incrFOV(1); } if(event.button.button==SDL_BUTTON_WHEELDOWN) { Video::getInstance()->incrFOV(-1); } break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_KP_ENTER: if(m_chat.active()) m_chat.openTextBox(playerList[0]->getIdOnline(),0.1); break; case SDLK_RETURN: if(m_chat.active()) m_chat.openTextBox(playerList[0]->getIdOnline(),0.1); break; case SDLK_a: playerList[0]->pressKey(LEFT,true); break; case SDLK_d: playerList[0]->pressKey(RIGHT,true); break; case SDLK_w: playerList[0]->pressKey(UP,true); break; case SDLK_s: playerList[0]->pressKey(DOWN,true); break; case SDLK_e: playerList[0]->pressKey(KEY_E,true); break; case SDLK_SPACE: if(playerList[0]->getLife()>0) { if(shiftPushed) { if(castSpell(playerList[0],"longjump")) { infosSocket s; s.confirmationID=-1; s.type=15; s.variable[1]=playerList[0]->getPos().X; s.variable[2]=playerList[0]->getPos().Y; s.variable[3]=playerList[0]->getPos().Z; m_online->sendSocket(s);//add socket to queue } } else castSpell(playerList[0],"jump"); } break; case SDLK_LSHIFT: playerList[0]->setGasing(true); shiftPushed=true; break; default: break; } break; case SDL_KEYUP: switch(event.key.keysym.sym) { case SDLK_KP_ENTER: if(m_chat.active()) m_chat.enterUp(); break; case SDLK_RETURN: if(m_chat.active()) m_chat.enterUp(); break; case SDLK_ESCAPE: fadingToLeave=true; command="menu"; break; case SDLK_a: playerList[0]->pressKey(LEFT,false); break; case SDLK_d: playerList[0]->pressKey(RIGHT,false); break; case SDLK_w: playerList[0]->pressKey(UP,false); break; case SDLK_s: playerList[0]->pressKey(DOWN,false); break; case SDLK_e: playerList[0]->pressKey(KEY_E,false); break; case SDLK_r: if(playerList.size()==1 && (!Online::getInstance()->active() || Online::getInstance()->inControl()))//if youre alone its ok { infosSocket s; s.confirmationID=m_online->nextConfirmationID(); s.type=6; m_online->sendSocket(s);//add socket to queue Map::getInstance()->restart(); Interface::getInstance()->setTarget(playerList[0]); m_camera.setCible(playerList[0]); m_camera.setMode("play"); m_mode="play"; m_chat.newMessage("Map reset.",-2); } break; case SDLK_k: break; case SDLK_c: if(grabCursor) { SDL_ShowCursor(SDL_ENABLE);//pas de curseur SDL_WM_GrabInput(SDL_GRAB_OFF); grabCursor=false; } else { SDL_ShowCursor(SDL_DISABLE);//pas de curseur SDL_WM_GrabInput(SDL_GRAB_ON); grabCursor=true; } break; case SDLK_LSHIFT: playerList[0]->setGasing(false); shiftPushed=false; break; case SDLK_SPACE: if(playerList[0]->getLife()>0) { if(shiftPushed) { if(castSpell(playerList[0],"longjump")) { infosSocket s; s.confirmationID=-1; s.type=15; s.variable[1]=playerList[0]->getPos().X; s.variable[2]=playerList[0]->getPos().Y; s.variable[3]=playerList[0]->getPos().Z; m_online->sendSocket(s);//add socket to queue } } else castSpell(playerList[0],"jump"); } break; default: break; } break; } } //update stuff updateTimes(); updateMultiplayer(); m_online->update(); Gsounds::getInstance()->update(m_camera.getPos().toLeft(),Vector3D(0,0,0),m_camera.getDir().toLeft(),Vector3D(0,0,1)); m_video->update(ft); Map::getInstance()->update(ft); Effects::getInstance()->update(ft); Tracer::getInstance()->traceCerr("debug","1"); Interface::getInstance()->setMode(m_mode); Interface::getInstance()->update(ft); handleCommands(); handleTracer(); Tracer::getInstance()->traceCerr("debug","2"); updateCamMode(); //you just died if(playerList[0]->getLife()<=0 && !alreadyDead) { alreadyDead=true; Interface::getInstance()->warning("../data/textures/interface/warning/died.png",0.03); //send chat msg stringstream ss; int dc=playerList[0]->getDeathCause(); if(dc==0) ss << playerList[0]->getOnlineName() << " mysteriously died."; else if(dc==1) ss << playerList[0]->getOnlineName() << " burned to death."; else if(dc==2) ss << playerList[0]->getOnlineName() << " committed suicide."; else if(dc==3) ss << playerList[0]->getOnlineName() << " exploded in pieces."; char* tempChar=stringtochar(ss.str()); m_chat.newMessage(tempChar,-2); delete tempChar; } else if(playerList[0]->getLife()>0) alreadyDead=false; Tracer::getInstance()->traceCerr("debug","3"); //endlevel if(checkEndLevel()) endLevel(); //crosshair Map::getInstance()->simulateRopeForCrosshair(playerList[0], (m_camera.getTarget()-(playerList[0]->getPos()+Vector3D(0,0,1))).normalize(), Interface::getInstance()->getCrosshair()); draw(); m_video->afterDraw(); //fps calcul m_fps++; m_fpsTime.couler(); if(m_fpsTime.ecouler(1000)) { Interface::getInstance()->setFPS(m_fps); m_fps=0; m_fpsTime.reset(); } Tracer::getInstance()->traceCerr("debug","8"); SDL_Delay(10); if(fadingToLeave) { if(Video::getInstance()->getFade()->getFading()==false) { Video::getInstance()->getFade()->setR(0); Video::getInstance()->getFade()->setG(0); Video::getInstance()->getFade()->setB(0); Video::getInstance()->getFade()->startFadeIn(); } if(Video::getInstance()->getFade()->getAlpha()>=1) { playLoop=false; fadingToLeave=false; } } } close(); }
void updateObject(Game* game){ int i; for(i=0; i<game->objectNumber; i++){ switch (game->map->objects[i].type){ case FLY : if(game->map->objects[i].initialized == 0) initializeMonster(&(game->map->objects[i]),game->map->objects[i].x,game->map->objects[i].y); if(game->map->objects[i].initialized == 1) updateMonsters(game, &(game->map->objects[i])); break; case COIN : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)) { getItem(game); game->map->objects[i].initialized =1 ; } break; case DOOR : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){ game->level++; endLevel(game); } break; case BLUE_BLOCK : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){ isSolid(game->player,&(game->map->objects[i])); } break; case GREEN_BLOCK : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){ isSolid(game->player,&(game->map->objects[i])); } break; case YELLOW_BLOCK : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){ isSolid(game->player,&(game->map->objects[i])); } break; case RED_BLOCK : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1)){ isSolid(game->player,&(game->map->objects[i])); } break; case PICK : if((collidePick(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0)){ if(game->life > 0) { game->life--; game->player->timerMort = 1; if(game->life<1) playerGameover(game); } } break; case ELEVATOR_BLOCK : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1)){ isSolid(game->player,&(game->map->objects[i])); } break; case ELEVATOR_SWITCH : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){ activateSwitch(ELEVATOR_BLOCK,game); game->map->objects[i].initialized = 1; game->input->use =0; playSoundFx(SWITCHSOUND,game); break; } if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){ desactivateSwitch(ELEVATOR_BLOCK,game); game->map->objects[i].initialized = 0; game->input->use = 0; playSoundFx(SWITCHSOUND,game); break; } break; case BLUE_SWITCH : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){ activateSwitch(BLUE_BLOCK,game); game->map->objects[i].initialized = 1; game->input->use =0; playSoundFx(SWITCHSOUND,game); break; } if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){ desactivateSwitch(BLUE_BLOCK,game); game->map->objects[i].initialized = 0; game->input->use = 0; playSoundFx(SWITCHSOUND,game); break; } break; case GREEN_SWITCH : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){ activateSwitch(GREEN_BLOCK,game); game->map->objects[i].initialized = 1; game->input->use =0; playSoundFx(SWITCHSOUND,game); break; } if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){ desactivateSwitch(GREEN_BLOCK,game); game->map->objects[i].initialized = 0; game->input->use = 0; playSoundFx(SWITCHSOUND,game); break; } break; case YELLOW_SWITCH : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){ activateSwitch(YELLOW_BLOCK,game); game->map->objects[i].initialized = 1; game->input->use =0; playSoundFx(SWITCHSOUND,game); break; } if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){ desactivateSwitch(YELLOW_BLOCK,game); game->map->objects[i].initialized = 0; game->input->use = 0; playSoundFx(SWITCHSOUND,game); break; } break; case RED_SWITCH : if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 0) && (game->input->use == 1)){ activateSwitch(RED_BLOCK,game); game->map->objects[i].initialized = 1; game->input->use =0; playSoundFx(SWITCHSOUND,game); break; } if((collideObject(game->player,&(game->map->objects[i])) == 1) && (game->map->objects[i].initialized == 1) && (game->input->use == 1)){ desactivateSwitch(RED_BLOCK,game); game->map->objects[i].initialized = 0; game->input->use = 0; playSoundFx(SWITCHSOUND,game); break; } break; default : break; } } }