aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gui/gui_cursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/gui/gui_cursor.cpp')
-rw-r--r--engines/sci/gui/gui_cursor.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/engines/sci/gui/gui_cursor.cpp b/engines/sci/gui/gui_cursor.cpp
index e24e6e36b5..cad6b2178a 100644
--- a/engines/sci/gui/gui_cursor.cpp
+++ b/engines/sci/gui/gui_cursor.cpp
@@ -39,8 +39,9 @@ namespace Sci {
SciGuiCursor::SciGuiCursor(ResourceManager *resMan, SciGuiPalette *palette, SciGuiScreen *screen)
: _resMan(resMan), _palette(palette), _screen(screen) {
- setPosition(Common::Point(160, 150));
- setMoveZone(Common::Rect(0, 0, _screen->_displayWidth, _screen->_displayHeight));
+ _upscaledHires = _screen->getUpscaledHires();
+ setPosition(Common::Point(160, 150)); // TODO: how is that different in 640x400 games?
+ setMoveZone(Common::Rect(0, 0, 320, 200)); // TODO: hires games
}
SciGuiCursor::~SciGuiCursor() {
@@ -157,24 +158,21 @@ void SciGuiCursor::setView(GuiResourceId viewNum, int loopNum, int celNum, Commo
}
void SciGuiCursor::setPosition(Common::Point pos) {
- int scaleFactor = _screen->getScaleFactor();
-
- if (scaleFactor == 1)
+ if (!_upscaledHires) {
g_system->warpMouse(pos.x, pos.y);
- else
- g_system->warpMouse(pos.x * scaleFactor, pos.y * scaleFactor);
+ } else {
+ g_system->warpMouse(pos.x * 2, pos.y * 2);
+ }
}
Common::Point SciGuiCursor::getPosition() {
- int scaleFactor = _screen->getScaleFactor();
- Common::Point pos = g_system->getEventManager()->getMousePos();
-
- if (scaleFactor != 1) {
- pos.x /= scaleFactor;
- pos.y /= scaleFactor;
+ if (!_upscaledHires) {
+ return g_system->getEventManager()->getMousePos();
+ } else {
+ Common::Point mousePos = g_system->getEventManager()->getMousePos();
+ mousePos.x /= 2; mousePos.y /= 2;
+ return mousePos;
}
-
- return pos;
}
void SciGuiCursor::refreshPosition() {
@@ -199,7 +197,7 @@ void SciGuiCursor::refreshPosition() {
// FIXME: Do this only when mouse is grabbed?
if (clipped)
- setPosition(mousePoint);
+ g_system->warpMouse(mousePoint.x, mousePoint.y);
}
} // End of namespace Sci