[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