aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2007-07-07 00:36:10 +0000
committerFilippos Karapetis2007-07-07 00:36:10 +0000
commit737216e52efbbba2955393ece5fb078a8d0783b0 (patch)
treee32e7ee6066f46b94d915962144db47ae52e3de2
parent8e7269a10042720997e8a0a56489d800a472168f (diff)
downloadscummvm-rg350-737216e52efbbba2955393ece5fb078a8d0783b0.tar.gz
scummvm-rg350-737216e52efbbba2955393ece5fb078a8d0783b0.tar.bz2
scummvm-rg350-737216e52efbbba2955393ece5fb078a8d0783b0.zip
When loading a scene, start showing actors only after the scene background has been shown. This prevents some cases where some actors are shown prematurely before the next scene is loaded (e.g. in IHNM, when entering a chapter, after AM finishes his speech)
svn-id: r27946
-rw-r--r--engines/saga/actor.cpp6
-rw-r--r--engines/saga/actor.h3
-rw-r--r--engines/saga/events.cpp1
-rw-r--r--engines/saga/scene.cpp2
4 files changed, 12 insertions, 0 deletions
diff --git a/engines/saga/actor.cpp b/engines/saga/actor.cpp
index ecf7202725..d7882a78fd 100644
--- a/engines/saga/actor.cpp
+++ b/engines/saga/actor.cpp
@@ -268,6 +268,8 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
_pathRect.top = _vm->getDisplayInfo().pathStartY;
_pathRect.bottom = _vm->_scene->getHeight();
+ _showActors = true;
+
// Get actor resource file context
_actorContext = _vm->_resource->getContext(GAME_RESOURCEFILE);
if (_actorContext == NULL) {
@@ -1808,6 +1810,10 @@ void Actor::drawActors() {
return;
}
+ if (!_showActors) {
+ return;
+ }
+
CommonObjectOrderList::iterator drawOrderIterator;
CommonObjectDataPointer drawObject;
int frameNumber;
diff --git a/engines/saga/actor.h b/engines/saga/actor.h
index 1557abffb9..b9ec62337c 100644
--- a/engines/saga/actor.h
+++ b/engines/saga/actor.h
@@ -612,6 +612,8 @@ public:
void freeObjList();
void loadObjList(int objectCount, int objectsResourceID);
+ void showActors(bool flag) { _showActors = flag; }
+
/*
uint16 _currentFrameIndex;
void frameTest() {
@@ -712,6 +714,7 @@ private:
int _xCellCount;
int _yCellCount;
Rect _pathRect;
+ bool _showActors;
PathDirectionData *_pathDirectionList;
int _pathDirectionListCount;
diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp
index 191ea4ed61..b93c6017c7 100644
--- a/engines/saga/events.cpp
+++ b/engines/saga/events.cpp
@@ -341,6 +341,7 @@ int Events::handleOneShot(Event *event) {
_vm->_gfx->setPalette(palPointer);
}
}
+ _vm->_actor->showActors(true);
}
break;
case kAnimEvent:
diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp
index 84d1b45114..362b212b14 100644
--- a/engines/saga/scene.cpp
+++ b/engines/saga/scene.cpp
@@ -570,6 +570,8 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
_chapterPointsChanged = false;
+ _vm->_actor->showActors(false);
+
if ((_vm->getGameType() == GType_IHNM) && (loadSceneParams->chapter != NO_CHAPTER_CHANGE)) {
if (loadSceneParams->loadFlag != kLoadBySceneNumber) {
error("loadScene wrong usage");