diff options
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/animation.cpp | 6 | ||||
-rw-r--r-- | src/resources/animation.h | 5 | ||||
-rw-r--r-- | src/resources/spritedef.cpp | 4 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/resources/animation.cpp b/src/resources/animation.cpp index 388c1301e..853b79d64 100644 --- a/src/resources/animation.cpp +++ b/src/resources/animation.cpp @@ -70,6 +70,12 @@ void Animation::addGoto(std::string name, int rand) mFrames.push_back(frame); } +void Animation::addPause(int delay, int rand) +{ + Frame frame = { nullptr, delay, 0, 0, rand, Frame::PAUSE, "" }; + mFrames.push_back(frame); +} + void Animation::setLastFrameDelay(int delay) { FramesRevIter it = mFrames.rbegin(); diff --git a/src/resources/animation.h b/src/resources/animation.h index 53e9adbea..1d23b1608 100644 --- a/src/resources/animation.h +++ b/src/resources/animation.h @@ -40,7 +40,8 @@ struct Frame ANIMATION = 0, JUMP, GOTO, - LABEL + LABEL, + PAUSE }; Image *image; int delay; @@ -102,6 +103,8 @@ class Animation void addGoto(std::string name, int rand); + void addPause(int delay, int rand); + void setLastFrameDelay(int delay); /** diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp index 02b46f1cf..a4ebc6f7e 100644 --- a/src/resources/spritedef.cpp +++ b/src/resources/spritedef.cpp @@ -340,6 +340,10 @@ void SpriteDef::loadAnimation(XmlNodePtr animationNode, repeat --; } } + else if (xmlNameEqual(frameNode, "pause")) + { + animation->addPause(delay, rand); + } else if (xmlNameEqual(frameNode, "end")) { animation->addTerminator(rand); |