[Scummvm-cvs-logs] CVS: scummvm/sword1 menu.cpp,1.16,1.17 menu.h,1.5,1.6

Torbj?rn Andersson eriktorbjorn at users.sourceforge.net
Fri Jan 2 03:16:04 CET 2004


Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1:/tmp/cvs-serv15095

Modified Files:
	menu.cpp menu.h 
Log Message:
Moved the menu refreshing to a separate function so that it can be easily
accessed even when checkMenuClick() returns before reaching the end of the
function.

Used this to fix a menu highlighting regression.


Index: menu.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/menu.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- menu.cpp	2 Jan 2004 02:38:01 -0000	1.16
+++ menu.cpp	2 Jan 2004 11:15:35 -0000	1.17
@@ -101,35 +101,57 @@
 	_inMenu = 0;
 }
 
+void SwordMenu::refreshMenus() {
+	if (_objectBarStatus == MENU_OPEN) {
+		buildMenu();
+		for (uint8 cnt = 0; cnt < 16; cnt++) {
+			if (_objects[cnt])
+				_objects[cnt]->draw();
+			else
+				_screen->showFrame(cnt * 40, 0, 0xffffffff, 0);
+		}
+	}
+	if (_subjectBarStatus == MENU_OPEN) {
+		buildSubjects();
+		for (uint8 cnt = 0; cnt < 16; cnt++) {
+			if (_subjects[cnt])
+				_subjects[cnt]->draw();
+			else
+				_screen->showFrame(cnt * 40, 440, 0xffffffff, 0);
+		}
+	}
+}
+
 uint8 SwordMenu::checkMenuClick(uint8 menuType) {
-	bool refreshMenus = false;
 	uint16 mouseEvent = _mouse->testEvent();
 	if (!mouseEvent)
 		return 0;
 	uint16 x, y;
 	_mouse->giveCoords(&x, &y);
 	if (menuType == MENU_BOT) {
-		for (uint8 cnt = 0; cnt < SwordLogic::_scriptVars[IN_SUBJECT]; cnt++)
-			if (_subjects[cnt]->wasClicked(x, y))
+		for (uint8 cnt = 0; cnt < SwordLogic::_scriptVars[IN_SUBJECT]; cnt++) {
+			if (_subjects[cnt]->wasClicked(x, y)) {
 				if (mouseEvent & BS1L_BUTTON_DOWN) {
 					SwordLogic::_scriptVars[OBJECT_HELD] = _subjectBar[cnt];
-					refreshMenus = true;
+					refreshMenus();
 				} else if (mouseEvent & BS1L_BUTTON_UP) {
 					if (SwordLogic::_scriptVars[OBJECT_HELD] == _subjectBar[cnt])
 						return cnt + 1;
 					else {
 						SwordLogic::_scriptVars[OBJECT_HELD] = 0;
-						refreshMenus = true;
+						refreshMenus();
 					}
 				}
+			}
+		}
 	} else {
 		for (uint8 cnt = 0; cnt < _inMenu; cnt++) {
-			if (_objects[cnt]->wasClicked(x, y))
+			if (_objects[cnt]->wasClicked(x, y)) {
 				if (mouseEvent & BS1R_BUTTON_DOWN) { // looking at item
 					SwordLogic::_scriptVars[OBJECT_HELD] = _menuList[cnt];
 					SwordLogic::_scriptVars[MENU_LOOKING] = 1;
 					SwordLogic::_scriptVars[DEFAULT_ICON_TEXT] = _objectDefs[_menuList[cnt]].textDesc;
-					refreshMenus = true;
+					refreshMenus();
 				} else if (mouseEvent & BS1L_BUTTON_DOWN) {
 					if (SwordLogic::_scriptVars[OBJECT_HELD]) {
 						if (SwordLogic::_scriptVars[OBJECT_HELD] == _menuList[cnt]) {
@@ -143,30 +165,11 @@
 					} else {
 						SwordLogic::_scriptVars[OBJECT_HELD] = _menuList[cnt];
 						_mouse->setLuggage(_objectDefs[_menuList[cnt]].luggageIconRes, 0);
+						refreshMenus();
 						return cnt + 1;
 					}
-					refreshMenus = true;
+					refreshMenus();
 				}
-		}
-	}
-	if (refreshMenus) {
-		if (_objectBarStatus == MENU_OPEN) {
-			buildMenu();
-			for (uint8 cnt = 0; cnt < 16; cnt++) {
-				if (_objects[cnt])
-					_objects[cnt]->draw();
-				else
-					_screen->showFrame(cnt * 40, 0, 0xffffffff, 0);
-			}
-		}
-
-		if (_subjectBarStatus == MENU_OPEN) {
-			buildSubjects();
-			for (uint8 cnt = 0; cnt < 16; cnt++) {
-				if (_subjects[cnt])
-					_subjects[cnt]->draw();
-				else
-					_screen->showFrame(cnt * 40, 440, 0xffffffff, 0);
 			}
 		}
 	}

Index: menu.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/menu.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- menu.h	21 Dec 2003 17:55:40 -0000	1.5
+++ menu.h	2 Jan 2004 11:15:35 -0000	1.6
@@ -82,6 +82,7 @@
 	byte _objectBarStatus;
 	int8 _fadeSubject;
 	int8 _fadeObject;
+	void refreshMenus(void);
 	uint8 checkMenuClick(uint8 menuType);
 	//- lower menu, speech subjects:
 	SwordMenuIcon *_subjects[16];





More information about the Scummvm-git-logs mailing list