1 #include "animationfactory.h"
4 #include "namedsprite.h"
5 #include "pointconverter.h"
6 #include "graphicalapi.h"
8 AnimationFactory::AnimationFactory(GraphicalAPI
* api
)
10 m_group
= AnimationGroupPtr(new AnimationGroup
);
13 AnimationGroupPtr
AnimationFactory::group() const {
17 void AnimationFactory::addPreAnimation(const Animate::Scheme
& scheme
, Animate::AnimationType type
) {
18 m_group
->addPreAnimation(m_api
->animate(scheme
, type
));
21 void AnimationFactory::addPostAnimation(const Animate::Scheme
& scheme
, Animate::AnimationType type
) {
22 m_group
->addPostAnimation(m_api
->animate(scheme
, type
));
25 AnimationFactory::operator AnimationGroupPtr() const {
33 move::move(const NamedSprite
& sprite
, const Point
& to
, int type
)
38 AnimationPtr
move::run(const PointConverter
* converter
, AnimationType type
) const {
41 MovementAnimation
* mov
;
42 if (m_type
& LShaped
) {
43 mov
= new KnightMovementAnimation(m_sprite
.sprite(), converter
->toReal(m_to
), m_type
& Rotating
);
46 mov
= new MovementAnimation(m_sprite
.sprite(), converter
->toReal(m_to
), m_type
& Rotating
);
48 return AnimationPtr(mov
);
52 return AnimationPtr(new InstantAnimation(m_sprite
.sprite(), converter
->toReal(m_to
)));
56 appear::appear(const NamedSprite
& sprite
)
57 : m_sprite(sprite
) { }
59 AnimationPtr
appear::run(const PointConverter
*, AnimationType type
) const {
62 return AnimationPtr(new FadeAnimation(m_sprite
.sprite(), 0, 255));
65 return AnimationPtr(new DropAnimation(m_sprite
.sprite()));
69 disappear::disappear(const NamedSprite
& sprite
)
70 : m_sprite(sprite
) { }
72 AnimationPtr
disappear::run(const PointConverter
*, AnimationType type
) const {
75 return AnimationPtr(new FadeAnimation(m_sprite
.sprite(), 255, 0));
78 return AnimationPtr(new CaptureAnimation(m_sprite
.sprite()));
82 destroy::destroy(const NamedSprite
& sprite
)
83 : m_sprite(sprite
) { }
85 AnimationPtr
destroy::run(const PointConverter
*, AnimationType type
) const {
88 return AnimationPtr(new ExplodeAnimation(m_sprite
.sprite(), Random::instance()));
91 return AnimationPtr(new CaptureAnimation(m_sprite
.sprite()));
95 morph::morph(const NamedSprite
& sprite
, const NamedSprite
& new_sprite
)
97 , m_new_sprite(new_sprite
) { }
99 AnimationPtr
morph::run(const PointConverter
*, AnimationType type
) const {
102 return AnimationPtr(new CrossFadingAnimation(m_sprite
.sprite(), m_new_sprite
.sprite()));
105 return AnimationPtr(new PromotionAnimation(m_sprite
.sprite(), m_new_sprite
.sprite()));