summaryrefslogtreecommitdiff
path: root/src/animatedsprite.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-11-23 04:40:34 +0300
committerAndrei Karas <akaras@inbox.ru>2011-11-24 03:32:57 +0300
commit8e5861c3cfd41574351547a1a518efcf9007666a (patch)
tree8d941791c1bbd296b7125475fa0abb9581df632f /src/animatedsprite.cpp
parent004aa3358c6efeb469045785baa891a449dde5a4 (diff)
downloadmanaplus-8e5861c3cfd41574351547a1a518efcf9007666a.tar.gz
manaplus-8e5861c3cfd41574351547a1a518efcf9007666a.tar.bz2
manaplus-8e5861c3cfd41574351547a1a518efcf9007666a.tar.xz
manaplus-8e5861c3cfd41574351547a1a518efcf9007666a.zip
Add ability to play different animation depend on monster hp.
Disabled for legacy servers because monster hp unknown and compilated hp can be wrong (version <= 0). For usage need add to action tag attribute hp="xx" Example: <action name="stand" hp="50" imageset="base"> ... </action> Here 50 mean 50% of health or less. Default action tag mean hp=100
Diffstat (limited to 'src/animatedsprite.cpp')
-rw-r--r--src/animatedsprite.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/animatedsprite.cpp b/src/animatedsprite.cpp
index c1f1cac85..4143cb47a 100644
--- a/src/animatedsprite.cpp
+++ b/src/animatedsprite.cpp
@@ -42,7 +42,9 @@ AnimatedSprite::AnimatedSprite(SpriteDef *sprite):
mSprite(sprite),
mAction(nullptr),
mAnimation(nullptr),
- mFrame(nullptr)
+ mFrame(nullptr),
+ mNumber(100),
+ mNumber1(100)
{
mAlpha = 1.0f;
@@ -51,6 +53,7 @@ AnimatedSprite::AnimatedSprite(SpriteDef *sprite):
mSprite->incRef();
// Play the stand animation by default
+ //+++ need get num?
play(SpriteAction::STAND);
}
@@ -90,7 +93,7 @@ bool AnimatedSprite::play(std::string spriteAction)
if (!mSprite)
return false;
- Action *action = mSprite->getAction(spriteAction);
+ Action *action = mSprite->getAction(spriteAction, mNumber);
if (!action)
return false;
@@ -313,3 +316,19 @@ void *AnimatedSprite::getHash()
// return mAnimation;
return this;
}
+
+bool AnimatedSprite::updateNumber(unsigned num)
+{
+ if (mNumber1 != num)
+ {
+ mNumber1 = num;
+ mNumber = mSprite->findNumber(num);
+ if (!mNumber)
+ {
+ mNumber = 100;
+ return false;
+ }
+ return true;
+ }
+ return false;
+}