JugiMap Framework
jmFrameAnimation.h
1 #ifndef JUGIMAP_FRAME_ANIMATION_H
2 #define JUGIMAP_FRAME_ANIMATION_H
3 
4 #include <vector>
5 #include "jmAnimationCommon.h"
6 
7 
8 
9 namespace jugimap{
10 
11 
12 class GraphicItem;
13 class SourceSprite;
14 class Sprite;
15 class StandardSprite;
16 class JugiMapBinaryLoader;
17 
18 
19 
20 
21 
24 class FrameAnimation : public Animation
25 {
26 public:
27  friend class JugiMapBinaryLoader;
28  friend class SourceSprite;
29 
30  std::vector<AnimationFrame*>&GetFrames(){ return frames; }
31 
32 
33 protected:
34  FrameAnimation(SourceSprite* _sourceObject);
35  FrameAnimation(SourceSprite* _sourceObject, const std::string &_nameID);
36  FrameAnimation(const FrameAnimation &fa);
37  FrameAnimation& operator=(const FrameAnimation &fa);
38 
39  ~FrameAnimation() override;
40 
41 private:
42  std::vector<AnimationFrame*>frames; // OWNED
43 
44 
45 
46 
47 };
48 
49 
50 
51 //==================================================================================
52 
53 
54 
58 {
59 public:
60  friend class EFrameAnimationPlayer;
61 
62 
66  FrameAnimationInstance(FrameAnimation *_animation, Sprite *_sprite);
67 
68 
73  FrameAnimationInstance(FrameAnimation *_animation, std::vector<Sprite*>&_sprites);
74 
75 
77  ~FrameAnimationInstance() override;
78 
79 
81  Sprite* GetSprite(){ return sprite;}
82 
83 
87  std::vector<Sprite*>* GetSprites(){ return sprites;}
88 
89 
91  int GetStartingFrameIndex(){ return startingFrameIndex;}
92 
93 
95  void SetStartingFrameIndex(int _startingFrameIndex);
96 
97 
99  AnimatedProperties &GetAnimatedProperties(){ return ap; }
100 
101 
102  int Update(int msTimePoint, int _flags) override;
103  void UpdateAnimatedSprites(bool _resetSpriteAnimatedProperties) override;
104  void ResetAnimatedProperties() override;
105  void OnPlayingStart() override;
106  void OnPlayingStop() override;
107 
108 
109 
110 private:
111  Sprite* sprite = nullptr; // LINK
112  std::vector<Sprite*>*sprites = nullptr; // vector OWNED, sprites LINKS
113 
114  AnimatedProperties ap;
115 
116  int startingFrameIndex = 0;
117  int activeFrameIndex = 0;
118 
119  FrameAnimationInstance(const FrameAnimationInstance& _src) = delete ;
120  FrameAnimationInstance& operator=(const FrameAnimationInstance& _src) = delete;
121 
122  void Update(AnimationFrame *_animationFrame);
123 
124 };
125 
126 
127 
128 
129 }
130 #endif
jugimap::FrameAnimationInstance::GetSprite
Sprite * GetSprite()
Returns the assigned sprite; if a vector of sprites has been assigned it returns nullptr!
Definition: jmFrameAnimation.h:81
jugimap::FrameAnimationInstance::GetSprites
std::vector< Sprite * > * GetSprites()
Returns a pointer to the vector of assigned sprites; if one sprite has been assigned it returns nullp...
Definition: jmFrameAnimation.h:87
jugimap::FrameAnimationInstance::UpdateAnimatedSprites
void UpdateAnimatedSprites(bool _resetSpriteAnimatedProperties) override
Update the animated sprites.
Definition: jmFrameAnimation.cpp:293
jugimap::FrameAnimationInstance::GetStartingFrameIndex
int GetStartingFrameIndex()
Returns the starting index in the sequence of frames of this animation.
Definition: jmFrameAnimation.h:91
jugimap::AnimationInstance
The base animation instance class.
Definition: jmAnimationCommon.h:163
jugimap::Sprite
The Sprite is the base sprite class.
Definition: jmSprites.h:32
jugimap::FrameAnimation
The FrameAnimation class represents the sprite frame animation from JugiMap Editor.
Definition: jmFrameAnimation.h:24
jugimap::FrameAnimationInstance::Update
int Update(int msTimePoint, int _flags) override
Update the animation state for the given msTimePoint.
Definition: jmFrameAnimation.cpp:208
jugimap::FrameAnimationInstance::GetAnimatedProperties
AnimatedProperties & GetAnimatedProperties()
Get a reference to the AnimatedProperties object of this animation instance.
Definition: jmFrameAnimation.h:99
jugimap::FrameAnimationInstance::SetStartingFrameIndex
void SetStartingFrameIndex(int _startingFrameIndex)
Set the starting index in the sequence of frames of this animation to the given *_startingFrameIndex*...
Definition: jmFrameAnimation.cpp:163
jugimap::Animation
The base animation class.
Definition: jmAnimationCommon.h:95
jugimap::FrameAnimationInstance::FrameAnimationInstance
FrameAnimationInstance(FrameAnimation *_animation, Sprite *_sprite)
Constructor.
Definition: jmFrameAnimation.cpp:125
jugimap::FrameAnimationInstance::~FrameAnimationInstance
~FrameAnimationInstance() override
Destructor.
Definition: jmFrameAnimation.cpp:154
jugimap::FrameAnimationInstance
A class for using frame animations in animation players.
Definition: jmFrameAnimation.h:57
jugimap::SourceSprite
The SourceSprite class defines the source sprite from JugiMap Editor.
Definition: jmSourceGraphics.h:221
jugimap::JugiMapBinaryLoader
The JugiMapBinaryLoader class loads data from jugimap binary files (.jmb).
Definition: jmMapBinaryLoader.h:37