From 5879adab337998253dceef7bb3ad9bacd4711b14 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Mon, 3 Mar 2025 09:51:31 -0700 Subject: [PATCH 1/3] Re-order header includes in `Sprite` --- NAS2D/Resource/Sprite.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NAS2D/Resource/Sprite.h b/NAS2D/Resource/Sprite.h index f96c29cb..f9fa6bf4 100644 --- a/NAS2D/Resource/Sprite.h +++ b/NAS2D/Resource/Sprite.h @@ -11,10 +11,10 @@ #pragma once #include "AnimationSet.h" -#include "../Signal/Signal.h" #include "../Timer.h" #include "../Math/Angle.h" #include "../Renderer/Color.h" +#include "../Signal/Signal.h" #include #include From 845b01c5faf9c262a481a6b4d34b8f7b6562bc09 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Mon, 3 Mar 2025 09:55:28 -0700 Subject: [PATCH 2/3] Add `Sprite` constructors taking a `Delegate` --- NAS2D/Resource/Sprite.cpp | 14 ++++++++++++++ NAS2D/Resource/Sprite.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/NAS2D/Resource/Sprite.cpp b/NAS2D/Resource/Sprite.cpp index 56743329..d06e2c22 100644 --- a/NAS2D/Resource/Sprite.cpp +++ b/NAS2D/Resource/Sprite.cpp @@ -41,6 +41,20 @@ Sprite::Sprite(const AnimationSet& animationSet, const std::string& initialActio } +Sprite::Sprite(const std::string& filePath, const std::string& initialAction, Delegate animationCompleteHandler) : + Sprite(filePath, initialAction) +{ + mAnimationCompleteSignal.connect(animationCompleteHandler); +} + + +Sprite::Sprite(const AnimationSet& animationSet, const std::string& initialAction, Delegate animationCompleteHandler) : + Sprite(animationSet, initialAction) +{ + mAnimationCompleteSignal.connect(animationCompleteHandler); +} + + Vector Sprite::size() const { return (*mCurrentAction)[mCurrentFrame].bounds.size; diff --git a/NAS2D/Resource/Sprite.h b/NAS2D/Resource/Sprite.h index f9fa6bf4..481bd103 100644 --- a/NAS2D/Resource/Sprite.h +++ b/NAS2D/Resource/Sprite.h @@ -15,6 +15,7 @@ #include "../Math/Angle.h" #include "../Renderer/Color.h" #include "../Signal/Signal.h" +#include "../Signal/Delegate.h" #include #include @@ -35,6 +36,8 @@ namespace NAS2D Sprite(const std::string& filePath, const std::string& initialAction); Sprite(const AnimationSet& animationSet, const std::string& initialAction); + Sprite(const std::string& filePath, const std::string& initialAction, Delegate animationCompleteHandler); + Sprite(const AnimationSet& animationSet, const std::string& initialAction, Delegate animationCompleteHandler); Sprite(const Sprite&) = default; Sprite(Sprite&&) = default; const Sprite& operator=(const Sprite&) = delete; From a63c25f5c55d5bc6cf8824f420f9d03be7c9fffa Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Mon, 3 Mar 2025 10:37:47 -0700 Subject: [PATCH 3/3] Remove `const` from result of `Sprite` copy assignment operator It's not really appropriate to place `const` on the result of copy assignment. The choice of `const` or not should be up to the code that made the copy. There's certainly no reason for the `Sprite` class to try and enforce `const` on a copy. --- NAS2D/Resource/Sprite.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NAS2D/Resource/Sprite.h b/NAS2D/Resource/Sprite.h index 481bd103..f58f70cc 100644 --- a/NAS2D/Resource/Sprite.h +++ b/NAS2D/Resource/Sprite.h @@ -40,7 +40,8 @@ namespace NAS2D Sprite(const AnimationSet& animationSet, const std::string& initialAction, Delegate animationCompleteHandler); Sprite(const Sprite&) = default; Sprite(Sprite&&) = default; - const Sprite& operator=(const Sprite&) = delete; + + Sprite& operator=(const Sprite&) = delete; Sprite& operator=(Sprite&&) = delete; Vector size() const;