[Scummvm-cvs-logs] SF.net SVN: scummvm:[46424] scummvm/trunk/engines/m4

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Dec 20 08:09:40 CET 2009


Revision: 46424
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46424&view=rev
Author:   dreammaster
Date:     2009-12-20 07:09:40 +0000 (Sun, 20 Dec 2009)

Log Message:
-----------
Changed the M4 event handler to encode the keyboard flags into KEVENT_KEY events

Modified Paths:
--------------
    scummvm/trunk/engines/m4/converse.cpp
    scummvm/trunk/engines/m4/converse.h
    scummvm/trunk/engines/m4/events.cpp
    scummvm/trunk/engines/m4/events.h
    scummvm/trunk/engines/m4/gui.cpp
    scummvm/trunk/engines/m4/gui.h
    scummvm/trunk/engines/m4/m4_menus.cpp
    scummvm/trunk/engines/m4/m4_menus.h
    scummvm/trunk/engines/m4/m4_views.cpp
    scummvm/trunk/engines/m4/m4_views.h
    scummvm/trunk/engines/m4/mads_anim.cpp
    scummvm/trunk/engines/m4/mads_anim.h
    scummvm/trunk/engines/m4/mads_menus.cpp
    scummvm/trunk/engines/m4/mads_menus.h
    scummvm/trunk/engines/m4/viewmgr.h

Modified: scummvm/trunk/engines/m4/converse.cpp
===================================================================
--- scummvm/trunk/engines/m4/converse.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/converse.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -173,7 +173,7 @@
 	View::onRefresh(rects, destSurface);
 }
 
-bool ConversationView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool ConversationView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	//if (!this->isVisible())
 	//	return false;
 	if (!_entriesShown)

Modified: scummvm/trunk/engines/m4/converse.h
===================================================================
--- scummvm/trunk/engines/m4/converse.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/converse.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -142,7 +142,7 @@
 	void setNode(int32 nodeIndex);
 
 	void onRefresh(RectList *rects, M4Surface *destSurface);
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 	int32 getCurrentNodeIndex() { return _currentNodeIndex; }
 	void selectEntry(int entryIndex);
 

Modified: scummvm/trunk/engines/m4/events.cpp
===================================================================
--- scummvm/trunk/engines/m4/events.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/events.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -50,6 +50,7 @@
 	_keyCode = 0;
 	_console = new Console(_vm);
 	_mouseButtons = 0;
+	_ctrlFlag = false;
 }
 
 M4EventType Events::handleEvents() {
@@ -63,12 +64,20 @@
 			quitFlag = true;
 			break;
 		case Common::EVENT_KEYDOWN:
-			if (_event.kbd.flags == Common::KBD_CTRL) {
-				if (_event.kbd.keycode == Common::KEYCODE_d)
+			// Note: The Ctrl-D ScummVM shortcut has been specialised so it will only activate the debugger
+			// if it's the first key pressed after the Ctrl key is held down
+			if ((_event.kbd.keycode == Common::KEYCODE_LCTRL) || (_event.kbd.keycode == Common::KEYCODE_RCTRL))
+				_ctrlFlag = true;
+			
+			else if (_event.kbd.flags == Common::KBD_CTRL) {
+				if ((_event.kbd.keycode == Common::KEYCODE_d) && _ctrlFlag) {
 					_console->attach();
 					_console->onFrame();
+				}
+				_ctrlFlag = false;
 			}
-			_keyCode = (int)_event.kbd.keycode;
+			_keyCode = (int32)_event.kbd.keycode | (_event.kbd.flags << 24);
+			
 
 			break;
 		case Common::EVENT_LBUTTONDOWN:

Modified: scummvm/trunk/engines/m4/events.h
===================================================================
--- scummvm/trunk/engines/m4/events.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/events.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -71,9 +71,10 @@
 	M4Engine *_vm;
 	Common::Event _event;
 	M4MouseState _mouseState;
-	int _keyCode;
+	int32 _keyCode;
 	int _mouseButtons;
 	Console *_console;
+	bool _ctrlFlag;
 public:
 	bool quitFlag;
 	Events(M4Engine *vm);

Modified: scummvm/trunk/engines/m4/gui.cpp
===================================================================
--- scummvm/trunk/engines/m4/gui.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/gui.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -115,7 +115,7 @@
 	_callback = callbackFn;
 }
 
-bool MenuButton::onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem) {
+bool MenuButton::onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem) {
 	bool redrawFlag = false;
 	bool callbackFlag = false;
 	bool handledFlag = true;
@@ -386,7 +386,7 @@
 	sprite->copyTo(parent(), _bounds.left + _thumbX, _bounds.top, 0);
 }
 
-bool MenuHorizSlider::onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem) {
+bool MenuHorizSlider::onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem) {
 	static bool movingFlag = false;
 	static int movingX = 0;
 	bool redrawFlag = false, handledFlag = false, callbackFlag = false;
@@ -568,7 +568,7 @@
 		thumbSprite->copyTo(parent(), _bounds.left, _bounds.top + _thumbY, 0);
 }
 
