Example #1
0
void advanceGame(void* gameMemory, OOGameInput* input, OOGameOutput* output) {
    cbgame * game = (cbgame*) gameMemory;
    oofloat respawnTime = 2.f;
    if(game->p1.score == CombatGame_ScoreLimit)
    {
        //Player 1 wins
    }
    else if (game->p2.score == CombatGame_ScoreLimit)
    {
        //Player 2 Wins
    }
    
    if(!game->p1.alive && game->time >= game->p1.timeOfDeath + respawnTime)
    {
        respawnPlayer(game, &game->p1);
    }
    else if (!game->p2.alive && game->time >= game->p2.timeOfDeath + respawnTime)
    {
        respawnPlayer(game, &game->p2);
    }
    game->input = input;
    game->output = output;
    
    if( !game->initialised ) {
        initGame(game);
    }
    
    game->moveDelta = game->p1.x;
    updateGame(game);
    game->moveDelta -= game->p1.x;
    
    clearScreen(game);
    moveWall(game);
    drawPlayer(game, &game->p2);
    drawPlayer(game, &game->p1);
    drawArena(game);
    

    if(game->p1.missile.isFiring)
    {
        drawMissile(game,&game->p1);
    }
    if(game->p2.missile.isFiring)
    {
        drawMissile(game,&game->p2);
    }
    
    
    game->time += game->input->dt;
}
Example #2
0
void EntityManager::setMode(Mode mode)
{
	// re-init particles
	m_particles.clear();
	MessageSystem::clear();

	ControlPanel::getInstance().setMode(mode);

	switch (mode)
	{
		case LEVELS_MODE:
			ControlPanel::getInstance().setLevelDuration(m_levels.getDuration());
			m_spawnMethod = &EntityManager::levelsCallback;
			// le vaisseau du joueur est conservé d'un niveau à l'autre
			if (m_mode != LEVELS_MODE || m_player == NULL || m_player->getHP() <= 0)
			{
				respawnPlayer();
			}
			else
			{
				// Delete all entities but player
				for (EntityList::iterator it = m_entities.begin(); it != m_entities.end();)
				{
					if (*it != m_player)
					{
						delete *it;
						it = m_entities.erase(it);
					}
					else
					{
						++it;
					}
				}
				m_player->setPosition(0, m_height / 2);
				m_player->onInit();
			}
			// Set background images
			if (m_levels.getBottomLayer())
			{
				m_layer1.setTexture(*m_levels.getBottomLayer());
				m_layer1.setColor(sf::Color::White);
			}

			if (m_levels.getTopLayer())
			{
				m_layer2.setTexture(*m_levels.getTopLayer());
				m_layer2.setColor(m_levels.getLayerColor());
			}

			m_decor_height = m_levels.getDecorHeight();
			m_stars_emitter.createParticles(m_levels.getStarsCount());

			// Set background music
			if (m_levels.getMusicName() != NULL)
			{
				std::string filename = Resources::getSearchPath() + "/music/" + m_levels.getMusicName();
				SoundSystem::openMusicFromFile(filename);
				SoundSystem::playMusic();
			}
			else
			{
				SoundSystem::stopMusic();
			}
			break;

		case INFINITY_MODE:
		{
			m_spawnMethod = &EntityManager::infinityModeCallback;
			respawnPlayer();

			// Fog with random color on layer 2,
			sf::Color color(math::rand(0, 40), math::rand(0, 40), math::rand(20, 60));
			m_layer1.setTexture(Resources::getTexture("layers/blue.jpg"));
			m_layer1.setColor(color);
			m_layer2.setTexture(Resources::getTexture("layers/fog.png"));
			m_layer2.setColor(color);

			m_decor_height = 0;
			m_stars_emitter.createParticles(math::rand(50, 100));
			SoundSystem::openMusicFromFile(Resources::getSearchPath() + "/music/spacesong.mod");
			SoundSystem::playMusic();
			m_max_droppable_index = 1;
			m_max_droppable_points = 0;
			break;
		}
	}
	m_mode = mode;
	m_timer = 0.f;
}