[Scummvm-cvs-logs] SF.net SVN: scummvm: [32016] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun May 11 13:35:12 CEST 2008


Revision: 32016
          http://scummvm.svn.sourceforge.net/scummvm/?rev=32016&view=rev
Author:   lordhoto
Date:     2008-05-11 04:35:12 -0700 (Sun, 11 May 2008)

Log Message:
-----------
Committed slightly modified patch #1961830 "KYRA: Scroll wheel support for Kyra 2 and 3".

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/gui.cpp
    scummvm/trunk/engines/kyra/gui.h
    scummvm/trunk/engines/kyra/gui_v1.cpp
    scummvm/trunk/engines/kyra/gui_v1.h
    scummvm/trunk/engines/kyra/gui_v2.cpp
    scummvm/trunk/engines/kyra/gui_v2.h
    scummvm/trunk/engines/kyra/kyra_v1.cpp
    scummvm/trunk/engines/kyra/kyra_v2.cpp
    scummvm/trunk/engines/kyra/script_v1.cpp

Modified: scummvm/trunk/engines/kyra/gui.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -36,7 +36,6 @@
 GUI::GUI(KyraEngine *kyra)
 	: _vm(kyra), _screen(kyra->screen()), _text(kyra->text()) {
 	_menuButtonList = 0;
-	_haveScrollButtons = false;
 
 	_redrawButtonFunctor = BUTTON_FUNCTOR(GUI, this, &GUI::redrawButtonCallback);
 	_redrawShadedButtonFunctor = BUTTON_FUNCTOR(GUI, this, &GUI::redrawShadedButtonCallback);
@@ -148,13 +147,12 @@
 	}
 
 	if (menu.scrollUpButtonX != -1) {
-		_haveScrollButtons = true;
-
 		Button *scrollUpButton = getScrollUpButton();
 		scrollUpButton->x = menu.scrollUpButtonX + menu.x;
 		scrollUpButton->y = menu.scrollUpButtonY + menu.y;
 		scrollUpButton->buttonCallback = getScrollUpButtonHandler();
 		scrollUpButton->nextButton = 0;
+		scrollUpButton->mouseWheel = -1;
 		
 		_menuButtonList = addButtonToList(_menuButtonList, scrollUpButton);
 		updateMenuButton(scrollUpButton);
@@ -164,11 +162,10 @@
 		scrollDownButton->y = menu.scrollDownButtonY + menu.y;
 		scrollDownButton->buttonCallback = getScrollDownButtonHandler();
 		scrollDownButton->nextButton = 0;
+		scrollDownButton->mouseWheel = 1;
 
 		_menuButtonList = addButtonToList(_menuButtonList, scrollDownButton);
 		updateMenuButton(scrollDownButton);
-	} else {
-		_haveScrollButtons = false;
 	}
 
 	_screen->showMouse();

Modified: scummvm/trunk/engines/kyra/gui.h
===================================================================
--- scummvm/trunk/engines/kyra/gui.h	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui.h	2008-05-11 11:35:12 UTC (rev 32016)
@@ -75,6 +75,8 @@
 
 	uint16 flags2;
 
+	int8 mouseWheel;
+
 	Callback buttonCallback;
 };
 
@@ -140,7 +142,7 @@
 	virtual Button *addButtonToList(Button *list, Button *newButton);
 
 	virtual void processButton(Button *button) = 0;
-	virtual int processButtonList(Button *buttonList, uint16 inputFlags) = 0;
+	virtual int processButtonList(Button *buttonList, uint16 inputFlags, int8 mouseWheel) = 0;
 
 	virtual int redrawShadedButtonCallback(Button *button);
 	virtual int redrawButtonCallback(Button *button);
@@ -157,7 +159,6 @@
 	TextDisplayer *_text;
 
 	Button *_menuButtonList;
-	bool _haveScrollButtons;
 	bool _displayMenu;
 	bool _displaySubMenu;
 	bool _cancelSubMenu;

Modified: scummvm/trunk/engines/kyra/gui_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_v1.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui_v1.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -198,19 +198,19 @@
 	delete[] _menu;
 }
 
-int GUI_v1::processButtonList(Button *list, uint16 inputFlag) {
-	if (_haveScrollButtons) {
-		if (_mouseWheel < 0)
-			scrollUp(&_scrollUpButton);
-		else if (_mouseWheel > 0)
-			scrollDown(&_scrollDownButton);
-	}
+int GUI_v1::processButtonList(Button *list, uint16 inputFlag, int8 mouseWheel) {
 	while (list) {
 		if (list->flags & 8) {
 			list = list->nextButton;
 			continue;
 		}
 
+		if (mouseWheel && list->mouseWheel == mouseWheel && list->buttonCallback) {
+			if ((*list->buttonCallback.get())(list)) {
+				break;
+			}
+		}
+
 		int x = list->x;
 		int y = list->y;
 		assert(_screen->getScreenDim(list->dimTableIndex) != 0);
@@ -460,7 +460,7 @@
 	while (_displayMenu && !_vm->_quitFlag) {
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[_toplevelMenu], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, 0);
 		getInput();
 	}
 
@@ -584,7 +584,7 @@
 		getInput();
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[2], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, _mouseWheel);
 	}
 
 	_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
@@ -633,7 +633,7 @@
 		getInput();
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[2], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, _mouseWheel);
 	}
 
 	_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