-bool MenuVertSlider::onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem) {
+bool MenuVertSlider::onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem) {
 	static bool movingFlag = false;
 	static int movingY = 0;
 	static uint32 callbackTime;
@@ -858,7 +858,7 @@
 	}
 }
 
-bool MenuSaveLoadText::onEvent(M4::M4EventType event, int param, int x, int y, M4::MenuObject *&currentItem) {
+bool MenuSaveLoadText::onEvent(M4::M4EventType event, int32 param, int x, int y, M4::MenuObject *&currentItem) {
 	if (!_visible) return false;
 	bool handledFlag = MenuButton::onEvent(event, param, x, y, currentItem);
 
@@ -985,7 +985,7 @@
 	}
 }
 
-bool MenuTextField::onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem) {
+bool MenuTextField::onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem) {
 	char tempStr[MAX_SAVEGAME_NAME];
 	int tempLen;
 	char *tempP;
@@ -1177,7 +1177,7 @@
 	}
 }
 
-bool GUIButton::onEvent(M4EventType eventType, int param, int x, int y, GUIObject *&currentItem) {
+bool GUIButton::onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *&currentItem) {
 	bool result = false;
 	bool isPressed = (eventType == MEVENT_LEFT_CLICK) || (eventType == MEVENT_LEFT_HOLD) ||
 		(eventType == MEVENT_LEFT_DRAG);

Modified: scummvm/trunk/engines/m4/gui.h
===================================================================
--- scummvm/trunk/engines/m4/gui.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/gui.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -268,7 +268,7 @@
 	int getObjectId() { return _objectId; }
 
 	void onExecute();
-	virtual bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem) { return false; }
+	virtual bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem) { return false; }
 };
 
 class MenuButton: public MenuObject {
@@ -278,7 +278,7 @@
 		ObjectType buttonType = OBJTYPE_BUTTON);
 
 	void onRefresh();
-	bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem);
+	bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem);
 	bool getToggled() { return _objectType == OBJTYPE_OM_SWITCH_ON; }
 };
 
@@ -297,7 +297,7 @@
 		int initialPercentage, Callback callbackFn = NULL, bool transparent = false);
 
 	void onRefresh();
-	bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem);
+	bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem);
 	int percent() { return _percent; }
 };
 
@@ -326,7 +326,7 @@
 		int initialPercentage, Callback callbackFn = NULL, bool transparent = false);
 
 	void onRefresh();
-	bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem);
+	bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem);
 	MenuVertSliderState sliderState() { return _sliderState; }
 	int percent() { return _percent; }
 	void setPercentage(int value);
@@ -367,7 +367,7 @@
 		bool loadFlag = false, const char *displayText = NULL, int displayValue = 0);
 
 	void onRefresh();
-	bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem);
+	bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem);
 	void setDisplay(int value, const char *text) { _displayValue = value; _displayText = text; }
 	int getIndex() { return _index; }
 	const char *getText() { return _displayText; }
@@ -388,7 +388,7 @@
 		int displayValue = 0, bool transparent = true);
 
 	void onRefresh();
-	bool onEvent(M4EventType event, int param, int x, int y, MenuObject *&currentItem);
+	bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *&currentItem);
 
 	const char *getText() { return _displayText; }
 	int getDisplayValue() { return _displayValue; }
@@ -401,7 +401,7 @@
 public:
 	GUIRect(View *owner, const Common::Rect &bounds, int tag): GUIObject(owner, bounds) { _tag = tag; };
 
-	virtual bool onEvent(M4EventType eventType, int param, int x, int y, GUIObject *&currentItem) { return false; }
+	virtual bool onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *&currentItem) { return false; }
 	int getTag() const { return _tag; }
 };
 
@@ -418,7 +418,7 @@
 		M4Surface *normalSprite, M4Surface *mouseOverSprite, M4Surface *pressedSprite);
 
 	void onRefresh();
-	bool onEvent(M4EventType eventType, int param, int x, int y, GUIObject *&currentItem);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *&currentItem);
 	GUIButtonState getState() const { return _buttonState; }
 };
 

Modified: scummvm/trunk/engines/m4/m4_menus.cpp
===================================================================
--- scummvm/trunk/engines/m4/m4_menus.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/m4_menus.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -532,7 +532,7 @@
 	}
 }
 
-bool OrionMenuView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool OrionMenuView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	static Common::Point movingPos(0, 0);
 	static bool movingFlag = false;
 

Modified: scummvm/trunk/engines/m4/m4_menus.h
===================================================================
--- scummvm/trunk/engines/m4/m4_menus.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/m4_menus.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -70,7 +70,7 @@
 	void refresh(const Common::Rect &areaRect);
 	void close() { _closeFlag = true; }
 
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 
 	int _originalMidiVolume;
 	SaveGameList *_saveNames;

Modified: scummvm/trunk/engines/m4/m4_views.cpp
===================================================================
--- scummvm/trunk/engines/m4/m4_views.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/m4_views.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -91,7 +91,7 @@
 	}
 }
 
