bool ConfigService::start() { mGlobalConfig->sige.connect ( sigc::mem_fun ( *this, &ConfigService::configError ) ); mGlobalConfig->sigv.connect ( sigc::mem_fun ( *this, &ConfigService::updatedConfig ) ); mUserConfig->sige.connect ( sigc::mem_fun ( *this, &ConfigService::configError ) ); mUserConfig->sigv.connect ( sigc::mem_fun ( *this, &ConfigService::updatedConfig ) ); mInstanceConfig->sige.connect ( sigc::mem_fun ( *this, &ConfigService::configError ) ); mInstanceConfig->sigv.connect ( sigc::mem_fun ( *this, &ConfigService::updatedConfig ) ); registerConsoleCommands(); setRunning ( true ); return true; }
GameState::GameState(StateStack& stack, Context context) : State (stack, context), m_textureResource (context.gameInstance.getTextureResource()), m_shaderResource (context.gameInstance.getShaderResource()), m_collisionWorld (70.f), m_npcController (m_commandStack, m_textureResource, m_shaderResource), m_scoreBoard (stack, context), m_particleController(m_textureResource, m_shaderResource), m_mapController (m_commandStack, m_textureResource, m_shaderResource) { //launch loading window launchLoadingScreen(); //build world Scene::defaultCamera.setView(getContext().defaultView); m_scene.addShader(m_shaderResource.get(Shader::Type::FlatShaded)); m_scene.addShader(m_shaderResource.get(Shader::Type::NormalMapSpecular)); m_scene.addShader(m_shaderResource.get(Shader::Type::NormalMap)); m_scene.addShader(m_shaderResource.get(Shader::Type::Metal)); m_scene.addShader(m_shaderResource.get(Shader::Type::Water)); m_scene.addShader(m_shaderResource.get(Shader::Type::WaterDrop)); m_scene.addObserver(m_scoreBoard); m_scene.addObserver(m_particleController); m_scene.addObserver(m_audioController); float origin = lightDrawable.getRadius(); lightDrawable.setOrigin(origin, origin); lightDrawable.setFillColor(sf::Color(255u, 255u, 255u, 140u)); lightDrawable.setOutlineColor(sf::Color(255u, 255u, 255u, 11u)); lightDrawable.setOutlineThickness(80.f); //parse map Map map("res/maps/" + context.gameData.mapList[context.gameData.mapIndex]); //set up controllers m_players.reserve(2); m_players.emplace_back(m_commandStack, Category::PlayerOne, m_textureResource, m_shaderResource.get(Shader::Type::NormalMapSpecular)); m_players.back().setKeyBinds(context.gameData.playerOne.keyBinds); m_players.emplace_back(m_commandStack, Category::PlayerTwo, m_textureResource, m_shaderResource.get(Shader::Type::NormalMapSpecular)); m_players.back().setKeyBinds(context.gameData.playerTwo.keyBinds); std::function<void(const sf::Vector2f&, Player&)> playerSpawnFunc = std::bind(&GameState::addPlayer, this, std::placeholders::_1, std::placeholders::_2); m_players[0].setSpawnFunction(playerSpawnFunc); m_players[1].setSpawnFunction(playerSpawnFunc); m_players[0].setSpawnPosition(map.getPlayerOneSpawn()); m_players[1].setSpawnPosition(map.getPlayerTwoSpawn()); std::function<void(const sf::Vector2f&, const sf::Vector2f&)> npcSpawnFunc = std::bind(&GameState::addNpc, this, std::placeholders::_1, std::placeholders::_2); m_npcController.setSpawnFunction(npcSpawnFunc); m_npcController.setNpcCount(map.getNpcCount()); std::function<void(const Map::Node&)> mapSpawnFunc = std::bind(&GameState::addMapBody, this, std::placeholders::_1); m_mapController.setSpawnFunction(mapSpawnFunc); m_mapController.loadMap(map); m_scoreBoard.addObserver(m_players[0]); m_scoreBoard.addObserver(m_players[1]); m_scoreBoard.addObserver(m_npcController); if (context.gameData.playerOne.enabled) m_scoreBoard.enablePlayer(Category::PlayerOne); if (context.gameData.playerTwo.enabled) m_scoreBoard.enablePlayer(Category::PlayerTwo); m_scoreBoard.setMaxNpcs(map.getNpcTotal()); m_scene.setLayerDrawable(m_mapController.getDrawable(MapController::MapDrawable::Solid), Scene::Solid); m_scene.setLayerDrawable(m_mapController.getDrawable(MapController::MapDrawable::RearDetail), Scene::RearDetail); m_scene.setLayerDrawable(m_mapController.getDrawable(MapController::MapDrawable::FrontDetail), Scene::FrontDetail); m_scene.setLayerDrawable(m_mapController.getDrawable(MapController::MapDrawable::Background), Scene::Background); m_scene.setAmbientColour(map.getAmbientColour()); m_scene.setSunLightColour(map.getSunlightColour()); //sf::Clock c; //while (c.getElapsedTime().asSeconds() < 5.f){} std::string theme = map.getAudioTheme(); std::string music; if (!theme.empty()) { m_audioController.loadTheme(theme); music = "res/sound/themes/" + theme + "/main.ogg"; } //close loading screen before starting music quitLoadingScreen(); if (!music.empty()) context.gameInstance.getMusicPlayer().play(music); registerConsoleCommands(); context.renderWindow.setMouseCursorVisible(false); }