diff options
author | Travis Howell | 2009-06-18 07:12:53 +0000 |
---|---|---|
committer | Travis Howell | 2009-06-18 07:12:53 +0000 |
commit | 7123fbdd7095257c9c23102f7d86d2c8cf21cfd0 (patch) | |
tree | 8cc9b9b8c79066189dd9da508498da63bbc0bcd2 /engines/scumm | |
parent | b8a9823f4e868a98ae85862eb457b6d4e7cffe1c (diff) | |
download | scummvm-rg350-7123fbdd7095257c9c23102f7d86d2c8cf21cfd0.tar.gz scummvm-rg350-7123fbdd7095257c9c23102f7d86d2c8cf21cfd0.tar.bz2 scummvm-rg350-7123fbdd7095257c9c23102f7d86d2c8cf21cfd0.zip |
Merged revisions 41625 via svnmerge from
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk
........
r41625 | Kirben | 2009-06-18 16:18:31 +1000 (Thu, 18 Jun 2009) | 1 line
Correct actor layering method in HE90+ games.
........
svn-id: r41626
Diffstat (limited to 'engines/scumm')
-rw-r--r-- | engines/scumm/actor.cpp | 16 | ||||
-rw-r--r-- | engines/scumm/he/script_v100he.cpp | 3 | ||||
-rw-r--r-- | engines/scumm/he/script_v72he.cpp | 3 |
3 files changed, 18 insertions, 4 deletions
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index f3c8e2ff6b..52866279b8 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 fc27c338b2..60db9adefb 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 049fb13cd2..3c55818ece 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: |