[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