diff options
author | Vittorio Romeo <vittorio.romeo@outlook.com> | 2020-06-30 23:46:26 +0100 |
---|---|---|
committer | Vittorio Romeo <vittorio.romeo@outlook.com> | 2020-06-30 23:46:26 +0100 |
commit | c0f7c4f89e92e18a521a45dec56d18a6509ca61e (patch) | |
tree | 4809c6b7b50078b80d2da8eee3246d5fc5c9de8d | |
parent | 81d1fd2e5863f96fff42d09ea4cf1cc92ce8ac31 (diff) |
Minor fixes and refactoringlua_additionalFunctionsAndFixes
-rw-r--r-- | _RELEASE/config.json | 2 | ||||
-rw-r--r-- | include/SSVOpenHexagon/Core/HexagonGame.hpp | 4 | ||||
-rw-r--r-- | include/SSVOpenHexagon/Data/StyleData.hpp | 5 | ||||
-rw-r--r-- | include/SSVOpenHexagon/Utils/Utils.hpp | 11 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Components/CPlayer.cpp | 22 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Components/CWall.cpp | 17 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/HGScripting.cpp | 2 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/HGUpdate.cpp | 7 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/HexagonGame.cpp | 6 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/MenuGame.cpp | 8 |
10 files changed, 43 insertions, 41 deletions
diff --git a/_RELEASE/config.json b/_RELEASE/config.json index 6e1809a4..6ca64e4b 100644 --- a/_RELEASE/config.json +++ b/_RELEASE/config.json @@ -27,7 +27,7 @@ "no_music" : false,
"no_rotation" : false,
"no_sound" : false,
- "official" : true,
+ "official" : false,
"online" : true,
"pixel_multiplier" : 1,
"player_focus_speed" : 4.6250,
diff --git a/include/SSVOpenHexagon/Core/HexagonGame.hpp b/include/SSVOpenHexagon/Core/HexagonGame.hpp index 272d5f43..f19d5688 100644 --- a/include/SSVOpenHexagon/Core/HexagonGame.hpp +++ b/include/SSVOpenHexagon/Core/HexagonGame.hpp @@ -258,7 +258,7 @@ public: return game; } - sf::Vector2f getFieldPos() const noexcept + [[nodiscard]] const sf::Vector2f& getFieldPos() const noexcept { return levelStatus.fieldPos; } @@ -268,7 +268,7 @@ public: return status.radius; } - const StyleData& getStyleData() const noexcept + [[nodiscard]] const StyleData& getStyleData() const noexcept { return styleData; } diff --git a/include/SSVOpenHexagon/Data/StyleData.hpp b/include/SSVOpenHexagon/Data/StyleData.hpp index de7d8803..f625cfcb 100644 --- a/include/SSVOpenHexagon/Data/StyleData.hpp +++ b/include/SSVOpenHexagon/Data/StyleData.hpp @@ -66,9 +66,12 @@ public: pulseIncrement{ssvuj::getExtr<float>(mRoot, "pulse_increment", 0.f)}, huePingPong{ssvuj::getExtr<bool>(mRoot, "hue_ping_pong", false)}, maxSwapTime{ssvuj::getExtr<float>(mRoot, "max_swap_time", 100.f)}, - bgTileRadius{ssvuj::getExtr<float>(mRoot, "bg_tile_radius", 4500.f)}, + colorPosOffset{ssvuj::getExtr<int>(mRoot, "color_pos_offset", 0)}, + bgTileRadius{ssvuj::getExtr<float>(mRoot, "bg_tile_radius", 7500.f)}, + bgRotOff{ssvuj::getExtr<float>(mRoot, "bg_rot_off", 0.f)}, _3dDepth{ssvuj::getExtr<float>(mRoot, "3D_depth", 15.f)}, _3dSkew{ssvuj::getExtr<float>(mRoot, "3D_skew", 0.18f)}, + skew{}, _3dSpacing{ssvuj::getExtr<float>(mRoot, "3D_spacing", 1.f)}, _3dDarkenMult{ ssvuj::getExtr<float>(mRoot, "3D_darken_multiplier", 1.5f)}, diff --git a/include/SSVOpenHexagon/Utils/Utils.hpp b/include/SSVOpenHexagon/Utils/Utils.hpp index 3f5fcdfc..54a37b66 100644 --- a/include/SSVOpenHexagon/Utils/Utils.hpp +++ b/include/SSVOpenHexagon/Utils/Utils.hpp @@ -26,12 +26,12 @@ inline void uppercasify(std::string& s) } } -[[gnu::const]] inline float getSaturated(float mValue) +[[nodiscard, gnu::const]] inline float getSaturated(float mValue) { return std::max(0.f, std::min(1.f, mValue)); } -[[gnu::const]] inline float getSmootherStep(float edge0, float edge1, float x) +[[nodiscard, gnu::const]] inline float getSmootherStep(float edge0, float edge1, float x) { x = getSaturated((x - edge0) / (edge1 - edge0)); return x * x * x * (x * (x * 6 - 15) + 10); @@ -103,15 +103,16 @@ void runLuaFunctionIfExists( } template <typename T1, typename T2, typename T3> -inline auto getSkewedVecFromRad(const T1& mRad, const T2& mMag, const T3& mSkew) +[[nodiscard]] auto getSkewedVecFromRad( + const T1& mRad, const T2& mMag, const T3& mSkew) noexcept { return ssvs::Vec2<ssvs::CT<T1, T2>>( std::cos(mRad) * (mMag / mSkew.x), std::sin(mRad) * (mMag / mSkew.y)); } template <typename T1, typename T2, typename T3, typename T4> -inline auto getSkewedOrbitRad(const ssvs::Vec2<T1>& mVec, const T2& mRad, - const T3& mRadius, const T4& mSkew) +[[nodiscard]] auto getSkewedOrbitRad(const ssvs::Vec2<T1>& mVec, const T2& mRad, + const T3& mRadius, const T4& mSkew) noexcept { return ssvs::Vec2<ssvs::CT<T1, T2, T3>>(mVec) + getSkewedVecFromRad(mRad, mRadius, mSkew); diff --git a/src/SSVOpenHexagon/Components/CPlayer.cpp b/src/SSVOpenHexagon/Components/CPlayer.cpp index 4515fda7..71af2b1b 100644 --- a/src/SSVOpenHexagon/Components/CPlayer.cpp +++ b/src/SSVOpenHexagon/Components/CPlayer.cpp @@ -66,7 +66,7 @@ void CPlayer::draw(HexagonGame& mHexagonGame, const sf::Color& mCapColor, const auto status{mHexagonGame.getStatus()}; const float playerRadius{mHexagonGame.getRadius()}; - const sf::Vector2f skew{styleData.skew}; + const sf::Vector2f& skew{styleData.skew}; auto fieldAngle = ssvu::toRad(levelStatus.rotation); const auto _angle = angle + fieldAngle; @@ -116,7 +116,7 @@ void CPlayer::drawPivot(HexagonGame& mHexagonGame, const sf::Color& mCapColor, const sf::Color colorDarkened{Utils::getColorDarkened(colorMain, 1.4f)}; - const sf::Vector2f skew{styleData.skew}; + const sf::Vector2f& skew{styleData.skew}; auto fieldAngle = ssvu::toRad(levelStatus.rotation); // Cap Graphics @@ -156,7 +156,7 @@ void CPlayer::drawDeathEffect( const auto status{mHexagonGame.getStatus()}; - const sf::Vector2f skew{styleData.skew}; + const sf::Vector2f& skew{styleData.skew}; const auto fieldAngle = ssvu::toRad(mHexagonGame.getLevelStatus().rotation); @@ -172,13 +172,13 @@ void CPlayer::drawDeathEffect( { const float sAngle{fieldAngle + angle + div * 2.f * i}; - sf::Vector2f p1{ + const sf::Vector2f p1{ Utils::getSkewedOrbitRad(_pos, sAngle - div, radius, skew)}; - sf::Vector2f p2{ + const sf::Vector2f p2{ Utils::getSkewedOrbitRad(_pos, sAngle + div, radius, skew)}; - sf::Vector2f p3{Utils::getSkewedOrbitRad( + const sf::Vector2f p3{Utils::getSkewedOrbitRad( _pos, sAngle + div, radius + thickness, skew)}; - sf::Vector2f p4{Utils::getSkewedOrbitRad( + const sf::Vector2f p4{Utils::getSkewedOrbitRad( _pos, sAngle - div, radius + thickness, skew)}; mHexagonGame.wallQuads.reserve_more(4); @@ -199,15 +199,15 @@ void CPlayer::swap(HexagonGame& mHexagonGame, bool mSoundTog) void CPlayer::update(HexagonGame& mHexagonGame, ssvu::FT mFT) { - startPos = mHexagonGame.getFieldPos(); - sf::Vector2f lastPos{pos}; + const auto startPos = mHexagonGame.getFieldPos(); + const sf::Vector2f lastPos{pos}; float currentSpeed{speed}; const float lastAngle{angle}; const float radius{mHexagonGame.getRadius()}; const int movement{mHexagonGame.getInputMovement()}; - angle += ssvu::toRad(currentSpeed * movement * mFT); + swapBlinkTimer.update(mFT); @@ -227,6 +227,8 @@ void CPlayer::update(HexagonGame& mHexagonGame, ssvu::FT mFT) currentSpeed = focusSpeed; } + angle += ssvu::toRad(currentSpeed * movement * mFT); + if(mHexagonGame.getLevelStatus().swapEnabled && mHexagonGame.getInputSwap() && !swapTimer.isRunning()) { diff --git a/src/SSVOpenHexagon/Components/CWall.cpp b/src/SSVOpenHexagon/Components/CWall.cpp index fb52b306..15c9aef5 100644 --- a/src/SSVOpenHexagon/Components/CWall.cpp +++ b/src/SSVOpenHexagon/Components/CWall.cpp @@ -10,7 +10,6 @@ namespace hg { - CWall::CWall(HexagonGame& mHexagonGame, unsigned int mSide, float mThickness, float mDistance, const SpeedData& mSpeed, const SpeedData& mCurve) : initialSides{mHexagonGame.getSides()}, @@ -28,11 +27,13 @@ void CWall::draw(HexagonGame& mHexagonGame) { colorMain = Utils::transformHue(colorMain, hueMod); } - auto const fieldPos{mHexagonGame.getFieldPos()}; - auto const status{mHexagonGame.getStatus()}; - auto const styleData{mHexagonGame.getStyleData()}; - auto const levelStatus{mHexagonGame.getLevelStatus()}; - auto fieldAngle = ssvu::toRad(styleData.bgRotOff + levelStatus.rotation); + + const auto fieldPos{mHexagonGame.getFieldPos()}; + const auto status{mHexagonGame.getStatus()}; + const auto styleData{mHexagonGame.getStyleData()}; + const auto levelStatus{mHexagonGame.getLevelStatus()}; + const auto fieldAngle = + ssvu::toRad(styleData.bgRotOff + levelStatus.rotation); const float div{ssvu::tau / initialSides * 0.5f}; const float col_angle{curveOffset + div * 2.f * side}; const float angle{curveOffset + fieldAngle + div * 2.f * side}; @@ -51,7 +52,7 @@ void CWall::draw(HexagonGame& mHexagonGame) distance + thickness + mHexagonGame.getWallSkewRight(), radius)}; // For calculating collisions and whatever - sf::Color colorDebug(255, 0, 0, 150); + const sf::Color colorDebug(255, 0, 0, 150); Collisions_vertexPositions[0] = ssvs::getOrbitRad(fieldPos, col_angle - div, _distance); Collisions_vertexPositions[1] = @@ -85,7 +86,7 @@ void CWall::draw(HexagonGame& mHexagonGame) void CWall::update( - HexagonGame& mHexagonGame, const sf::Vector2f& mCenterPos, FT mFT) + HexagonGame& mHexagonGame, const sf::Vector2f& mCenterPos, ssvu::FT mFT) { speed.update(mFT); curve.update(mFT); diff --git a/src/SSVOpenHexagon/Core/HGScripting.cpp b/src/SSVOpenHexagon/Core/HGScripting.cpp index 8750d467..96670b46 100644 --- a/src/SSVOpenHexagon/Core/HGScripting.cpp +++ b/src/SSVOpenHexagon/Core/HGScripting.cpp @@ -466,7 +466,7 @@ void HexagonGame::initLua_StyleControl() sdVar("3dPulseSpeed", &StyleData::_3dPulseSpeed); sdVar("3dPerspectiveMult", &StyleData::_3dPerspectiveMult); sdVar("ColorPosOffset", &StyleData::colorPosOffset); - sdVar("bgTileRadius", &StyleData::bgTileRadius); + sdVar("BGTileRadius", &StyleData::bgTileRadius); sdVar("BGRotationOffset", &StyleData::bgRotOff); addLuaFn("s_setStyle", // diff --git a/src/SSVOpenHexagon/Core/HGUpdate.cpp b/src/SSVOpenHexagon/Core/HGUpdate.cpp index 3d618f94..938c91bf 100644 --- a/src/SSVOpenHexagon/Core/HGUpdate.cpp +++ b/src/SSVOpenHexagon/Core/HGUpdate.cpp @@ -328,7 +328,8 @@ void HexagonGame::updateRotation(FT mFT) if(status.fastSpin > 0) { nextRotation += - abs((getSmootherStep(0, levelStatus.fastSpin, status.fastSpin) / + std::abs( + (getSmootherStep(0, levelStatus.fastSpin, status.fastSpin) / 3.5f) * 17.f) * getSign(nextRotation); @@ -368,9 +369,5 @@ void HexagonGame::update3D(FT mFT) status.pulse3DDirection = 1; } } -/* -void HexagonGame::updateSkew(FT mFT){ -} -*/ } // namespace hg diff --git a/src/SSVOpenHexagon/Core/HexagonGame.cpp b/src/SSVOpenHexagon/Core/HexagonGame.cpp index 959b2812..06ec6411 100644 --- a/src/SSVOpenHexagon/Core/HexagonGame.cpp +++ b/src/SSVOpenHexagon/Core/HexagonGame.cpp @@ -31,7 +31,7 @@ HexagonGame::HexagonGame(Steam::steam_manager& mSteamManager, Discord::discord_manager& mDiscordManager, HGAssets& mAssets, ssvs::GameWindow& mGameWindow) : steamManager(mSteamManager), discordManager(mDiscordManager), - assets(mAssets), window(mGameWindow), player{ssvs::zeroVec2f}, + assets(mAssets), window(mGameWindow), player{getFieldPos()}, fpsWatcher(window) { game.onUpdate += [this](FT mFT) { update(mFT); }; @@ -101,7 +101,7 @@ void HexagonGame::newGame( // Manager cleanup walls.clear(); cwManager.clear(); - player = CPlayer{ssvs::zeroVec2f}; + player = CPlayer{getFieldPos()}; // Timeline cleanup @@ -188,7 +188,7 @@ void HexagonGame::incrementDifficulty() const auto& rotationSpeedMax(levelStatus.rotationSpeedMax); levelStatus.rotationSpeed *= -1.f; if(status.fastSpin <= 0 && - abs(levelStatus.rotationSpeed) > rotationSpeedMax) + std::abs(levelStatus.rotationSpeed) > rotationSpeedMax) { levelStatus.rotationSpeed = rotationSpeedMax * ssvu::getSign(levelStatus.rotationSpeed); diff --git a/src/SSVOpenHexagon/Core/MenuGame.cpp b/src/SSVOpenHexagon/Core/MenuGame.cpp index 128e3949..e23c0cf3 100644 --- a/src/SSVOpenHexagon/Core/MenuGame.cpp +++ b/src/SSVOpenHexagon/Core/MenuGame.cpp @@ -608,10 +608,10 @@ void MenuGame::initLua(Lua::LuaContext& mLua) [this](float mValue) { styleData.colorPosOffset = mValue; }); mLua.writeVariable( "s_getColorPosOffset", [this] { return styleData.colorPosOffset; }); - mLua.writeVariable("s_setBgTileRadius", + mLua.writeVariable("s_setBGTileRadius", [this](float mValue) { styleData.bgTileRadius = mValue; }); mLua.writeVariable( - "s_getBgTileRadius", [this] { return styleData.bgTileRadius; }); + "s_getBGTileRadius", [this] { return styleData.bgTileRadius; }); mLua.writeVariable("l_setFieldPos", [this](float mX, float mY) { levelStatus.fieldPos = {mX, mY}; @@ -1030,15 +1030,13 @@ void MenuGame::update(FT mFT) void MenuGame::draw() { styleData.computeColors(levelStatus); - // Maybe could be replaced with custom color type + // TODO: Maybe could be replaced with custom color type window.clear(Color::Black); backgroundCamera.setCenter(levelStatus.camPos); backgroundCamera.apply(); if(state == s::SMain) { - // styleData.drawBackground(window, ssvs::zeroVec2f, levelStatus, - // styleData); styleData.drawBackground( window, levelStatus.fieldPos, levelStatus, styleData); } |