aboutsummaryrefslogtreecommitdiff
path: root/saga/actor.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-05-08 14:04:06 +0000
committerAndrew Kurushin2005-05-08 14:04:06 +0000
commita81b093e65f90ea70c5b07676a1fcc46d3e95a5e (patch)
treee0fced8f17e32e28fe24a1c948d2a74e6a039699 /saga/actor.cpp
parent781472641e32d1999660caa54c27b218c5b4298d (diff)
downloadscummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.tar.gz
scummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.tar.bz2
scummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.zip
fixed sfSceneEq bug
fixed load actors entrance removed some orphans svn-id: r17964
Diffstat (limited to 'saga/actor.cpp')
-rw-r--r--saga/actor.cpp28
1 files changed, 10 insertions, 18 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp
index 1990e1ef5f..73ee425361 100644
--- a/saga/actor.cpp
+++ b/saga/actor.cpp
@@ -374,7 +374,7 @@ void Actor::takeExit(uint16 actorId, const HitZone *hitZone) {
actor = getActor(actorId);
actor->lastZone = NULL;
- _vm->_scene->changeScene(hitZone->getSceneNumber(), hitZone->getActorsEntrance());
+ _vm->_scene->changeScene(hitZone->getSceneNumber(), hitZone->getActorsEntrance(), kTransitionNoFade);
_vm->_script->setNoPendingVerb();
}
@@ -562,6 +562,10 @@ void Actor::updateActorsScene(int actorsEntrance) {
return;
}
+ if (_vm->_scene->currentSceneNumber() == 0) {
+ error("Actor::updateActorsScene _vm->_scene->currentSceneNumber() == 0");
+ }
+
_activeSpeech.stringsCount = 0;
_protagonist = NULL;
@@ -597,8 +601,6 @@ void Actor::updateActorsScene(int actorsEntrance) {
_protagonist->location.z = sceneEntry->location.z * ACTOR_LMULT;
}
_protagonist->facingDirection = _protagonist->actionDirection = sceneEntry->facing;
- } else {
- warning("actorsEntrance < 0");
}
_protagonist->currentAction = kActionWait;
@@ -1261,7 +1263,11 @@ bool Actor::getSpriteParams(CommonObjectData *commonObjectData, int &frameNumber
return true;
}
-int Actor::drawActors() {
+void Actor::drawActors() {
+ if (_vm->_scene->currentSceneNumber() <= 0) {
+ return;
+ }
+
CommonObjectOrderList::iterator drawOrderIterator;
CommonObjectDataPointer drawObject;
int frameNumber;
@@ -1321,8 +1327,6 @@ int Actor::drawActors() {
}
}
-
- return SUCCESS;
}
bool Actor::followProtagonist(ActorData *actor) {
@@ -2295,8 +2299,6 @@ void Actor::drawPathTest() {
void Actor::saveState(File& out) {
uint16 i;
- out.writeSint32LE(_centerActor == NULL ? -1 : _centerActor->index);
- out.writeSint32LE(_protagonist == NULL ? -1 : _protagonist->index);
out.writeSint16LE(getProtagState());
for (i = 0; i < _actorsCount; i++) {
@@ -2304,8 +2306,6 @@ void Actor::saveState(File& out) {
a->saveState(out);
}
- //TODO: save _activeSpeech
-
for (i = 0; i < _objsCount; i++) {
ObjectData *o = _objs[i];
o->saveState(out);
@@ -2315,16 +2315,8 @@ void Actor::saveState(File& out) {
void Actor::loadState(File& in) {
int32 i;
- i = in.readSint32LE();
- _centerActor = (i < 0) ? NULL : _actors[i];
-
- i = in.readSint32LE();
- _protagonist = (i < 0) ? NULL : _actors[i];
-
setProtagState(in.readSint16LE());
- //TODO: load _activeSpeech
-
for (i = 0; i < _actorsCount; i++) {
ActorData *a = _actors[i];
a->loadState(in);