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()); }
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); }