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 f96c29cb..f58f70cc 100644 --- a/NAS2D/Resource/Sprite.h +++ b/NAS2D/Resource/Sprite.h @@ -11,10 +11,11 @@ #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 "../Signal/Delegate.h" #include #include @@ -35,9 +36,12 @@ 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; + + Sprite& operator=(const Sprite&) = delete; Sprite& operator=(Sprite&&) = delete; Vector size() const;