diff options
author | Colin Snover | 2016-11-27 10:53:06 -0600 |
---|---|---|
committer | Colin Snover | 2016-12-19 14:46:59 -0600 |
commit | 4cff1e400f7e1e885b12990a5a34772d05eb2285 (patch) | |
tree | a9e85d62fa6fd48bd2cc19d0d6a55d855fc5a6f4 /engines/sci/graphics/plane32.cpp | |
parent | 5220ce1e4f9090d0e6272d680dbfa3813233399b (diff) | |
download | scummvm-rg350-4cff1e400f7e1e885b12990a5a34772d05eb2285.tar.gz scummvm-rg350-4cff1e400f7e1e885b12990a5a34772d05eb2285.tar.bz2 scummvm-rg350-4cff1e400f7e1e885b12990a5a34772d05eb2285.zip |
SCI32: Add support for alternate graphics selectors
Used by at least Phantasmagoria 2.
Diffstat (limited to 'engines/sci/graphics/plane32.cpp')
-rw-r--r-- | engines/sci/graphics/plane32.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/engines/sci/graphics/plane32.cpp b/engines/sci/graphics/plane32.cpp index 46622261f5..aa8cd52d42 100644 --- a/engines/sci/graphics/plane32.cpp +++ b/engines/sci/graphics/plane32.cpp @@ -80,10 +80,17 @@ _moved(0) { _vanishingPoint.x = readSelectorValue(segMan, object, SELECTOR(vanishingX)); _vanishingPoint.y = readSelectorValue(segMan, object, SELECTOR(vanishingY)); - _gameRect.left = readSelectorValue(segMan, object, SELECTOR(inLeft)); - _gameRect.top = readSelectorValue(segMan, object, SELECTOR(inTop)); - _gameRect.right = readSelectorValue(segMan, object, SELECTOR(inRight)) + 1; - _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(inBottom)) + 1; + if (g_sci->_features->usesAlternateSelectors()) { + _gameRect.left = readSelectorValue(segMan, object, SELECTOR(left)); + _gameRect.top = readSelectorValue(segMan, object, SELECTOR(top)); + _gameRect.right = readSelectorValue(segMan, object, SELECTOR(right)) + 1; + _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(bottom)) + 1; + } else { + _gameRect.left = readSelectorValue(segMan, object, SELECTOR(inLeft)); + _gameRect.top = readSelectorValue(segMan, object, SELECTOR(inTop)); + _gameRect.right = readSelectorValue(segMan, object, SELECTOR(inRight)) + 1; + _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(inBottom)) + 1; + } convertGameRectToPlaneRect(); _back = readSelectorValue(segMan, object, SELECTOR(back)); @@ -829,10 +836,18 @@ void Plane::update(const reg_t object) { SegManager *segMan = g_sci->getEngineState()->_segMan; _vanishingPoint.x = readSelectorValue(segMan, object, SELECTOR(vanishingX)); _vanishingPoint.y = readSelectorValue(segMan, object, SELECTOR(vanishingY)); - _gameRect.left = readSelectorValue(segMan, object, SELECTOR(inLeft)); - _gameRect.top = readSelectorValue(segMan, object, SELECTOR(inTop)); - _gameRect.right = readSelectorValue(segMan, object, SELECTOR(inRight)) + 1; - _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(inBottom)) + 1; + + if (g_sci->_features->usesAlternateSelectors()) { + _gameRect.left = readSelectorValue(segMan, object, SELECTOR(left)); + _gameRect.top = readSelectorValue(segMan, object, SELECTOR(top)); + _gameRect.right = readSelectorValue(segMan, object, SELECTOR(right)) + 1; + _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(bottom)) + 1; + } else { + _gameRect.left = readSelectorValue(segMan, object, SELECTOR(inLeft)); + _gameRect.top = readSelectorValue(segMan, object, SELECTOR(inTop)); + _gameRect.right = readSelectorValue(segMan, object, SELECTOR(inRight)) + 1; + _gameRect.bottom = readSelectorValue(segMan, object, SELECTOR(inBottom)) + 1; + } convertGameRectToPlaneRect(); _priority = readSelectorValue(segMan, object, SELECTOR(priority)); |