From 3090ee6ee710bf7c2c43a69e36740a829852f65d Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sun, 25 Jul 2010 04:45:28 +0000 Subject: 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 --- engines/sci/graphics/coordadjuster.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'engines/sci/graphics/coordadjuster.cpp') 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; } -- cgit v1.2.3