From a470b7a90076551660abfff1887bb0a4066e9f8a Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 10:30:43 -0700 Subject: [PATCH 1/6] Add missing include for `` to `Fade` --- NAS2D/Renderer/Fade.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index 61b8cf20..04198e8c 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -14,6 +14,7 @@ #include "../Math/Rectangle.h" #include +#include using namespace NAS2D; From 1142e8b9c6c70e158e293ed90816a8b36f70e63e Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 10:37:58 -0700 Subject: [PATCH 2/6] Use `std::domain_error` when `Fade` duration is zero --- NAS2D/Renderer/Fade.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index 04198e8c..c38fa9fe 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -99,7 +99,7 @@ void Fade::setDuration(Duration newDuration) { if (newDuration.milliseconds == 0) { - throw std::runtime_error("Fade duration must be positive"); + throw std::domain_error("Fade duration must be positive"); } mDuration = newDuration; From 19e5682316db2d90674ab49bb8eb9d7d9a670907 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 10:48:22 -0700 Subject: [PATCH 3/6] Update `isFaded` to avoid race conditions --- NAS2D/Renderer/Fade.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index c38fa9fe..98640917 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -60,7 +60,7 @@ bool Fade::isFading() const bool Fade::isFaded() const { - return (mFadeColor.alpha == 255); + return (mDirection == FadeDirection::None) && (mFadeColor.alpha == 255); } From 3c1c34d8c6970316a07ae5f02a54d48323319d70 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 10:56:07 -0700 Subject: [PATCH 4/6] Add constant `alphaOpaque` for better readability --- NAS2D/Renderer/Fade.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index 98640917..0b26803a 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -20,6 +20,12 @@ using namespace NAS2D; +namespace +{ + constexpr uint8_t alphaOpaque = 255; +} + + Fade::Fade(DelegateType onFadeComplete) : Fade{Color::Black, onFadeComplete} { @@ -27,7 +33,7 @@ Fade::Fade(DelegateType onFadeComplete) : Fade::Fade(Color fadeColor, DelegateType onFadeComplete) : - mFadeColor{fadeColor.alphaFade(255)}, + mFadeColor{fadeColor.alphaFade(alphaOpaque)}, mDirection{FadeDirection::None}, mDuration{}, mFadeTimer{}, @@ -60,7 +66,7 @@ bool Fade::isFading() const bool Fade::isFaded() const { - return (mDirection == FadeDirection::None) && (mFadeColor.alpha == 255); + return (mDirection == FadeDirection::None) && (mFadeColor.alpha == alphaOpaque); } From 5730f69b4ff7d56126a655feff8418377c637bc4 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 11:26:27 -0700 Subject: [PATCH 5/6] Add constant `alphaTransparent` for better readability --- NAS2D/Renderer/Fade.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index 0b26803a..0a965490 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -22,6 +22,7 @@ using namespace NAS2D; namespace { + constexpr uint8_t alphaTransparent = 0; constexpr uint8_t alphaOpaque = 255; } @@ -93,7 +94,7 @@ void Fade::update() void Fade::draw(Renderer& renderer) const { - if (mFadeColor.alpha > 0) + if (mFadeColor.alpha != alphaTransparent) { const auto displayRect = Rectangle{{0, 0}, renderer.size()}; renderer.drawBoxFilled(displayRect, mFadeColor); From 65cc107b1dd83acfa47930467e35878659eeb90a Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 4 Mar 2025 11:27:29 -0700 Subject: [PATCH 6/6] Replace `static_cast` with explicit template type parameter --- NAS2D/Renderer/Fade.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NAS2D/Renderer/Fade.cpp b/NAS2D/Renderer/Fade.cpp index 0a965490..f455b088 100644 --- a/NAS2D/Renderer/Fade.cpp +++ b/NAS2D/Renderer/Fade.cpp @@ -78,7 +78,7 @@ void Fade::update() return; } - const auto step = static_cast(std::clamp(mFadeTimer.elapsedTicks() * 255u / static_cast(mDuration.milliseconds), 0u, 255u)); + const auto step = static_cast(std::clamp(mFadeTimer.elapsedTicks() * 255u / mDuration.milliseconds, 0u, 255u)); mFadeColor.alpha = (mDirection == FadeDirection::In) ? 255 - step : step; if (step == 255)