diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/api/Animator.cpp | 17 | ||||
| -rw-r--r-- | src/crepe/api/Animator.h | 6 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/src/crepe/api/Animator.cpp b/src/crepe/api/Animator.cpp index c558d86..f9a283e 100644 --- a/src/crepe/api/Animator.cpp +++ b/src/crepe/api/Animator.cpp @@ -1,4 +1,3 @@ -  #include "util/dbg.h"  #include "Animator.h" @@ -6,6 +5,7 @@  #include "Sprite.h"  using namespace crepe; +using namespace std;  Animator::Animator(  	game_object_id_t id, Sprite & spritesheet, const ivec2 & single_frame_size, @@ -57,3 +57,18 @@ void Animator::next_anim() {  	ctx.row = ++ctx.row % this->grid_size.x;  	this->spritesheet.mask.x = ctx.row * this->spritesheet.mask.w;  } + +unique_ptr<Component> Animator::save() const { +	return unique_ptr<Component>(new Animator(*this)); +} + +void Animator::restore(const Component & snapshot) { +	*this = static_cast<const Animator &>(snapshot); +} + +Animator & Animator::operator=(const Animator & snapshot) { +	this->data = snapshot.data; +	this->elapsed_time = snapshot.elapsed_time; +	this->frame = snapshot.frame; +	return *this; +} diff --git a/src/crepe/api/Animator.h b/src/crepe/api/Animator.h index 95539d3..d1f49c4 100644 --- a/src/crepe/api/Animator.h +++ b/src/crepe/api/Animator.h @@ -108,6 +108,12 @@ private:  	//! Uses the spritesheet  	friend AnimatorSystem; + +protected: +	virtual std::unique_ptr<Component> save() const; +	Animator(const Animator &) = default; +	virtual void restore(const Component & snapshot); +	virtual Animator & operator=(const Animator &);  };  } // namespace crepe |