@@ -722,7 +722,7 @@
 		updateSavegameString();
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[3], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, 0);
 	}
 
 	if (_cancelSubMenu) {
@@ -797,7 +797,7 @@
 		getInput();
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[1], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, 0);
 	}
 
 	_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
@@ -863,7 +863,7 @@
 		getInput();
 		Common::Point mouse = _vm->getMousePos();
 		processHighlights(_menu[5], mouse.x, mouse.y);
-		processButtonList(_menuButtonList, 0);
+		processButtonList(_menuButtonList, 0, 0);
 	}
 
 	_screen->loadPageFromDisk("SEENPAGE.TMP", 0);

Modified: scummvm/trunk/engines/kyra/gui_v1.h
===================================================================
--- scummvm/trunk/engines/kyra/gui_v1.h	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui_v1.h	2008-05-11 11:35:12 UTC (rev 32016)
@@ -44,7 +44,8 @@
 	button.y = h; \
 	button.width = i; \
 	button.height = j; \
-	button.flags2 = k
+	button.flags2 = k; \
+	button.mouseWheel = 0
 
 #define GUI_V1_MENU(menu, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) \
 	menu.x = a; \
@@ -93,7 +94,7 @@
 	~GUI_v1();
 
 	void processButton(Button *button);
-	int processButtonList(Button *buttonList, uint16 inputFlags);
+	int processButtonList(Button *buttonList, uint16 inputFlags, int8 mouseWheel);
 
 	int buttonMenuCallback(Button *caller);
 private:

Modified: scummvm/trunk/engines/kyra/gui_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_v2.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui_v2.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -140,7 +140,7 @@
 	_screen->updateScreen();
 }
 
-int GUI_v2::processButtonList(Button *buttonList, uint16 inputFlag) {
+int GUI_v2::processButtonList(Button *buttonList, uint16 inputFlag, int8 mouseWheel) {
 	static uint16 flagsModifier = 0;
 
 	if (!buttonList)
@@ -236,6 +236,12 @@
 		}
 
 		bool unk1 = false;
+
+		if (mouseWheel && buttonList->mouseWheel == mouseWheel) {
+			progress = true;
+			unk1 = true;
+		}
+
 		if (!progress)
 			buttonList->flags2 &= ~6;
 
@@ -848,7 +854,7 @@
 		}
 	}
 
-	processButtonList(_menuButtonList, keys | 0x8000);
+	processButtonList(_menuButtonList, keys | 0x8000, 0);
 }
 
 void GUI_v2::drawTextfieldBlock(int x, int y, uint8 c) {

Modified: scummvm/trunk/engines/kyra/gui_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/gui_v2.h	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/gui_v2.h	2008-05-11 11:35:12 UTC (rev 32016)
@@ -51,7 +51,8 @@
 	button.data1Val3 = q; \
 	button.data2Val2 = r; \
 	button.data2Val3 = s; \
-	button.flags2 = t;
+	button.flags2 = t; \
+	button.mouseWheel = 0
 
 #define GUI_V2_MENU(menu, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) \
 	menu.x = a; \
@@ -103,7 +104,7 @@
 	Button *addButtonToList(Button *list, Button *newButton);
 
 	void processButton(Button *button);
-	int processButtonList(Button *button, uint16 inputFlag);
+	int processButtonList(Button *button, uint16 inputFlag, int8 mouseWheel);
 
 protected:
 	void updateButton(Button *button);

Modified: scummvm/trunk/engines/kyra/kyra_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/kyra_v1.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -430,7 +430,7 @@
 
 		_screen->showMouse();
 
-		_gui->processButtonList(_buttonList, 0);
+		_gui->processButtonList(_buttonList, 0, 0);
 		updateMousePointer();
 		_timer->update();
 		updateTextFade();

Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -115,6 +115,7 @@
 	updateInput();
 
 	int keys = 0;
+	int8 mouseWheel = 0;
 
 	while (_eventList.size()) {
 		Common::Event event = *_eventList.begin();
@@ -156,6 +157,14 @@
 			breakLoop = true;
 			} break;
 
+		case Common::EVENT_WHEELUP:
+			mouseWheel = -1;
+			break;
+
+		case Common::EVENT_WHEELDOWN:
+			mouseWheel = 1;
+			break;
+
 		default:
 			break;
 		}
@@ -169,7 +178,7 @@
 		_eventList.erase(_eventList.begin());
 	}
 
-	return gui_v2()->processButtonList(buttonList, keys | 0x8000);
+	return gui_v2()->processButtonList(buttonList, keys | 0x8000, mouseWheel);
 }
 
 void KyraEngine_v2::updateInput() {
@@ -199,6 +208,8 @@
 			// fall through
 
 		case Common::EVENT_LBUTTONUP:
+		case Common::EVENT_WHEELUP:
+		case Common::EVENT_WHEELDOWN:
 			_eventList.push_back(event);
 			break;
 

Modified: scummvm/trunk/engines/kyra/script_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v1.cpp	2008-05-11 11:22:58 UTC (rev 32015)
+++ scummvm/trunk/engines/kyra/script_v1.cpp	2008-05-11 11:35:12 UTC (rev 32016)
@@ -1378,7 +1378,7 @@
 		delay(10);
 	}
 	// }
-	_gui->processButtonList(_buttonList, 0);
+	_gui->processButtonList(_buttonList, 0, 0);
 	_skipFlag = false;
 	Common::Point mouse = getMousePos();
 	script->regs[1] = mouse.x;


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