Esempio n. 1
0
    CWall::CWall(Entity& mE, HexagonGame& mHexagonGame, const Vec2f& mCenterPos,
        int mSide, float mThickness, float mDistance, const SpeedData& mSpeed,
        const SpeedData& mCurve)
        : Component{mE}, hexagonGame(mHexagonGame), centerPos{mCenterPos},
          speed{mSpeed}, curve{mCurve}, distance{mDistance},
          thickness{mThickness}, side{mSide}
    {
        float div{ssvu::tau / hexagonGame.getSides() * 0.5f},
            angle{div * 2.f * side};

        vertexPositions[0] = getOrbitRad(centerPos, angle - div, distance);
        vertexPositions[1] = getOrbitRad(centerPos, angle + div, distance);
        vertexPositions[2] =
            getOrbitRad(centerPos, angle + div + hexagonGame.getWallAngleLeft(),
                distance + thickness + hexagonGame.getWallSkewLeft());
        vertexPositions[3] = getOrbitRad(centerPos,
            angle - div + hexagonGame.getWallAngleRight(),
            distance + thickness + hexagonGame.getWallSkewRight());
    }
Esempio n. 2
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);
	}