aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2006-10-07 12:33:22 +0000
committerMax Horn2006-10-07 12:33:22 +0000
commitc3fb1fbcd44afbc7b66d6973d194246e0ff7352e (patch)
treef0daf751eed85d3da5da5e230e3d84e0c73fef8a
parentf13e4baaf987cb65045c3ffeb01fb9d5e530e1da (diff)
downloadscummvm-rg350-c3fb1fbcd44afbc7b66d6973d194246e0ff7352e.tar.gz
scummvm-rg350-c3fb1fbcd44afbc7b66d6973d194246e0ff7352e.tar.bz2
scummvm-rg350-c3fb1fbcd44afbc7b66d6973d194246e0ff7352e.zip
Moved SCUMM keyboard handling code from processInput() to the new (sub)method processKeyboard
svn-id: r24165
-rw-r--r--engines/scumm/input.cpp18
-rw-r--r--engines/scumm/intern.h4
-rw-r--r--engines/scumm/scumm.cpp4
-rw-r--r--engines/scumm/scumm.h2
4 files changed, 22 insertions, 6 deletions
diff --git a/engines/scumm/input.cpp b/engines/scumm/input.cpp
index 92be3070b5..a25a23ebfe 100644
--- a/engines/scumm/input.cpp
+++ b/engines/scumm/input.cpp
@@ -219,8 +219,6 @@ void ScummEngine::clearClickedStatus() {
}
void ScummEngine::processInput(bool smushMode) {
- int saveloadkey;
-
_lastKeyHit = _keyPressed;
_keyPressed = 0;
if (((_game.version <= 2) || (_game.platform == Common::kPlatformFMTowns && _game.version == 3)) && 315 <= _lastKeyHit && _lastKeyHit < 315+12) {
@@ -317,7 +315,11 @@ void ScummEngine::processInput(bool smushMode) {
if (!_lastKeyHit)
return;
+
+ processKeyboard(smushMode);
+}
+void ScummEngine_v8::processKeyboard(bool smushMode) {
// If a key script was specified (a V8 feature), and it's trigger
// key was pressed, run it.
if (_keyScriptNo && (_keyScriptKey == _lastKeyHit)) {
@@ -325,7 +327,13 @@ void ScummEngine::processInput(bool smushMode) {
return;
}
- if (_game.version >= 6 && _lastKeyHit == 20) {
+ ScummEngine_v6::processKeyboard(smushMode);
+}
+
+void ScummEngine_v6::processKeyboard(bool smushMode) {
+ if (_lastKeyHit == 20) {
+ // FIXME: What key is '20' supposed to indicate? I can't trigger
+ // it with my keyboard, it seems...
char buf[256];
_voiceMode++;
@@ -357,6 +365,10 @@ void ScummEngine::processInput(bool smushMode) {
runDialog(dialog);
return;
}
+}
+
+void ScummEngine::processKeyboard(bool smushMode) {
+ int saveloadkey;
if (VAR_RESTART_KEY != 0xFF && _lastKeyHit == VAR(VAR_RESTART_KEY) ||
(((_game.version <= 2) || (_game.platform == Common::kPlatformFMTowns && _game.version == 3)) && _lastKeyHit == 8)) {
diff --git a/engines/scumm/intern.h b/engines/scumm/intern.h
index c3989f6938..c899847324 100644
--- a/engines/scumm/intern.h
+++ b/engines/scumm/intern.h
@@ -584,6 +584,7 @@ protected:
virtual const char *getOpcodeDesc(byte i);
virtual void scummLoop_handleActors();
+ virtual void processKeyboard(bool smushMode);
virtual void setupScummVars();
virtual void decodeParseString(int a, int b);
@@ -896,6 +897,8 @@ protected:
int _objectIDMapSize;
ObjectNameId *_objectIDMap;
+ int _keyScriptKey, _keyScriptNo;
+
public:
ScummEngine_v8(OSystem *syst, const DetectorResult &dr);
~ScummEngine_v8();
@@ -921,6 +924,7 @@ protected:
virtual int getObjectIdFromOBIM(const byte *obim);
+ virtual void processKeyboard(bool smushMode);
void desaturatePalette(int hueScale, int satScale, int lightScale, int startColor, int endColor);
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 931ef7aa52..755a4358ab 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -333,8 +333,6 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)
_resultVarNumber = 0;
_scummStackPos = 0;
memset(_vmStack, 0, sizeof(_vmStack));
- _keyScriptKey = 0;
- _keyScriptNo = 0;
_fileOffset = 0;
memset(_resourceMapper, 0, sizeof(_resourceMapper));
_lastLoadedRoom = 0;
@@ -942,6 +940,8 @@ ScummEngine_v7::~ScummEngine_v7() {
ScummEngine_v8::ScummEngine_v8(OSystem *syst, const DetectorResult &dr)
: ScummEngine_v7(syst, dr) {
_objectIDMap = 0;
+ _keyScriptKey = 0;
+ _keyScriptNo = 0;
VAR_LANGUAGE = 0xFF;
}
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index f9d5b693e0..c6088d7237 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -498,6 +498,7 @@ public:
protected:
void waitForTimer(int msec_delay);
virtual void processInput(bool smushMode);
+ virtual void processKeyboard(bool smushMode);
virtual void clearClickedStatus();
// Cursor/palette
@@ -681,7 +682,6 @@ protected:
const byte * const *_lastCodePtr;
int _resultVarNumber, _scummStackPos;
int _vmStack[150];
- int _keyScriptKey, _keyScriptNo;
virtual void setupOpcodes() = 0;
virtual void executeOpcode(byte i) = 0;