[Scummvm-git-logs] scummvm master -> 0ea87e19c64f665ce537c1a3776e1bd94c2d048a

sev- sev at scummvm.org
Sat Jul 11 09:02:19 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
0ea87e19c6 DIRECTOR: LINGO: Implement command/shift/alt/optonDown


Commit: 0ea87e19c64f665ce537c1a3776e1bd94c2d048a
    https://github.com/scummvm/scummvm/commit/0ea87e19c64f665ce537c1a3776e1bd94c2d048a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-11T11:01:47+02:00

Commit Message:
DIRECTOR: LINGO: Implement command/shift/alt/optonDown

Changed paths:
    engines/director/director.cpp
    engines/director/director.h
    engines/director/events.cpp
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index ab7037a592..6a2f51ea1c 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -103,6 +103,7 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
 	_colorDepth = 8;	// 256-color
 	_key = 0;
 	_keyCode = 0;
+	_keyFlags = 0;
 	_machineType = 9; // Macintosh IIci
 	_playbackPaused = false;
 	_skipFrameAdvance = false;
@@ -137,7 +138,7 @@ Common::Error DirectorEngine::run() {
 	_wm = new Graphics::MacWindowManager(wmMode, &_director3QuickDrawPatterns);
 	_wm->setEngine(this);
 
-	
+
 	_mainStage = new Stage(_wm->getNextId(), false, false, false, _wm, this);
 	*_mainStage->_refCount += 1;
 
@@ -192,7 +193,7 @@ Common::Error DirectorEngine::run() {
 			for (uint i = 0; i < windowList->size(); i++) {
 				if ((*windowList)[i].type != OBJECT || (*windowList)[i].u.obj->getObjType() != kWindowObj)
 					continue;
-				
+
 				_currentStage = static_cast<Stage *>((*windowList)[i].u.obj);
 				_currentStage->step();
 			}
diff --git a/engines/director/director.h b/engines/director/director.h
index a27a846202..e0d4035838 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -199,6 +199,7 @@ public:
 	int _colorDepth;
 	unsigned char _key;
 	int _keyCode;
+	byte _keyFlags;
 	Common::HashMap<int, int> _macKeyCodes;
 	int _machineType;
 	bool _playbackPaused;
diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index e0bb727011..716996be06 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -152,6 +152,7 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 			case Common::EVENT_KEYDOWN:
 				_keyCode = _macKeyCodes.contains(event.kbd.keycode) ? _macKeyCodes[event.kbd.keycode] : 0;
 				_key = (unsigned char)(event.kbd.ascii & 0xff);
+				_keyFlags = event.kbd.flags;
 
 				debugC(1, kDebugEvents, "processEvents(): keycode: %d", _keyCode);
 
@@ -160,6 +161,10 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 				_lingo->registerEvent(kEventKeyDown);
 				break;
 
+			case Common::EVENT_KEYUP:
+				_keyFlags = event.kbd.flags;
+				break;
+
 			default:
 				break;
 			}
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 83b7d0b288..38179ce724 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -396,10 +396,12 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.u.i = 1;
 		break;
 	case kTheCommandDown:
-		getTheEntitySTUB(kTheCommandDown);
+		d.type = INT;
+		d.u.i = (g_director->_keyFlags & Common::KBD_META) ? 1 : 0;
 		break;
 	case kTheControlDown:
-		getTheEntitySTUB(kTheControlDown);
+		d.type = INT;
+		d.u.i = (g_director->_keyFlags & Common::KBD_CTRL) ? 1 : 0;
 		break;
 	case kTheDate:
 		d = getTheDate(field);
@@ -626,7 +628,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.u.i = 1;
 		break;
 	case kTheOptionDown:
-		getTheEntitySTUB(kTheOptionDown);
+		d.type = INT;
+		d.u.i = (g_director->_keyFlags & Common::KBD_ALT) ? 1 : 0;
 		break;
 	case kThePauseState:
 		getTheEntitySTUB(kThePauseState);
@@ -680,7 +683,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		getTheEntitySTUB(kTheSelStart);
 		break;
 	case kTheShiftDown:
-		getTheEntitySTUB(kTheShiftDown);
+		d.type = INT;
+		d.u.i = (g_director->_keyFlags & Common::KBD_SHIFT) ? 1 : 0;
 		break;
 	case kTheSoundEnabled:
 		getTheEntitySTUB(kTheSoundEnabled);




More information about the Scummvm-git-logs mailing list