Example #1
0
GameState::GameState(StateStack& stateStack, Context context, States::ID id)
	:
	State(stateStack, context, id),
	mMap(context.textures, context.fonts, &mobManager, &m_light_manager, mMutex),
	mapSize(mMap.size.x, mMap.size.y),
	mView(sf::Rect<float>(0, 0, context.window->getSize().x, context.window->getSize().y)),
	mNormalRender(),
	mDiffuseRender(),
	mNormalTextures(),
	mShader(),
	mobManager(),
	mPlayer(context.textures, context.fonts, &mobManager.mobs, &m_projectile_manager, &mMap.tiles, &m_light_manager),
	mPlayerController(&mPlayer, &pathFinder, &mMap, &mobManager),
	mParticleSystem(),
	mLoadingThread(&gen::Map::Gen, &mMap),
	mFirstLoad(true),
	m_lost(false),
	m_win(false)
{
	mLoadingSprite.setTexture(*context.textures->getTexture(Textures::LoadingScreen));

	pathFinder = PathFinder(&mMap.tiles, mMap.size);
	mobManager = MobManager(*context.textures, &mMap.tiles, &pathFinder, &m_projectile_manager.m_spells, &m_projectile_manager.m_arrows);
	m_projectile_manager = ProjectileManager(&mobManager, &mParticleSystem);
	mobManager.ptr_spells = &m_projectile_manager.m_spells;
	mobManager.ptr_arrows = &m_projectile_manager.m_arrows;
	mPlayer.ptr_tree = &mobManager.m_tree;
	mPlayer.setPosition(-1280, -720);

	mCurrentType = gen::Cave;
	mMap.type = mCurrentType;
	mCurrentMapTexture = Textures::Cave_Sheet;
	mView.zoom(1.f);
	mView.setCenter(-mView.getSize().x, -mView.getSize().y);

	sf::Vector2u size = context.window->getSize();
	mNormalRender.create(size.x, size.y);
	mDiffuseRender.create(size.x, size.y);

	mShader.loadFromFile("resources/shaders/shader.frag", sf::Shader::Fragment);
	loadNormals();

	context.mouse->setState(gui::Mouse::Attack);

	mShader.setParameter("texture", sf::Shader::CurrentTexture);
	mShader.setParameter("normal", mNormalRender.getTexture());
	mShader.setParameter("Resolution", getContext().window->getSize().x,  getContext().window->getSize().y);
	mShader.setParameter("AmbientColor", .1f, .1f, .1f, 0.f);
}
Example #2
0
    static ProjectileManager& getInstance() {
        static ProjectileManager manager = ProjectileManager();

        return manager;
    }