Player* PlayerManager::createPlayer(const QString& nickname) { Player* player = new Player("", nickname); player->autogenerateId(); setCurrentPlayer(player); loadPlayers(); return player; }
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; }
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); }