示例#1
0
void GameState::switchLevels(Level &targetLevel, bool force)
{
	if(m_character->isDead() && !force)
	{
		return; // You're not going anywhere
	}

	m_otherLevel = m_currentLevel;
	m_currentLevel = &targetLevel;

	m_levelSwitching = false;
	m_levelAlpha = 255;

	SoundHandler::Music::Value music = getCurrentMusic();
	SoundHandler::playMusic(music);

	if(CollisionHandler::isPlayerInWall(*m_character, *m_currentLevel))
	{
		m_deathCamLifetime = 3;
		SoundHandler::play(SoundHandler::Sound::Squish);
		m_character->kill();
	}
}
示例#2
0
void                      SoundSystem::setMusicVolume(float const& volume) {

	_musicVolume = volume;
	getCurrentMusic().setVolume(_musicVolume * _masterVolume);
}
示例#3
0
void Plateau::renderLogic()
{
    if(test == 4)
    {
        test = 0;
        float bulletPosX , bulletPosY = 0.f;

        float enemyPosX , enemyPosY = 0.f;

        auto scene = myApplication.getCurrentScene();
        for(std::unordered_set<std::shared_ptr<Bullet> >::iterator i = myBullets.begin(); i!=myBullets.end();)
        {

            std::shared_ptr<Bullet> bullet = *i;

            bulletPosX = bullet->myEntity->getPosition().x;
            bulletPosY = bullet->myEntity->getPosition().y;

            if(bullet->unregistered)
            {
                myBullets.erase(*(i++));
            }
            else
            {
                for(std::unordered_set<std::shared_ptr<Ennemi> >::iterator e = myEnnemis.begin(); e!=myEnnemis.end();)
                {
                    std::shared_ptr<Ennemi> ennemi = *e;
                    enemyPosX = ennemi->myEntity->getPosition().x;
                    enemyPosY = ennemi->myEntity->getPosition().y;

                    if(ennemi->unregistered)
                    {
                        myEnnemis.erase(*(e++));
                    }
                    else
                    {
                        if(bullet->owner == Bullet::PLAYER&&ennemi->collision(*bullet))
                        {
                            bullet->unregister();
                            ennemi->unregister();
                            myJoueur->points++;
                            if(myJoueur->points%10==0)
                            {
                                myPopTime = myPopTime/1.5;

                                if(scene->getCurrentMusic().getStatus() != sf::Music::Stopped)
                                {
                                    scene->loadMusic(MUSIC[myZikIndex++%3]);
                                    scene->playMusic();
                                }
                            }

                            scene->addTemporaryParticleEntity(enemyPosX,enemyPosY,30,30,0,700000,EXPLOSIONS,EXPLOSION);
                            scene->addTemporaryParticleEntity(enemyPosX,enemyPosY,32,32,0,15000000,BLAST[myBlastIndex],BLAST[myBlastIndex]);
                            myBlastIndex = (myBlastIndex+1)%3;
                            scene->addTemporarySoundEntity(EXPLOSION);
                            scene->makeExplosion(b2Vec2(se::Utils::pixelsToMeters(ennemi->myEntity->getPosition().x),se::Utils::pixelsToMeters(ennemi->myEntity->getPosition().y)),5.0f,0.2f);
                        }
                        ++e;
                    }
                }
                if(bullet->owner == Bullet::ENNEMI&&myJoueur->collision(*bullet))
                {
                    bullet->unregister();
                    myJoueur->lowerHealth();

                    scene->addTemporaryParticleEntity(bulletPosX,bulletPosY,64,64,0,50000,HITS,HIT);
                    scene->addTemporarySoundEntity(IMPACT);

                }
                ++i;
            }

        }

        if(myClock.getElapsedTime().asMicroseconds()>=myPopTime&&myEnnemis.size()<MAX_ENNEMI)
            //if(!one)
        {
            one=true;
            myClock.restart();
            std::shared_ptr<Ennemi> newEnnemi = std::make_shared<Ennemi>(myApplication,*this);

            auto scene = myApplication.getCurrentScene();
            scene->registerRenderable(newEnnemi->myEntity);
            scene->registerRenderable(newEnnemi->myShadow);

            scene->registerRenderable(newEnnemi);
            myEnnemis.insert(newEnnemi);
        }
    }

    test++;
}