Beispiel #1
0
	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;
	}
Beispiel #2
0
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);
}