[Scummvm-cvs-logs] SF.net SVN: scummvm: [26206] scummvm/trunk/engines/agos

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun Mar 18 14:29:13 CET 2007


Revision: 26206
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26206&view=rev
Author:   fingolfin
Date:     2007-03-18 06:29:12 -0700 (Sun, 18 Mar 2007)

Log Message:
-----------
Changed AGOS to use the EventManager to track the mouse position; added a FIXME comment about _mouseOld never being set

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/cursor.cpp
    scummvm/trunk/engines/agos/event.cpp
    scummvm/trunk/engines/agos/input.cpp
    scummvm/trunk/engines/agos/verb.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/agos.cpp	2007-03-18 13:29:12 UTC (rev 26206)
@@ -259,11 +259,6 @@
 	_firstTimeStruct = 0;
 	_pendingDeleteTimeEvent = 0;
 
-	_mouseX = 0;
-	_mouseY = 0;
-	_mouseXOld = 0;
-	_mouseYOld = 0;
-
 	_leftButtonDown = 0;
 	_rightButtonDown = 0;
 	_noRightClick = false;
@@ -446,9 +441,6 @@
 	_oracleMaxScrollY = 0;
 	_noOracleScroll = 0;
 
-	_sdlMouseX = 0;
-	_sdlMouseY = 0;
-
 	_backGroundBuf = 0;
 	_frontBuf = 0;
 	_backBuf = 0;

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/agos.h	2007-03-18 13:29:12 UTC (rev 26206)
@@ -356,8 +356,8 @@
 
 	TimeEvent *_firstTimeStruct, *_pendingDeleteTimeEvent;
 
-	int _mouseX, _mouseY;
-	int _mouseXOld, _mouseYOld;
+	Common::Point _mouse;
+	Common::Point _mouseOld;
 
 	byte *_mouseData;
 	byte _animatePointer;
@@ -515,8 +515,6 @@
 
 	bool _oopsValid;
 
-	int _sdlMouseX, _sdlMouseY;
-
 	byte *_backGroundBuf;
 	byte *_frontBuf;
 	byte *_backBuf;
@@ -777,7 +775,6 @@
 	void invertBox(HitArea * ha, byte a, byte b, byte c, byte d);
 
 	void handleMouseMoved();
-	void pollMouseXY();
 	void initMouse();
 	void loadMouseImage();
 	void drawMousePointer();

Modified: scummvm/trunk/engines/agos/cursor.cpp
===================================================================
--- scummvm/trunk/engines/agos/cursor.cpp	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/cursor.cpp	2007-03-18 13:29:12 UTC (rev 26206)
@@ -23,6 +23,7 @@
 
 #include "common/stdafx.h"
 
+#include "common/events.h"
 #include "common/system.h"
 
 #include "graphics/cursorman.h"
@@ -308,21 +309,24 @@
 	}
 
 	CursorMan.showMouse(true);
-	pollMouseXY();
 
-	if (_mouseX <= 0)
-		_mouseX = 0;
-	if (_mouseX >= _screenWidth - 1)
-		_mouseX = _screenWidth - 1;
+	_mouse = _system->getEventManager()->getMousePos();
 
-	if (_mouseY <= 0)
-		_mouseY = 0;
-	if (_mouseY >= _screenHeight - 1)
-		_mouseY = _screenHeight - 1;
+	// Clip the mouse to the screen
+	// TODO this should not be necessary 
+	if (_mouse.x <= 0)
+		_mouse.x = 0;
+	if (_mouse.x >= _screenWidth - 1)
+		_mouse.x = _screenWidth - 1;
 
