diff options
author | Morxemplum <morxemplum+github@gmail.com> | 2021-05-23 15:53:00 -0700 |
---|---|---|
committer | Morxemplum <morxemplum+github@gmail.com> | 2021-05-23 15:53:00 -0700 |
commit | 915938dd24dad436aa0b7258476b9e23f85b37ea (patch) | |
tree | 9451e0b1b9eb7fd5b9afb706c2cebc92c66cc0d7 | |
parent | f4af15149de5c9d3b843cbfe2abcd9b68a9876d1 (diff) |
Add wall color override to style JSONswall_color_override
-rw-r--r-- | _RELEASE/Packs/experimental/Levels/wall_color_test.json | 12 | ||||
-rw-r--r-- | _RELEASE/Packs/experimental/Styles/construct.json | 37 | ||||
-rw-r--r-- | include/SSVOpenHexagon/Core/HexagonGame.hpp | 2 | ||||
-rw-r--r-- | include/SSVOpenHexagon/Data/StyleData.hpp | 3 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/HGGraphics.cpp | 36 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Data/StyleData.cpp | 7 |
6 files changed, 89 insertions, 8 deletions
diff --git a/_RELEASE/Packs/experimental/Levels/wall_color_test.json b/_RELEASE/Packs/experimental/Levels/wall_color_test.json new file mode 100644 index 00000000..1547a04f --- /dev/null +++ b/_RELEASE/Packs/experimental/Levels/wall_color_test.json @@ -0,0 +1,12 @@ +{ + "id": "wall_color_test", + "name": "Wall Color Test", + "description": "Another style test yay", + "author": "Morxemplum", + "menuPriority": 31, + "selectable": true, + "styleId": "construct", + "musicId": "jackRussel", + "luaFile": "Scripts/Levels/negative_pulse.lua", + "difficultyMults": [] +} diff --git a/_RELEASE/Packs/experimental/Styles/construct.json b/_RELEASE/Packs/experimental/Styles/construct.json new file mode 100644 index 00000000..2855ea87 --- /dev/null +++ b/_RELEASE/Packs/experimental/Styles/construct.json @@ -0,0 +1,37 @@ +{ + // Style data id + "id": "construct", + + // Hue options + "hue_min": 0, + "hue_max": 360, + "hue_ping_pong": true, + "hue_increment": 1.0, + + // Pulse options + "pulse_min": 0.0, + "pulse_max": 1, + "pulse_increment": 0.025, + + // 3D options + "3D_depth": 7, + "3D_skew": 0.15, + "3D_spacing": 1.5, + "3D_darken_multiplier": 1.5, + "3D_alpha_multiplier": 0.5, + "3D_alpha_falloff": 19.0, + + // Main color + "main": { "main": true, "dynamic": false, "value": [0, 0, 0, 255], "pulse": [0, 0, 0, 0] }, + "cap_color": {"legacy": false, "value": [255, 255, 255, 255], "pulse": [0, 0, 0, 0] }, + "player_color": {"dynamic": false, "value": [0, 255, 0, 255], "pulse": [0, 0, 0, 0] }, + "text_color": {"dynamic": false, "value": [255, 255, 255, 255], "pulse": [0, 0, 0, 0] }, + "wall_color": {"dynamic": false, "value": [0, 198, 254, 255], "pulse": [0, 0, 0, 0] }, + + // Background colors + "colors": + [ + { "dynamic": false, "dynamic_offset": false, "dynamic_darkness": 0.0, "value": [255, 145, 0, 255], "pulse": [0, 0, 0, 0]}, + { "dynamic": false, "dynamic_offset": false, "dynamic_darkness": 0.0, "value": [219, 124, 0, 255], "pulse": [0, 0, 0, 0]} + ] +} diff --git a/include/SSVOpenHexagon/Core/HexagonGame.hpp b/include/SSVOpenHexagon/Core/HexagonGame.hpp index 0f6661c8..5cd658c2 100644 --- a/include/SSVOpenHexagon/Core/HexagonGame.hpp +++ b/include/SSVOpenHexagon/Core/HexagonGame.hpp @@ -371,9 +371,11 @@ private: Utils::FastVertexVectorTris backgroundTris; Utils::FastVertexVectorQuads wallQuads; + Utils::FastVertexVectorQuads pivotQuads; Utils::FastVertexVectorTris playerTris; Utils::FastVertexVectorTris capTris; Utils::FastVertexVectorQuads wallQuads3D; + Utils::FastVertexVectorQuads pivotQuads3D; Utils::FastVertexVectorTris playerTris3D; public: diff --git a/include/SSVOpenHexagon/Data/StyleData.hpp b/include/SSVOpenHexagon/Data/StyleData.hpp index 2c85a154..796067b5 100644 --- a/include/SSVOpenHexagon/Data/StyleData.hpp +++ b/include/SSVOpenHexagon/Data/StyleData.hpp @@ -45,6 +45,7 @@ private: sf::Color currentMainColor{sf::Color::Black}; sf::Color currentPlayerColor{sf::Color::Black}; sf::Color currentTextColor{sf::Color::Black}; + sf::Color currentWallColor{sf::Color::White}; sf::Color current3DOverrideColor{sf::Color::Black}; std::vector<sf::Color> currentColors; @@ -95,6 +96,7 @@ private: ColorData mainColorData; ColorData playerColor; ColorData textColor; + ColorData wallColor; CapColor capColor; @@ -122,6 +124,7 @@ public: [[nodiscard]] const sf::Color& getMainColor() const noexcept; [[nodiscard]] const sf::Color& getPlayerColor() const noexcept; [[nodiscard]] const sf::Color& getTextColor() const noexcept; + [[nodiscard]] const sf::Color& getWallColor() const noexcept; [[nodiscard]] const std::vector<sf::Color>& getColors() const noexcept; [[nodiscard]] const sf::Color& getColor( const std::size_t mIdx) const noexcept; diff --git a/src/SSVOpenHexagon/Core/HGGraphics.cpp b/src/SSVOpenHexagon/Core/HGGraphics.cpp index 4ff495d9..e2432b93 100644 --- a/src/SSVOpenHexagon/Core/HGGraphics.cpp +++ b/src/SSVOpenHexagon/Core/HGGraphics.cpp @@ -92,8 +92,10 @@ void HexagonGame::draw() backgroundCamera->apply(); wallQuads3D.clear(); + pivotQuads3D.clear(); playerTris3D.clear(); wallQuads.clear(); + pivotQuads.clear(); playerTris.clear(); capTris.clear(); @@ -102,14 +104,14 @@ void HexagonGame::draw() for(CWall& w : walls) { - w.draw(getColorMain(), wallQuads); + w.draw(styleData.getWallColor(), wallQuads); } cwManager.draw(wallQuads); if(status.started) { - player.draw(getSides(), getColorMain(), getColorPlayer(), wallQuads, + player.draw(getSides(), getColorMain(), getColorPlayer(), pivotQuads, capTris, playerTris, styleData.getCapColorResult()); } @@ -117,9 +119,11 @@ void HexagonGame::draw() { const float depth(styleData._3dDepth); const std::size_t numWallQuads(wallQuads.size()); + const std::size_t numPivotQuads(pivotQuads.size()); const std::size_t numPlayerTris(playerTris.size()); wallQuads3D.reserve(numWallQuads * depth); + pivotQuads3D.reserve(numPivotQuads * depth); playerTris3D.reserve(numPlayerTris * depth); const float effect{ @@ -136,10 +140,7 @@ void HexagonGame::draw() for(std::size_t i = 0; i < depth; ++i) { wallQuads3D.unsafe_emplace_other(wallQuads); - } - - for(std::size_t i = 0; i < depth; ++i) - { + pivotQuads3D.unsafe_emplace_other(pivotQuads); playerTris3D.unsafe_emplace_other(playerTris); } @@ -166,9 +167,25 @@ void HexagonGame::draw() sf::Color overrideColor{Utils::getColorDarkened( styleData.get3DOverrideColor(), styleData._3dDarkenMult)}; - adjustAlpha(overrideColor, i); + // Draw pivot layers + for(std::size_t k = j * numPivotQuads; k < (j + 1) * numPivotQuads; + ++k) + { + pivotQuads3D[k].position += newPos; + pivotQuads3D[k].color = overrideColor; + } + + if(styleData.get3DOverrideColor() == styleData.getMainColor()) + { + overrideColor = Utils::getColorDarkened( + styleData.getWallColor(), styleData._3dDarkenMult); + + adjustAlpha(overrideColor, i); + } + + // Draw wall layers for(std::size_t k = j * numWallQuads; k < (j + 1) * numWallQuads; ++k) { @@ -185,6 +202,7 @@ void HexagonGame::draw() adjustAlpha(overrideColor, i); } + // Draw player layers for(std::size_t k = j * numPlayerTris; k < (j + 1) * numPlayerTris; ++k) { @@ -195,10 +213,12 @@ void HexagonGame::draw() } render(wallQuads3D); + render(pivotQuads3D); render(playerTris3D); render(wallQuads); - render(playerTris); render(capTris); + render(pivotQuads); + render(playerTris); overlayCamera->apply(); diff --git a/src/SSVOpenHexagon/Data/StyleData.cpp b/src/SSVOpenHexagon/Data/StyleData.cpp index cabfd293..2a6b18a6 100644 --- a/src/SSVOpenHexagon/Data/StyleData.cpp +++ b/src/SSVOpenHexagon/Data/StyleData.cpp @@ -61,6 +61,7 @@ StyleData::StyleData(const ssvuj::Obj& mRoot) colorDataFromObjOrDefault(mRoot, "player_color", mainColorData)}, // textColor{ colorDataFromObjOrDefault(mRoot, "text_color", mainColorData)}, // + wallColor{colorDataFromObjOrDefault(mRoot, "wall_color", mainColorData)}, capColor{parseCapColor(ssvuj::getObj(mRoot, "cap_color"))} { currentHue = hueMin; @@ -173,6 +174,7 @@ void StyleData::computeColors() currentMainColor = calculateColor(currentHue, pulseFactor, mainColorData); currentPlayerColor = calculateColor(currentHue, pulseFactor, playerColor); currentTextColor = calculateColor(currentHue, pulseFactor, textColor); + currentWallColor = calculateColor(currentHue, pulseFactor, wallColor); current3DOverrideColor = _3dOverrideColor.a != 0 ? _3dOverrideColor : getMainColor(); @@ -300,6 +302,11 @@ void StyleData::setCapColor(const CapColor& mCapColor) return currentTextColor; } +[[nodiscard]] const sf::Color& StyleData::getWallColor() const noexcept +{ + return currentWallColor; +} + [[nodiscard]] const std::vector<sf::Color>& StyleData::getColors() const noexcept { |