-bool GUIInventory::onEvent(M4EventType eventType, int param, int x, int y, GUIObject *&currentItem) {
+bool GUIInventory::onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *&currentItem) {
 	bool result = false;
 	int overIndex = getInsideIndex(x, y);
 	bool isPressed = (eventType == MEVENT_LEFT_CLICK) || (eventType == MEVENT_LEFT_HOLD) ||
@@ -268,7 +268,7 @@
 	_highlightedIndex = index;
 }
 
-bool GameInterfaceView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool GameInterfaceView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	static bool selectionFlag = false;
 	if (eventType == MEVENT_LEFT_RELEASE)
 		selectionFlag = false;

Modified: scummvm/trunk/engines/m4/m4_views.h
===================================================================
--- scummvm/trunk/engines/m4/m4_views.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/m4_views.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -64,7 +64,7 @@
 				 int horizCells, int vertCells, int cellWidth, int cellHeight, int tag);
 
 	void onRefresh();
-	bool onEvent(M4EventType eventType, int param, int x, int y, GUIObject *&currentItem);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *&currentItem);
 
 	void add(const char *name, const char *verb, M4Surface *icon, int iconIndex);
 	bool remove(const char *name);
@@ -104,7 +104,7 @@
 	~GameInterfaceView();
 
 	void onRefresh(RectList *rects, M4Surface *destSurface);
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 	void setStatusText(const char *text) { _statusText.setText(text); }
 	void cancelSentence() { setStatusText(NULL); }
 	void inventoryAdd(const char *name, const char *verb, int iconIndex) {

Modified: scummvm/trunk/engines/m4/mads_anim.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_anim.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/mads_anim.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -120,7 +120,7 @@
 	processLines();
 }
 
-bool TextviewView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool TextviewView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	if (!_processEvents)
 		return false;
 
@@ -494,7 +494,7 @@
 	_script = _vm->res()->get(_resourceName);
 }
 
-bool AnimviewView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool AnimviewView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	// Wait for the Escape key or a mouse press
 	if (((eventType == KEVENT_KEY) && (param == Common::KEYCODE_ESCAPE)) ||
 		(eventType == MEVENT_LEFT_RELEASE) || (eventType == MEVENT_RIGHT_RELEASE)) {

Modified: scummvm/trunk/engines/m4/mads_anim.h
===================================================================
--- scummvm/trunk/engines/m4/mads_anim.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/mads_anim.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -81,7 +81,7 @@
 	bool isAnimating() { return _animating; }
 	void scriptDone();
 
-	bool onEvent(M4EventType eventType, int param1, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param1, int x, int y, bool &captureEvents);
 	void updateState();
 };
 
@@ -128,7 +128,7 @@
 	void setScript(const char *resourceName, AnimviewCallback callback);
 	void scriptDone();
 
-	bool onEvent(M4EventType eventType, int param1, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param1, int x, int y, bool &captureEvents);
 	void updateState();
 };
 

Modified: scummvm/trunk/engines/m4/mads_menus.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_menus.cpp	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/mads_menus.cpp	2009-12-20 07:09:40 UTC (rev 46424)
@@ -88,7 +88,7 @@
 	}
 }
 
-bool RexMainMenuView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool RexMainMenuView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	// Handle keypresses - these can be done at any time, even when the menu items are being drawn
 	if (eventType == KEVENT_KEY) {
 		switch (param) {
@@ -351,7 +351,7 @@
 
 }
 
-bool MadsMainMenuView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool MadsMainMenuView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	return false;
 }
 
@@ -394,7 +394,7 @@
 	}
 }
 
-bool DragonMainMenuView::onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) {
+bool DragonMainMenuView::onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) {
 	char resName[20];
 	Common::SeekableReadStream *data;
 

Modified: scummvm/trunk/engines/m4/mads_menus.h
===================================================================
--- scummvm/trunk/engines/m4/mads_menus.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/mads_menus.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -52,7 +52,7 @@
 	RexMainMenuView(M4Engine *vm);
 	~RexMainMenuView();
 
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 	void updateState();
 };
 
@@ -74,7 +74,7 @@
 	DragonMainMenuView(M4Engine *vm);
 	~DragonMainMenuView();
 
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 	void updateState();
 };
 
@@ -82,7 +82,7 @@
 public:
 	MadsMainMenuView(M4Engine *vm);
 
-	bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents);
+	bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents);
 	void updateState();
 };
 

Modified: scummvm/trunk/engines/m4/viewmgr.h
===================================================================
--- scummvm/trunk/engines/m4/viewmgr.h	2009-12-19 23:33:48 UTC (rev 46423)
+++ scummvm/trunk/engines/m4/viewmgr.h	2009-12-20 07:09:40 UTC (rev 46424)
@@ -135,7 +135,7 @@
 	HotkeyList &hotkeys() { return _hotkeys; }
 
 	virtual void onRefresh(RectList *rects, M4Surface *destSurface);
-	virtual bool onEvent(M4EventType eventType, int param, int x, int y, bool &captureEvents) { return false; }
+	virtual bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) { return false; }
 	virtual void updateState() {};
 
 protected:


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