summaryrefslogtreecommitdiff
path: root/src/SSVOpenHexagon/Core/HGGraphics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SSVOpenHexagon/Core/HGGraphics.cpp')
-rw-r--r--src/SSVOpenHexagon/Core/HGGraphics.cpp63
1 files changed, 37 insertions, 26 deletions
diff --git a/src/SSVOpenHexagon/Core/HGGraphics.cpp b/src/SSVOpenHexagon/Core/HGGraphics.cpp
index f7bad7b5..f3dc2ef4 100644
--- a/src/SSVOpenHexagon/Core/HGGraphics.cpp
+++ b/src/SSVOpenHexagon/Core/HGGraphics.cpp
@@ -80,7 +80,7 @@ void HexagonGame::draw()
if(!Config::getNoBackground())
{
- backgroundCamera->apply(*window);
+ window->setView(backgroundCamera->apply());
backgroundTris.clear();
@@ -93,7 +93,7 @@ void HexagonGame::draw()
render(backgroundTris);
}
- backgroundCamera->apply(*window);
+ window->setView(backgroundCamera->apply());
wallQuads3D.clear();
pivotQuads3D.clear();
@@ -104,7 +104,7 @@ void HexagonGame::draw()
capTris.clear();
// Reserve right amount of memory for all walls and custom walls
- wallQuads.reserve_more(4 * walls.size() + 4 * cwManager.count());
+ wallQuads.reserve_more_quad(walls.size() + cwManager.count());
for(CWall& w : walls)
{
@@ -116,8 +116,8 @@ void HexagonGame::draw()
if(status.started)
{
player.draw(getSides(), getColorMain(), getColorPlayer(), pivotQuads,
- capTris, playerTris, getColorCap(),
- Config::getAngleTiltIntensity());
+ capTris, playerTris, getColorCap(), Config::getAngleTiltIntensity(),
+ Config::getShowSwapBlinkingEffect());
}
if(Config::get3D())
@@ -237,12 +237,17 @@ void HexagonGame::draw()
drawTrailParticles();
}
+ if(Config::getShowSwapParticles())
+ {
+ drawSwapParticles();
+ }
+
render(wallQuads);
render(capTris);
render(pivotQuads);
render(playerTris);
- overlayCamera->apply(*window);
+ window->setView(overlayCamera->apply());
drawParticles();
drawText();
@@ -293,7 +298,7 @@ void HexagonGame::drawImguiLuaConsole()
}
SSVOH_ASSERT(overlayCamera.has_value());
- overlayCamera->unapply(*window);
+ window->setView(window->getRenderWindow().getDefaultView());
Imgui::render(*window);
}
@@ -301,21 +306,21 @@ void HexagonGame::drawImguiLuaConsole()
void HexagonGame::initFlashEffect(int r, int g, int b)
{
flashPolygon.clear();
+ flashPolygon.reserve(6);
const sf::Color color{static_cast<sf::Uint8>(r), static_cast<sf::Uint8>(g),
static_cast<sf::Uint8>(b), 0};
- flashPolygon.emplace_back(sf::Vector2f{-100.f, -100.f}, color);
+ const auto width = static_cast<float>(Config::getWidth());
+ const auto height = static_cast<float>(Config::getHeight());
+ const float offset = 100.f;
- flashPolygon.emplace_back(
- sf::Vector2f{Config::getWidth() + 100.f, -100.f}, color);
+ const sf::Vector2f nw{-offset, -offset};
+ const sf::Vector2f sw{-offset, height + offset};
+ const sf::Vector2f se{width + offset, height + offset};
+ const sf::Vector2f ne{width + offset, -offset};
- flashPolygon.emplace_back(
- sf::Vector2f{Config::getWidth() + 100.f, Config::getHeight() + 100.f},
- color);
-
- flashPolygon.emplace_back(
- sf::Vector2f{-100.f, Config::getHeight() + 100.f}, color);
+ flashPolygon.batch_unsafe_emplace_back_quad(color, nw, sw, se, ne);
}
void HexagonGame::drawKeyIcons()
@@ -373,6 +378,14 @@ void HexagonGame::drawTrailParticles()
}
}
+void HexagonGame::drawSwapParticles()
+{
+ for(SwapParticle& p : swapParticles)
+ {
+ render(p.sprite);
+ }
+}
+
void HexagonGame::updateText(ssvu::FT mFT)
{
if(window == nullptr)
@@ -509,7 +522,7 @@ void HexagonGame::updateText(ssvu::FT mFT)
// Set information text
text.setString(os.str());
text.setCharacterSize(getScaledCharacterSize(20.f));
- text.setOrigin(0, 0);
+ text.setOrigin({0.f, 0.f});
// Set FPS Text, if option is enabled.
if(Config::getShowFPS())
@@ -519,11 +532,11 @@ void HexagonGame::updateText(ssvu::FT mFT)
}
messageText.setCharacterSize(getScaledCharacterSize(32.f));
- messageText.setOrigin(ssvs::getGlobalWidth(messageText) / 2.f, 0);
+ messageText.setOrigin({ssvs::getGlobalWidth(messageText) / 2.f, 0});
const float growth = std::sin(pbTextGrowth);
pbText.setCharacterSize(getScaledCharacterSize(64.f) + growth * 10.f);
- pbText.setOrigin(ssvs::getGlobalWidth(pbText) / 2.f, 0);
+ pbText.setOrigin({ssvs::getGlobalWidth(pbText) / 2.f, 0});
// ------------------------------------------------------------------------
if(mustShowReplayUI())
@@ -586,7 +599,7 @@ void HexagonGame::drawText_TimeAndStatus(const sf::Color& offsetColor)
{
timeText.setFillColor(colorText);
timeText.setOrigin(ssvs::getLocalNW(timeText));
- timeText.setPosition(sf::Vector2f{padding, padding});
+ timeText.setPosition({padding, padding});
render(timeText);
}
@@ -595,8 +608,7 @@ void HexagonGame::drawText_TimeAndStatus(const sf::Color& offsetColor)
{
text.setFillColor(colorText);
text.setOrigin(ssvs::getLocalNW(text));
- text.setPosition(
- sf::Vector2f{padding, ssvs::getGlobalBottom(timeText) + padding});
+ text.setPosition({padding, ssvs::getGlobalBottom(timeText) + padding});
render(text);
}
@@ -608,13 +620,12 @@ void HexagonGame::drawText_TimeAndStatus(const sf::Color& offsetColor)
if(Config::getShowLevelInfo() || mustShowReplayUI())
{
- fpsText.setPosition(sf::Vector2f{
- padding, ssvs::getGlobalTop(levelInfoRectangle) - padding});
+ fpsText.setPosition(
+ {padding, ssvs::getGlobalTop(levelInfoRectangle) - padding});
}
else
{
- fpsText.setPosition(
- sf::Vector2f{padding, Config::getHeight() - padding});
+ fpsText.setPosition({padding, Config::getHeight() - padding});
}
render(fpsText);