Ejemplo n.º 1
0
Player* PlayerManager::createPlayer(const QString& nickname)
{
	Player* player = new Player("", nickname);
	player->autogenerateId();
	setCurrentPlayer(player);
	loadPlayers();
	return player;
}
Ejemplo n.º 2
0
bool PlayerManager::removePlayer(const QByteArray& playerId)
{
	if ( currentPlayer && currentPlayer->getId() == playerId )
	{
		currentPlayer->remove();
		setCurrentPlayer(nullptr);
	}
	else
	{
		Player* player = findPlayerById(playerId);
		if ( player )
			player->remove();
	}
	loadPlayers();
	return true;
}
Ejemplo n.º 3
0
void LoadingState::loadModuleData()
{
    const int SCREEN_WIDTH = _gameEngine->getUIManager()->getScreenWidth();
    const int SCREEN_HEIGHT = _gameEngine->getUIManager()->getScreenHeight();
    
    setProgressText("Tidying some space...", 0);

    //Make sure all data is cleared first
    game_quit_module();

    setProgressText("Calculating some math...", 10);
    BillboardSystem::get().reset();

    //initialize math objects
    make_turntosin();

    // Linking system
    setProgressText("Initializing module linking... ", 20);
    if (!link_build_vfs( "mp_data/link.txt", LinkList)) Log::get().warn("Failed to initialize module linking\n");

    // initialize the collision system
    setProgressText("Beautifying graphics...", 40);

    // Reset all loaded "profiles" in the "profile system".
    ProfileSystem::get().reset();

    // do some graphics initialization
    gfx_system_make_enviro();

    //Load players if needed
    if(!_playersToLoad.empty()) {
        setProgressText("Loading players...", 50);
        if(!loadPlayers()) {
			Log::get().warn("Failed to load players!\n");
            endState();
            return;
        }
    }

    // try to start a new module
    setProgressText("Loading module data...", 60);
    if(!game_begin_module(_loadModule)) {
		Log::get().warn("Failed to load module!\n");
        endState();
        return;
    }
    _currentModule->setImportPlayers(_playersToLoad);

    setProgressText("Almost done...", 90);

    // set up the cameras *after* game_begin_module() or the player devices will not be initialized
    // and camera_system_begin() will not set up thte correct view
    std::shared_ptr<CameraSystem> cameraSystem = CameraSystem::request(local_stats.player_count);

    // Fade out music when finished loading
    AudioSystem::get().stopMusic();

    // make sure the per-module configuration settings are correct
    config_synch(&egoboo_config_t::get(), true, false);

    // Complete!
    setProgressText("Finished!", 100);

    // Hit that gong
    AudioSystem::get().playSoundFull(AudioSystem::get().getGlobalSound(GSND_GAME_READY));

    //1 second delay to let music finish, this prevents a frame lag on module startup
    std::this_thread::sleep_for(std::chrono::seconds(2));

    //Add the start button once we are finished loading
    std::shared_ptr<Button> startButton = std::make_shared<Button>("Press Space to begin", SDLK_SPACE);
    startButton->setSize(400, 30);
    startButton->setPosition(SCREEN_WIDTH/2 - startButton->getWidth()/2, SCREEN_HEIGHT-50);
    startButton->setOnClickFunction(
        [cameraSystem]{

            //Have to do this function in the OpenGL context thread or else it will fail
            Ego::Graphics::TextureAtlasManager::get().loadTileSet();

            //Hush gong
            AudioSystem::get().fadeAllSounds();
            _gameEngine->setGameState(std::make_shared<PlayingState>(cameraSystem));
        });
    addComponent(startButton);

    //Hide the progress bar
    _progressBar->setVisible(false);
}