diff options
author | Nicola Mettifogo | 2008-07-23 07:31:35 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2008-07-23 07:31:35 +0000 |
commit | 78ccedf8985151c594ef384fda95de295d39bb5c (patch) | |
tree | d4a5391ccb93bdd1f483ce46de0a3efa4eb73308 | |
parent | 8932619ee273967821c3c5fc93ae162f75f7d6c8 (diff) | |
download | scummvm-rg350-78ccedf8985151c594ef384fda95de295d39bb5c.tar.gz scummvm-rg350-78ccedf8985151c594ef384fda95de295d39bb5c.tar.bz2 scummvm-rg350-78ccedf8985151c594ef384fda95de295d39bb5c.zip |
Removed useless event management code and made readInput() more general.
svn-id: r33225
-rw-r--r-- | engines/parallaction/input.cpp | 38 | ||||
-rw-r--r-- | engines/parallaction/input.h | 8 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 11 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 6 |
4 files changed, 26 insertions, 37 deletions
diff --git a/engines/parallaction/input.cpp b/engines/parallaction/input.cpp index 518c165155..4de5ff711b 100644 --- a/engines/parallaction/input.cpp +++ b/engines/parallaction/input.cpp @@ -36,25 +36,23 @@ namespace Parallaction { // loops which could possibly be merged into this one with some effort in changing // caller code, i.e. adding condition checks. // -uint16 Input::readInput() { +void Input::readInput() { Common::Event e; - uint16 KeyDown = 0; _mouseButtons = kMouseNone; - _lastKeyDownAscii = -1; + _hasKeyPressEvent = false; Common::EventManager *eventMan = _vm->_system->getEventManager(); while (eventMan->pollEvent(e)) { switch (e.type) { case Common::EVENT_KEYDOWN: - _lastKeyDownAscii = e.kbd.ascii; + _hasKeyPressEvent = true; + _keyPressed = e.kbd; + if (e.kbd.flags == Common::KBD_CTRL && e.kbd.keycode == 'd') _vm->_debugger->attach(); - if (_vm->getFeatures() & GF_DEMO) break; - if (e.kbd.keycode == Common::KEYCODE_l) KeyDown = kEvLoadGame; - if (e.kbd.keycode == Common::KEYCODE_s) KeyDown = kEvSaveGame; break; case Common::EVENT_LBUTTONDOWN: @@ -83,7 +81,7 @@ uint16 Input::readInput() { case Common::EVENT_QUIT: _engineFlags |= kEngineQuit; - return KeyDown; + return; default: break; @@ -95,13 +93,13 @@ uint16 Input::readInput() { if (_vm->_debugger->isAttached()) _vm->_debugger->onFrame(); - return KeyDown; + return; } bool Input::getLastKeyDown(uint16 &ascii) { - ascii = _lastKeyDownAscii; - return (_lastKeyDownAscii != -1); + ascii = _keyPressed.ascii; + return (_hasKeyPressEvent); } // FIXME: see comment for readInput() @@ -143,7 +141,7 @@ void Input::waitUntilLeftClick() { void Input::updateGameInput() { - int16 keyDown = readInput(); + readInput(); debugC(3, kDebugInput, "translateInput: input flags (%i, %i, %i, %i)", !_mouseHidden, @@ -160,17 +158,13 @@ void Input::updateGameInput() { return; } - if (keyDown == kEvQuitGame) { - _inputData._event = kEvQuitGame; - } else - if (keyDown == kEvSaveGame) { - _inputData._event = kEvSaveGame; - } else - if (keyDown == kEvLoadGame) { - _inputData._event = kEvLoadGame; - } else { + if (_hasKeyPressEvent && (_vm->getFeatures() & GF_DEMO) == 0) { + if (_keyPressed.keycode == Common::KEYCODE_l) _inputData._event = kEvLoadGame; + if (_keyPressed.keycode == Common::KEYCODE_s) _inputData._event = kEvSaveGame; + } + + if (_inputData._event == kEvNone) { _inputData._mousePos = _mousePos; - _inputData._event = kEvNone; translateGameInput(); } diff --git a/engines/parallaction/input.h b/engines/parallaction/input.h index 4d22d7b59b..679417c0e5 100644 --- a/engines/parallaction/input.h +++ b/engines/parallaction/input.h @@ -26,6 +26,8 @@ #ifndef PARALLACTION_INPUT_H #define PARALLACTION_INPUT_H +#include "common/keyboard.h" + #include "parallaction/objects.h" #include "parallaction/inventory.h" @@ -53,6 +55,9 @@ class Input { // input-only InputData _inputData; + bool _hasKeyPressEvent; + Common::KeyState _keyPressed; + bool _hasDelayedAction; // actived when the character needs to move before taking an action ZonePtr _delayedActionZone; @@ -68,7 +73,6 @@ class Input { Common::Point _mousePos; uint16 _mouseButtons; - int32 _lastKeyDownAscii; bool _mouseHidden; ZonePtr _hoverZone; @@ -106,7 +110,7 @@ public: int _inputMode; InventoryItem _activeItem; - uint16 readInput(); + void readInput(); InputData* updateInput(); void trackMouse(ZonePtr z); void waitUntilLeftClick(); diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 20f6129d78..59a97d1dd4 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -297,6 +297,9 @@ void Parallaction::showLocationComment(const char *text, bool end) { void Parallaction::processInput(InputData *data) { + if (!data) { + return; + } switch (data->_event) { case kEvSaveGame: @@ -326,13 +329,7 @@ void Parallaction::runGame() { runCommentFrame(); if (_input->_inputMode == Input::kInputModeGame) { - if (data->_event != kEvNone) { - processInput(data); - } - - if (_engineFlags & kEngineQuit) - return; - + processInput(data); runPendingZones(); if (_engineFlags & kEngineQuit) diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 387fa43c09..d8ab93e257 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -114,12 +114,6 @@ enum EngineFlags { enum { kEvNone = 0, - kEvAction = 3, - kEvOpenInventory = 4, - kEvCloseInventory = 5, - kEvHoverInventory = 6, - kEvWalk = 7, - kEvQuitGame = 1000, kEvSaveGame = 2000, kEvLoadGame = 4000 }; |