Exemplo n.º 1
0
void HexagonGame::drawBackground()
{
    float div{360.f / getSides() * 1.0001f};
    float distance{1500};

    VertexArray vertices{PrimitiveType::Triangles, 3};

    for(int i{0}; i < getSides(); i++)
    {
        float angle { div * i };
        Color currentColor { styleData.getCurrentA() };

        if (i % 2 == 0)
        {
            currentColor = styleData.getCurrentB();
            if (i == getSides() - 1) currentColor = getColorDarkened(currentColor, 1.4f);
        }

        Vector2f p1 = getOrbit(centerPos, angle + div * 0.5f, distance);
        Vector2f p2 = getOrbit(centerPos, angle - div * 0.5f, distance);

        vertices.append(Vertex{centerPos, currentColor});
        vertices.append(Vertex{p1, currentColor});
        vertices.append(Vertex{p2, currentColor});
    }

    gameTexture.draw(vertices);
}
Exemplo n.º 2
0
	Color StyleData::calculateColor(const ColorData& mColorData) const
	{
		Color color{mColorData.color};

		if(mColorData.dynamic)
		{
			const auto& dynamicColor(getColorFromHue((currentHue + mColorData.hueShift) / 360.f));

			if(!mColorData.main)
			{
				if(mColorData.dynamicOffset)
				{
					assert(mColorData.offset != 0);

					color.r += dynamicColor.r / mColorData.offset;
					color.g += dynamicColor.g / mColorData.offset;
					color.b += dynamicColor.b / mColorData.offset;
					color.a += dynamicColor.a;
				}
				else color = getColorDarkened(dynamicColor, mColorData.dynamicDarkness);
			}
			else color = dynamicColor;
		}

		const auto& pulse(mColorData.pulse);
		return Color(getClamped(color.r + pulse.r * pulseFactor, 0.f, 255.f),
					 getClamped(color.g + pulse.g * pulseFactor, 0.f, 255.f),
					 getClamped(color.b + pulse.b * pulseFactor, 0.f, 255.f),
					 getClamped(color.a + pulse.a * pulseFactor, 0.f, 255.f));
	}
Exemplo n.º 3
0
	void HexagonGame::draw()
	{
		wallQuads.clear();
		styleData.computeColors();

		window.clear(Color::Black);
		if(!Config::getNoBackground()) { backgroundCamera.apply(); styleData.drawBackground(window, ssvs::zeroVec2f, getSides()); }
		if(Config::get3D())
		{
			status.drawing3D = true;

			float effect{styleData._3dSkew * Config::get3DMultiplier() * status.pulse3D};
			Vec2f skew{1.f, 1.f + effect};
			backgroundCamera.setSkew(skew);

			for(auto i(0u); i < depthCameras.size(); ++i)
			{
				Camera& depthCamera(depthCameras[i]);
				depthCamera.setView(backgroundCamera.getView());
				depthCamera.setSkew(skew);
				depthCamera.setOffset({0, styleData._3dSpacing * (i * styleData._3dPerspectiveMult) * (effect * 3.6f)});
			}

			for(auto i(0u); i < depthCameras.size(); ++i)
			{
				status.overrideColor = getColorDarkened(styleData.get3DOverrideColor(), styleData._3dDarkenMult);
				status.overrideColor.a /= styleData._3dAlphaMult;
				status.overrideColor.a -= i * styleData._3dAlphaFalloff;

				depthCameras[i].apply();
				manager.draw();
				render(wallQuads);
			}
			status.drawing3D = false;
		}

		backgroundCamera.apply();
		manager.draw();
		render(wallQuads);

		overlayCamera.apply();
		drawText();

		if(Config::getFlash()) render(flashPolygon);
		if(mustTakeScreenshot) { window.saveScreenshot("screenshot.png"); mustTakeScreenshot = false; }
	}
Exemplo n.º 4
0
	void HexagonGame::draw()
	{
		styleData.computeColors();

		window.clear(Color::Black);
		if(!getNoBackground()) { backgroundCamera.apply(); styleData.drawBackground(window.getRenderWindow(), {0, 0}, getSides()); }
		if(get3D())
		{
			status.drawing3D = true;

			float effect{styleData.get3DSkew() * get3DMultiplier() * status.pulse3D};
			Vector2f skew{1.f, 1.f + effect};
			backgroundCamera.setSkew(skew);

			for(unsigned int i{0}; i < depthCameras.size(); ++i)
			{
				Camera& depthCamera(depthCameras[i]);
				depthCamera.setView(backgroundCamera.getView());
				depthCamera.setSkew(skew);
				depthCamera.setOffset({0, styleData.get3DSpacing() * (i * styleData.get3DPerspectiveMultiplier()) * (effect * 3.6f)});
			}

			for(unsigned int i{0}; i < depthCameras.size(); ++i)
			{
				status.overrideColor = getColorDarkened(styleData.get3DOverrideColor(), styleData.get3DDarkenMultiplier());
				status.overrideColor.a /= styleData.get3DAlphaMultiplier();
				status.overrideColor.a -= i * styleData.get3DAlphaFalloff();

				depthCameras[i].apply();
				manager.draw();
			}
			status.drawing3D = false;
		}
		backgroundCamera.apply(); manager.draw();
		overlayCamera.apply(); drawText();

		if(getFlash()) render(flashPolygon);
		if(mustTakeScreenshot) { window.getRenderWindow().capture().saveToFile("screenshot.png"); mustTakeScreenshot = false; }
	}
Exemplo n.º 5
0
	void StyleData::drawBackground(RenderTarget& mRenderTarget, const Vec2f& mCenterPos, int mSides)
	{
		float div{ssvu::tau / mSides * 1.0001f}, distance{4500};

		ssvs::VertexVector<sf::PrimitiveType::Triangles> vertices;
		const auto& colors(getColors());

		for(int i{0}; i < mSides; ++i)
		{
			float angle{div * i};
			Color currentColor{ssvu::getByWrapIdx(colors, i)};

			if(Config::getBlackAndWhite()) currentColor = Color::Black;
			else if(i % 2 == 0 && i == mSides - 1) currentColor = getColorDarkened(currentColor, 1.4f);

			vertices.emplace_back(mCenterPos, currentColor);
			vertices.emplace_back(getOrbitRad(mCenterPos, angle + div * 0.5f, distance), currentColor);
			vertices.emplace_back(getOrbitRad(mCenterPos, angle - div * 0.5f, distance), currentColor);
		}

		mRenderTarget.draw(vertices);
	}