aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/coordadjuster.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-25 04:45:28 +0000
committerMartin Kiewitz2010-07-25 04:45:28 +0000
commit3090ee6ee710bf7c2c43a69e36740a829852f65d (patch)
tree9bb83387e9a0a3037eeb44842da7607a92907072 /engines/sci/graphics/coordadjuster.cpp
parentb90493bba0f860608ee32834774e56def66eafaf (diff)
downloadscummvm-rg350-3090ee6ee710bf7c2c43a69e36740a829852f65d.tar.gz
scummvm-rg350-3090ee6ee710bf7c2c43a69e36740a829852f65d.tar.bz2
scummvm-rg350-3090ee6ee710bf7c2c43a69e36740a829852f65d.zip
SCI: sci32 changes
- mouse position now gets adjusted inside kGetEvent - priority is read out during kFrameout - check planeRect - check if plane picture resource actually exists fixes sq6 svn-id: r51270
Diffstat (limited to 'engines/sci/graphics/coordadjuster.cpp')
-rw-r--r--engines/sci/graphics/coordadjuster.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/engines/sci/graphics/coordadjuster.cpp b/engines/sci/graphics/coordadjuster.cpp
index 69f89aa656..70b04b37bf 100644
--- a/engines/sci/graphics/coordadjuster.cpp
+++ b/engines/sci/graphics/coordadjuster.cpp
@@ -89,36 +89,26 @@ Common::Rect GfxCoordAdjuster16::pictureGetDisplayArea() {
#ifdef ENABLE_SCI32
GfxCoordAdjuster32::GfxCoordAdjuster32(SegManager *segMan)
: _segMan(segMan) {
+ scriptsRunningWidth = 0;
+ scriptsRunningHeight = 0;
}
GfxCoordAdjuster32::~GfxCoordAdjuster32() {
}
void GfxCoordAdjuster32::kernelGlobalToLocal(int16 &x, int16 &y, reg_t planeObject) {
- EngineState *s = g_sci->getEngineState();
- uint16 planeResY = readSelectorValue(s->_segMan, planeObject, SELECTOR(resY));
- uint16 planeResX = readSelectorValue(s->_segMan, planeObject, SELECTOR(resX));
- uint16 planeTop = readSelectorValue(s->_segMan, planeObject, SELECTOR(top));
- uint16 planeLeft = readSelectorValue(s->_segMan, planeObject, SELECTOR(left));
-
- y = ((y * planeResY) / g_sci->_gfxScreen->getHeight());
- x = ((x * planeResX) / g_sci->_gfxScreen->getWidth());
+ uint16 planeTop = readSelectorValue(_segMan, planeObject, SELECTOR(top));
+ uint16 planeLeft = readSelectorValue(_segMan, planeObject, SELECTOR(left));
y -= planeTop;
x -= planeLeft;
}
void GfxCoordAdjuster32::kernelLocalToGlobal(int16 &x, int16 &y, reg_t planeObject) {
- EngineState *s = g_sci->getEngineState();
- uint16 planeResY = readSelectorValue(s->_segMan, planeObject, SELECTOR(resY));
- uint16 planeResX = readSelectorValue(s->_segMan, planeObject, SELECTOR(resX));
- uint16 planeTop = readSelectorValue(s->_segMan, planeObject, SELECTOR(top));
- uint16 planeLeft = readSelectorValue(s->_segMan, planeObject, SELECTOR(left));
+ uint16 planeTop = readSelectorValue(_segMan, planeObject, SELECTOR(top));
+ uint16 planeLeft = readSelectorValue(_segMan, planeObject, SELECTOR(left));
x += planeLeft;
y += planeTop;
-
- y = ((y * g_sci->_gfxScreen->getHeight()) / planeResY);
- x = ((x * g_sci->_gfxScreen->getWidth()) / planeResX);
}
Common::Rect GfxCoordAdjuster32::onControl(Common::Rect rect) {
@@ -127,6 +117,16 @@ Common::Rect GfxCoordAdjuster32::onControl(Common::Rect rect) {
return adjustedRect;
}
+void GfxCoordAdjuster32::setScriptsResolution(uint16 width, uint16 height) {
+ scriptsRunningWidth = width;
+ scriptsRunningHeight = height;
+}
+
+void GfxCoordAdjuster32::getEvent(Common::Point &pos) {
+ pos.y = ((pos.y * scriptsRunningHeight) / g_sci->_gfxScreen->getHeight());
+ pos.x = ((pos.x * scriptsRunningWidth) / g_sci->_gfxScreen->getWidth());
+}
+
void GfxCoordAdjuster32::pictureSetDisplayArea(Common::Rect displayArea) {
_pictureDisplayArea = displayArea;
}