+	if (_mouse.y <= 0)
+		_mouse.y = 0;
+	if (_mouse.y >= _screenHeight - 1)
+		_mouse.y = _screenHeight - 1;
+
 	if (_defaultVerb) {
 		uint id = 101;
-		if (_mouseY >= 136)
+		if (_mouse.y >= 136)
 			id = 102;
 		if (_defaultVerb != id)
 			resetVerbs();
@@ -337,7 +341,7 @@
 
 	if (getGameType() == GType_FF) {
 		if (getBitFlag(99)) { // Oracle
-			if (_mouseX >= 10 && _mouseX <= 635 && _mouseY >= 5 && _mouseY <= 475) {
+			if (_mouse.x >= 10 && _mouse.x <= 635 && _mouse.y >= 5 && _mouse.y <= 475) {
 				setBitFlag(98, true);
 			} else {
 				if (getBitFlag(98)) {
@@ -345,7 +349,7 @@
 				}
 			}
 		} else if (getBitFlag(88)) { // Close Up
-			if (_mouseX >= 10 && _mouseX <= 635 && _mouseY >= 5 && _mouseY <= 475) {
+			if (_mouse.x >= 10 && _mouse.x <= 635 && _mouse.y >= 5 && _mouse.y <= 475) {
 				setBitFlag(87, true);
 			} else {
 				if (getBitFlag(87)) {
@@ -361,15 +365,15 @@
 	} else if (getGameType() == GType_SIMON2) {
 		if (getBitFlag(79)) {
 			if (!_vgaVar9) {
-				if (_mouseX >= 315 || _mouseX < 9)
+				if (_mouse.x >= 315 || _mouse.x < 9)
 					goto get_out2;
 				_vgaVar9 = 1;
 			}
 			if (_scrollCount == 0) {
-				if (_mouseX >= 315) {
+				if (_mouse.x >= 315) {
 					if (_scrollX != _scrollXMax)
 						_scrollFlag = 1;
-				} else if (_mouseX < 8) {
+				} else if (_mouse.x < 8) {
 					if (_scrollX != 0)
 						_scrollFlag = -1;
 				}
@@ -395,12 +399,14 @@
 		}
 	}
 
-	if (_mouseX != _mouseXOld || _mouseY != _mouseYOld)
+	// FIXME: The value of _mouseOld is *never* changed and hence
+	// always equal to (0,0). This seems like a bug.
+	if (_mouse != _mouseOld)
 		_needHitAreaRecalc++;
 
 	if (_leftButtonOld == 0 && _leftButtonCount != 0) {
 		_lastClickRem = 0;
-		boxController(_mouseX, _mouseY, 3);
+		boxController(_mouse.x, _mouse.y, 3);
 	}
 	_leftButtonOld = _leftButton;
 
@@ -437,7 +443,7 @@
 	}
 
 boxstuff:
-	boxController(_mouseX, _mouseY, x);
+	boxController(_mouse.x, _mouse.y, x);
 	_lastHitArea3 = _lastHitArea;
 	if (x == 1 && _lastHitArea == NULL)
 		_lastHitArea3 = (HitArea *) -1;
@@ -465,11 +471,6 @@
 	_lockWord &= ~1;
 }
 
-void AGOSEngine::pollMouseXY() {
-	_mouseX = _sdlMouseX;
-	_mouseY = _sdlMouseY;
-}
-
 void AGOSEngine::initMouse() {
 	if (getGameType() == GType_PP) {
 		_maxCursorWidth = 75;

Modified: scummvm/trunk/engines/agos/event.cpp
===================================================================
--- scummvm/trunk/engines/agos/event.cpp	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/event.cpp	2007-03-18 13:29:12 UTC (rev 26206)
@@ -377,19 +377,12 @@
 					_keyPressed = (byte)event.kbd.ascii;
 				break;
 			case Common::EVENT_MOUSEMOVE:
-				_sdlMouseX = event.mouse.x;
-				_sdlMouseY = event.mouse.y;
 				break;
 			case Common::EVENT_LBUTTONDOWN:
 				if (getGameType() == GType_FF)
 					setBitFlag(89, true);
 				_leftButtonDown++;
 				_leftButton = 1;
-
-#if defined (_WIN32_WCE) || defined(PALMOS_MODE)
-				_sdlMouseX = event.mouse.x;
-				_sdlMouseY = event.mouse.y;
-#endif
 				break;
 			case Common::EVENT_LBUTTONUP:
 				if (getGameType() == GType_FF)

Modified: scummvm/trunk/engines/agos/input.cpp
===================================================================
--- scummvm/trunk/engines/agos/input.cpp	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/input.cpp	2007-03-18 13:29:12 UTC (rev 26206)
@@ -357,7 +357,7 @@
 	_dragCount = 0;
 	_dragEnd = 0;
 
-	boxController(_mouseX, _mouseY, 1);
+	boxController(_mouse.x, _mouse.y, 1);
 
 	if (_currentBox != NULL) {
 		_hitAreaObjectItem = _currentBox->item_ptr;

Modified: scummvm/trunk/engines/agos/verb.cpp
===================================================================
--- scummvm/trunk/engines/agos/verb.cpp	2007-03-18 12:53:28 UTC (rev 26205)
+++ scummvm/trunk/engines/agos/verb.cpp	2007-03-18 13:29:12 UTC (rev 26206)
@@ -511,9 +511,9 @@
 		if (getGameType() == GType_SIMON2) {
 			id = 2;
 			if (!getBitFlag(79))
-				id = (_mouseY >= 136) ? 102 : 101;
+				id = (_mouse.y >= 136) ? 102 : 101;
 		} else {
-			id = (_mouseY >= 136) ? 102 : 101;
+			id = (_mouse.y >= 136) ? 102 : 101;
 		}
 
 		_defaultVerb = id;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list