aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTravis Howell2009-06-18 06:18:31 +0000
committerTravis Howell2009-06-18 06:18:31 +0000
commit5a8f066497feca9b0fa10173d6344b6429246175 (patch)
tree4cad0d994e79e3a89e6e34b13f8644955472ad49 /engines
parentb07a35e5af6554802f13485644a1dd4ea2d8faac (diff)
downloadscummvm-rg350-5a8f066497feca9b0fa10173d6344b6429246175.tar.gz
scummvm-rg350-5a8f066497feca9b0fa10173d6344b6429246175.tar.bz2
scummvm-rg350-5a8f066497feca9b0fa10173d6344b6429246175.zip
Correct actor layering method in HE90+ games.
svn-id: r41625
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/actor.cpp16
-rw-r--r--engines/scumm/he/script_v100he.cpp3
-rw-r--r--engines/scumm/he/script_v72he.cpp3
3 files changed, 18 insertions, 4 deletions
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index cf90094112..88c258a2e6 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -1348,6 +1348,22 @@ void ScummEngine::processActors() {
}
}
}
+ } else if (_game.heversion >= 90) {
+ for (int j = 0; j < numactors; ++j) {
+ for (int i = 0; i < numactors; ++i) {
+ int sc_actor1 = _sortedActors[j]->_layer;
+ int sc_actor2 = _sortedActors[i]->_layer;
+ if (sc_actor1 < sc_actor2) {
+ SWAP(_sortedActors[i], _sortedActors[j]);
+ } else if (sc_actor1 == sc_actor2) {
+ sc_actor1 = _sortedActors[j]->getPos().y;
+ sc_actor2 = _sortedActors[i]->getPos().y;
+ if (sc_actor1 < sc_actor2) {
+ SWAP(_sortedActors[i], _sortedActors[j]);
+ }
+ }
+ }
+ }
} else {
for (int j = 0; j < numactors; ++j) {
for (int i = 0; i < numactors; ++i) {
diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp
index 665782bf36..fe0904d632 100644
--- a/engines/scumm/he/script_v100he.cpp
+++ b/engines/scumm/he/script_v100he.cpp
@@ -420,8 +420,7 @@ void ScummEngine_v100he::o100_actorOps() {
a->_needRedraw = true;
break;
case 59:
- // HE games use reverse order of layering, so we adjust
- a->_layer = -pop();
+ a->_layer = pop();
a->_needRedraw = true;
break;
case 63:
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index bb209e78d1..64c63baa9d 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -770,8 +770,7 @@ void ScummEngine_v72he::o72_actorOps() {
a->setTalkCondition(k);
break;
case 43: // HE 90+
- // HE games use reverse order of layering, so we adjust
- a->_layer = -pop();
+ a->_layer = pop();
a->_needRedraw = true;
break;
case 64: