aboutsummaryrefslogtreecommitdiff
path: root/engines/draci
diff options
context:
space:
mode:
authorDenis Kasak2009-08-12 04:18:45 +0000
committerDenis Kasak2009-08-12 04:18:45 +0000
commit6693b22851dc7030922360e4275b73e2f9804cf0 (patch)
tree7c9e634e3e3137e192f9055e0928fdb6c1a44422 /engines/draci
parent100603e683b51cf89545756b5ef81775dc57337f (diff)
downloadscummvm-rg350-6693b22851dc7030922360e4275b73e2f9804cf0.tar.gz
scummvm-rg350-6693b22851dc7030922360e4275b73e2f9804cf0.tar.bz2
scummvm-rg350-6693b22851dc7030922360e4275b73e2f9804cf0.zip
* Split loop status and substatus into two different enums since they are two separate concepts
* Fixed slight glitch where object titles (which normally disappear when objects are used/looked at) reappeared for a moment after the script has finished svn-id: r43305
Diffstat (limited to 'engines/draci')
-rw-r--r--engines/draci/game.cpp16
-rw-r--r--engines/draci/game.h22
-rw-r--r--engines/draci/script.cpp16
3 files changed, 32 insertions, 22 deletions
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index a1652ab732..7c55489677 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -174,7 +174,7 @@ void Game::start() {
_persons[kDragonObject]._y = 0;
}
- setLoopSubstatus(kStatusOrdinary);
+ setLoopSubstatus(kSubstatusOrdinary);
// Do the actual change
changeRoom(_newRoom);
@@ -281,7 +281,7 @@ void Game::loop() {
int x = _vm->_mouse->getPosX();
int y = _vm->_mouse->getPosY();
- if (_loopStatus == kStatusDialogue && _loopSubstatus == kStatusOrdinary) {
+ if (_loopStatus == kStatusDialogue && _loopSubstatus == kSubstatusOrdinary) {
// Find animation under cursor
_animUnderCursor = _vm->_anims->getTopAnimationID(x, y);
@@ -309,7 +309,7 @@ void Game::loop() {
Animation *titleAnim = _vm->_anims->getAnimation(kTitleText);
Text *title = reinterpret_cast<Text *>(titleAnim->getFrame());
- if (_loopStatus == kStatusOrdinary && _loopSubstatus == kStatusOrdinary) {
+ if (_loopStatus == kStatusOrdinary && _loopSubstatus == kSubstatusOrdinary) {
if(_vm->_mouse->isCursorOn()) {
// Find the game object under the cursor
// (to be more precise, one that corresponds to the animation under the cursor)
@@ -333,6 +333,7 @@ void Game::loop() {
_vm->_mouse->cursorOff();
titleAnim->markDirtyRect(surface);
title->setText("");
+ _objUnderCursor = kObjectNotFound;
if (!obj->_imLook) {
if (obj->_lookDir == -1) {
@@ -359,6 +360,7 @@ void Game::loop() {
_vm->_mouse->cursorOff();
titleAnim->markDirtyRect(surface);
title->setText("");
+ _objUnderCursor = kObjectNotFound;
if (!obj->_imUse) {
if (obj->_useDir == -1) {
@@ -394,7 +396,7 @@ void Game::loop() {
debug(8, "Anim under cursor: %d", _animUnderCursor);
// Handle character talking (if there is any)
- if (_loopSubstatus == kStatusTalk) {
+ if (_loopSubstatus == kSubstatusTalk) {
Animation *speechAnim = _vm->_anims->getAnimation(kSpeechText);
Text *speechFrame = reinterpret_cast<Text *>(speechAnim->getFrame());
@@ -537,7 +539,7 @@ void Game::dialogueMenu(int dialogueID) {
_dialogueExit = false;
hit = dialogueDraw();
- debug(7, kDraciLogicDebugLevel,
+ debugC(7, kDraciLogicDebugLevel,
"hit: %d, _lines[hit]: %d, lastblock: %d, dialogueLines: %d, dialogueExit: %d",
hit, _lines[hit], _lastBlock, _dialogueLines, _dialogueExit);
@@ -1111,7 +1113,7 @@ void Game::setLoopStatus(LoopStatus status) {
_loopStatus = status;
}
-void Game::setLoopSubstatus(LoopStatus status) {
+void Game::setLoopSubstatus(LoopSubstatus status) {
_loopSubstatus = status;
}
@@ -1119,7 +1121,7 @@ LoopStatus Game::getLoopStatus() {
return _loopStatus;
}
-LoopStatus Game::getLoopSubstatus() {
+LoopSubstatus Game::getLoopSubstatus() {
return _loopSubstatus;
}
diff --git a/engines/draci/game.h b/engines/draci/game.h
index a712542e9e..31e27f9708 100644
--- a/engines/draci/game.h
+++ b/engines/draci/game.h
@@ -175,10 +175,18 @@ struct Room {
GPL2Program _program;
};
-enum LoopStatus {
- kStatusGate, kStatusOrdinary, kStatusInventory,
- kStatusDialogue, kStatusTalk, kStatusStrange,
- kStatusFade
+enum LoopStatus {
+ kStatusOrdinary,
+ kStatusGate,
+ kStatusInventory,
+ kStatusDialogue
+};
+
+enum LoopSubstatus {
+ kSubstatusOrdinary,
+ kSubstatusTalk,
+ kSubstatusFade,
+ kSubstatusStrange
};
/**
@@ -262,9 +270,9 @@ public:
void setMarkedAnimationIndex(int index);
void setLoopStatus(LoopStatus status);
- void setLoopSubstatus(LoopStatus status);
+ void setLoopSubstatus(LoopSubstatus status);
LoopStatus getLoopStatus();
- LoopStatus getLoopSubstatus();
+ LoopSubstatus getLoopSubstatus();
bool shouldQuit() { return _shouldQuit; }
void setQuit(bool quit) { _shouldQuit = quit; }
@@ -321,7 +329,7 @@ public:
Animation *_dialogueAnims[4];
LoopStatus _loopStatus;
- LoopStatus _loopSubstatus;
+ LoopSubstatus _loopSubstatus;
bool _shouldQuit;
bool _shouldExitLoop;
diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp
index 4dd5a826d7..b30a081027 100644
--- a/engines/draci/script.cpp
+++ b/engines/draci/script.cpp
@@ -346,11 +346,11 @@ void Script::play(Common::Queue<int> &params) {
return;
}
- _vm->_game->setLoopStatus(kStatusStrange);
+ _vm->_game->setLoopSubstatus(kSubstatusStrange);
_vm->_game->setExitLoop(true);
_vm->_game->loop();
_vm->_game->setExitLoop(false);
- _vm->_game->setLoopStatus(kStatusOrdinary);
+ _vm->_game->setLoopSubstatus(kSubstatusOrdinary);
}
void Script::load(Common::Queue<int> &params) {
@@ -446,7 +446,7 @@ void Script::startPlay(Common::Queue<int> &params) {
Animation *anim = _vm->_anims->getAnimation(animID);
anim->registerCallback(&Animation::exitGameLoop);
- _vm->_game->setLoopStatus(kStatusStrange);
+ _vm->_game->setLoopSubstatus(kSubstatusStrange);
bool visible = (obj->_location == _vm->_game->getRoomNum() && obj->_visible);
@@ -457,7 +457,7 @@ void Script::startPlay(Common::Queue<int> &params) {
_vm->_game->loop();
_vm->_game->setExitLoop(false);
_vm->_anims->stop(animID);
- _vm->_game->setLoopStatus(kStatusOrdinary);
+ _vm->_game->setLoopSubstatus(kSubstatusOrdinary);
anim->registerCallback(&Animation::doNothing);
}
@@ -596,9 +596,9 @@ void Script::walkOnPlay(Common::Queue<int> &params) {
_vm->_game->walkHero(x, y);
- _vm->_game->setLoopSubstatus(kStatusStrange);
+ _vm->_game->setLoopSubstatus(kSubstatusStrange);
_vm->_game->loop();
- _vm->_game->setLoopSubstatus(kStatusOrdinary);
+ _vm->_game->setLoopSubstatus(kSubstatusOrdinary);
_vm->_game->setExitLoop(false);
}
@@ -650,7 +650,7 @@ void Script::talk(Common::Queue<int> &params) {
}
// Set the loop substatus to an appropriate value
- _vm->_game->setLoopSubstatus(kStatusTalk);
+ _vm->_game->setLoopSubstatus(kSubstatusTalk);
// Record time
_vm->_game->setSpeechTick(_vm->_system->getMillis());
@@ -673,7 +673,7 @@ void Script::talk(Common::Queue<int> &params) {
speechFrame->setText("");
// Revert to "normal" loop status
- _vm->_game->setLoopSubstatus(kStatusOrdinary);
+ _vm->_game->setLoopSubstatus(kSubstatusOrdinary);
_vm->_game->setExitLoop(false);
}