From 03177721b864439afb9b245d0f9be6528b458b12 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Sun, 31 Jul 2016 18:39:12 -0500 Subject: SCI32: Allow pixel doubling of some cursors to improve usability --- engines/sci/graphics/cursor32.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'engines/sci/graphics') diff --git a/engines/sci/graphics/cursor32.cpp b/engines/sci/graphics/cursor32.cpp index a5491eec2a..5b63859972 100644 --- a/engines/sci/graphics/cursor32.cpp +++ b/engines/sci/graphics/cursor32.cpp @@ -182,13 +182,39 @@ void GfxCursor32::setView(const GuiResourceId viewId, const int16 loopNo, const _width = view._width; _height = view._height; + // SSCI never increased the size of cursors, but some of the cursors + // in early SSCI games were designed for low-resolution screens and so + // are kind of hard to pick out when running in high-resolution mode. + // To address this, we make some slight adjustments to cursor display + // in a couple of games. + // GK1: All the cursors are increased in size since they all appear to + // be designed for low-res display. + // PQ4: We only make the cursors bigger if they are above a set + // threshold size because inventory items usually have a + // high-resolution cursor representation. + bool pixelDouble = false; + if (g_sci->_gfxFrameout->_isHiRes && + (g_sci->getGameId() == GID_GK1 || + (g_sci->getGameId() == GID_PQ4 && _width <= 22 && _height <= 22))) { + + _width *= 2; + _height *= 2; + _hotSpot.x *= 2; + _hotSpot.y *= 2; + pixelDouble = true; + } + _cursor.data = (byte *)realloc(_cursor.data, _width * _height); _cursor.rect = Common::Rect(_width, _height); memset(_cursor.data, 255, _width * _height); _cursor.skipColor = 255; Buffer target(_width, _height, _cursor.data); - view.draw(target, _cursor.rect, Common::Point(0, 0), false); + if (pixelDouble) { + view.draw(target, _cursor.rect, Common::Point(0, 0), false, 2, 2); + } else { + view.draw(target, _cursor.rect, Common::Point(0, 0), false); + } } else { _hotSpot = Common::Point(0, 0); _width = _height = 1; -- cgit v1.2.3