aboutsummaryrefslogtreecommitdiff
path: root/engines/draci/script.cpp
diff options
context:
space:
mode:
authorRobert Špalek2009-10-12 03:08:28 +0000
committerRobert Špalek2009-10-12 03:08:28 +0000
commit43437eecb88fbf0c34db6660406652b4ca4ddcde (patch)
tree159ca87a4a3f110c84b03d458f941877ecc4e955 /engines/draci/script.cpp
parent1a4dcd3c82d6db389a25ad92235843b1841fbf23 (diff)
downloadscummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.tar.gz
scummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.tar.bz2
scummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.zip
Dragon looks into the requested direction.
Parsing _lookDir and _useDir, and passing it all the way around to walkHero(). Also, added playHeroAnimation() to reduce code duplication. svn-id: r44965
Diffstat (limited to 'engines/draci/script.cpp')
-rw-r--r--engines/draci/script.cpp30
1 files changed, 6 insertions, 24 deletions
diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp
index 192ed9881b..4ab75f1291 100644
--- a/engines/draci/script.cpp
+++ b/engines/draci/script.cpp
@@ -479,43 +479,25 @@ void Script::startPlay(Common::Queue<int> &params) {
void Script::justTalk(Common::Queue<int> &params) {
const GameObject *dragon = _vm->_game->getObject(kDragonObject);
const int last_anim = static_cast<Movement> (_vm->_game->playingObjectAnimation(dragon));
- if (last_anim >= 0) {
- _vm->_game->stopObjectAnimations(dragon);
- }
int new_anim;
if (last_anim == kSpeakRight || last_anim == kStopRight) {
new_anim = kSpeakRight;
} else {
new_anim = kSpeakLeft;
}
-
- const int animID = dragon->_anim[new_anim];
-
- Animation *anim = _vm->_anims->getAnimation(animID);
- _vm->_game->positionAnimAsHero(anim);
-
- _vm->_anims->play(animID);
+ _vm->_game->playHeroAnimation(new_anim);
}
void Script::justStay(Common::Queue<int> &params) {
const GameObject *dragon = _vm->_game->getObject(kDragonObject);
const int last_anim = static_cast<Movement> (_vm->_game->playingObjectAnimation(dragon));
- if (last_anim >= 0) {
- _vm->_game->stopObjectAnimations(dragon);
- }
int new_anim;
if (last_anim == kSpeakRight || last_anim == kStopRight) {
new_anim = kStopRight;
} else {
new_anim = kStopLeft;
}
-
- const int animID = dragon->_anim[new_anim];
-
- Animation *anim = _vm->_anims->getAnimation(animID);
- _vm->_game->positionAnimAsHero(anim);
-
- _vm->_anims->play(animID);
+ _vm->_game->playHeroAnimation(new_anim);
}
void Script::c_If(Common::Queue<int> &params) {
@@ -662,9 +644,9 @@ void Script::walkOn(Common::Queue<int> &params) {
int x = params.pop();
int y = params.pop();
- params.pop(); // facing direction, not used yet
+ SightDirection dir = static_cast<SightDirection> (params.pop());
- _vm->_game->walkHero(x, y);
+ _vm->_game->walkHero(x, y, dir);
}
void Script::walkOnPlay(Common::Queue<int> &params) {
@@ -674,12 +656,12 @@ void Script::walkOnPlay(Common::Queue<int> &params) {
int x = params.pop();
int y = params.pop();
- params.pop(); // facing direction, not used yet
+ SightDirection dir = static_cast<SightDirection> (params.pop());
// HACK: This should be an onDest action when hero walking is properly implemented
_vm->_game->setExitLoop(true);
- _vm->_game->walkHero(x, y);
+ _vm->_game->walkHero(x, y, dir);
_vm->_game->setLoopSubstatus(kSubstatusStrange);
_vm->_game->loop();