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); }
static ProjectileManager& getInstance() { static ProjectileManager manager = ProjectileManager(); return manager; }