[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