summaryrefslogtreecommitdiff
path: root/src/being.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-05-31 22:23:23 +0300
committerAndrei Karas <akaras@inbox.ru>2012-05-31 22:23:23 +0300
commitfc5ba333f8832f3d8e054e7c74df1e3cd353645f (patch)
tree16aabceaaa2b197d006bd357d3176acac292cde7 /src/being.cpp
parent9875c00dc37b1d7b55e1154075a0cd2d997a490d (diff)
downloadplus-fc5ba333f8832f3d8e054e7c74df1e3cd353645f.tar.gz
plus-fc5ba333f8832f3d8e054e7c74df1e3cd353645f.tar.bz2
plus-fc5ba333f8832f3d8e054e7c74df1e3cd353645f.tar.xz
plus-fc5ba333f8832f3d8e054e7c74df1e3cd353645f.zip
Add sittop sprites support.
Add groundtop collision support (not collision but special selected tiles).
Diffstat (limited to 'src/being.cpp')
-rw-r--r--src/being.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/being.cpp b/src/being.cpp
index f1a3e0169..a9aade448 100644
--- a/src/being.cpp
+++ b/src/being.cpp
@@ -1004,6 +1004,20 @@ void Being::fireMissile(Being *victim, const std::string &particle)
}
+std::string Being::getSitAction() const
+{
+ if (serverVersion < 0)
+ {
+ return SpriteAction::SIT;
+ }
+ else
+ {
+ if (mMap && !mMap->getWalk(mX, mY, Map::BLOCKMASK_GROUNDTOP))
+ return SpriteAction::SITTOP;
+ return SpriteAction::SIT;
+ }
+}
+
void Being::setAction(Action action, int attackType A_UNUSED)
{
std::string currentAction = SpriteAction::INVALID;
@@ -1019,9 +1033,16 @@ void Being::setAction(Action action, int attackType A_UNUSED)
// while using only the ACTION_MOVE.
break;
case SIT:
- currentAction = SpriteAction::SIT;
+ currentAction = getSitAction();
if (mInfo)
- sound.playSfx(mInfo->getSound(SOUND_EVENT_SIT), mX, mY);
+ {
+ SoundEvent event;
+ if (currentAction == SpriteAction::SITTOP)
+ event = SOUND_EVENT_SITTOP;
+ else
+ event = SOUND_EVENT_SIT;
+ sound.playSfx(mInfo->getSound(event), mX, mY);
+ }
break;
case ATTACK:
if (mEquippedWeapon)