Exemple #1
0
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();
}
Exemple #2
0
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();
}
Exemple #3
0
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();
    }
}
Exemple #5
0
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);
}
Exemple #6
0
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;
}
Exemple #7
0
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);
	}
}
Exemple #8
0
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;
}
Exemple #9
0
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();
}
Exemple #10
0
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;
        }
    }
}