[Scummvm-git-logs] scummvm master -> 99fba0514076a22c17e36b056c163380e7bd4fd3

yuv422 noreply at scummvm.org
Mon Dec 9 21:05:58 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
99fba05140 DARKSEED: Fix bug when clicking on an exit didn't always work


Commit: 99fba0514076a22c17e36b056c163380e7bd4fd3
    https://github.com/scummvm/scummvm/commit/99fba0514076a22c17e36b056c163380e7bd4fd3
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2024-12-10T08:03:16+11:00

Commit Message:
DARKSEED: Fix bug when clicking on an exit didn't always work

Changed paths:
    engines/darkseed/cursor.h
    engines/darkseed/room.cpp


diff --git a/engines/darkseed/cursor.h b/engines/darkseed/cursor.h
index 95890e67722..624bdccbf3b 100644
--- a/engines/darkseed/cursor.h
+++ b/engines/darkseed/cursor.h
@@ -65,6 +65,10 @@ public:
 		return _position.y;
 	}
 
+	Common::Rect getRect() const {
+		return Common::Rect(_position, getWidth(), getHeight());
+	}
+
 	int getWidth() const;
 	int getHeight() const;
 	const Sprite &getSprite() const;
diff --git a/engines/darkseed/room.cpp b/engines/darkseed/room.cpp
index 2e36cb336bd..11711821b18 100644
--- a/engines/darkseed/room.cpp
+++ b/engines/darkseed/room.cpp
@@ -357,11 +357,11 @@ int Room::checkCursorAndStaticObjects(int x, int y) {
 	bool hasObject = false;
 	_collisionType = 0;
 	for (uint i = 0; i < _roomObj.size(); i++) {
-		if (_roomObj[i].type == 0
-			&& _roomObj[i].xOffset <= cursorSprite._width + g_engine->_cursor.getX()
-			&& g_engine->_cursor.getX() <= _roomObj[i].width + _roomObj[i].xOffset
-			&& _roomObj[i].yOffset <= cursorSprite._height + g_engine->_cursor.getY()
-			&& g_engine->_cursor.getY() <= _roomObj[i].height + _roomObj[i].yOffset
+		if (_roomObj[i].type == 0 // check if the cursor rect overlaps with room rect.
+			&& g_engine->_cursor.getX() + cursorSprite._width >= _roomObj[i].xOffset
+			&& _roomObj[i].xOffset +_roomObj[i].width >= g_engine->_cursor.getX()
+			&& g_engine->_cursor.getY() + cursorSprite._height >= _roomObj[i].yOffset
+			&& _roomObj[i].yOffset + _roomObj[i].height >= g_engine->_cursor.getY()
 		) {
 			if (actionMode != kPointerAction && _roomObj[i].objNum >= 5) {
 				hasObject = true;
@@ -711,9 +711,10 @@ void Room::printRoomDescriptionText() const {
 }
 
 int Room::getRoomExitAtCursor() {
+	auto cursorRect = g_engine->_cursor.getRect();
 	for (uint i = 0; i < _roomObj.size(); i++) {
 		Common::Rect roomRect(_roomObj[i].xOffset, _roomObj[i].yOffset, _roomObj[i].xOffset + _roomObj[i].width, _roomObj[i].yOffset + _roomObj[i].height);
-		if (_roomObj[i].type == 0 && _roomObj[i].objNum < 6 && roomRect.contains(g_engine->_cursor.getPosition())) {
+		if (_roomObj[i].type == 0 && _roomObj[i].objNum < 6 && roomRect.intersects(cursorRect)) {
 			_selectedObjIndex = i;
 			return _roomObj[i].objNum;
 		}




More information about the Scummvm-git-logs mailing list