summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/animation.cpp6
-rw-r--r--src/resources/animation.h5
-rw-r--r--src/resources/spritedef.cpp4
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);