aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agi/agi.cpp')
-rw-r--r--engines/agi/agi.cpp72
1 files changed, 33 insertions, 39 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp
index e9c9645768..8218d82a05 100644
--- a/engines/agi/agi.cpp
+++ b/engines/agi/agi.cpp
@@ -46,6 +46,8 @@
#include "agi/keyboard.h"
#include "agi/menu.h"
+#include "gui/predictivedialog.h"
+
namespace Agi {
void AgiEngine::allowSynthetic(bool allow) {
@@ -58,9 +60,25 @@ void AgiEngine::processEvents() {
while (_eventMan->pollEvent(event)) {
switch (event.type) {
- case Common::EVENT_PREDICTIVE_DIALOG:
- if (_predictiveDialogRunning)
- break;
+ case Common::EVENT_PREDICTIVE_DIALOG: {
+ GUI::PredictiveDialog _predictiveDialog;
+ _predictiveDialog.runModal();
+ strcpy(_predictiveResult, _predictiveDialog.getResult());
+ if (strcmp(_predictiveResult, "")) {
+ if (_game.inputMode == INPUT_NORMAL) {
+ strcpy((char *)_game.inputBuffer, _predictiveResult);
+ handleKeys(KEY_ENTER);
+ } else if (_game.inputMode == INPUT_GETSTRING) {
+ strcpy(_game.strings[_stringdata.str], _predictiveResult);
+ newInputMode(INPUT_NORMAL);
+ _gfx->printCharacter(_stringdata.x + strlen(_game.strings[_stringdata.str]) + 1,
+ _stringdata.y, ' ', _game.colorFg, _game.colorBg);
+ } else if (_game.inputMode == INPUT_NONE) {
+ for (int n = 0; _predictiveResult[n]; n++)
+ keyEnqueue(_predictiveResult[n]);
+ }
+ }
+ /*
if (predictiveDialog()) {
if (_game.inputMode == INPUT_NORMAL) {
strcpy((char *)_game.inputBuffer, _predictiveResult);
@@ -75,6 +93,8 @@ void AgiEngine::processEvents() {
keyEnqueue(_predictiveResult[n]);
}
}
+ */
+ }
break;
case Common::EVENT_LBUTTONDOWN:
key = BUTTON_LEFT;
@@ -131,65 +151,46 @@ void AgiEngine::processEvents() {
switch (key = event.kbd.keycode) {
case Common::KEYCODE_LEFT:
case Common::KEYCODE_KP4:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP4)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_LEFT;
break;
case Common::KEYCODE_RIGHT:
case Common::KEYCODE_KP6:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP6)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_RIGHT;
break;
case Common::KEYCODE_UP:
case Common::KEYCODE_KP8:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP8)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_UP;
break;
case Common::KEYCODE_DOWN:
case Common::KEYCODE_KP2:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP2)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_DOWN;
break;
case Common::KEYCODE_PAGEUP:
case Common::KEYCODE_KP9:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP9)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_UP_RIGHT;
break;
case Common::KEYCODE_PAGEDOWN:
case Common::KEYCODE_KP3:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP3)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_DOWN_RIGHT;
break;
case Common::KEYCODE_HOME:
case Common::KEYCODE_KP7:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP7)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_UP_LEFT;
break;
case Common::KEYCODE_END:
case Common::KEYCODE_KP1:
- if (_predictiveDialogRunning && key == Common::KEYCODE_KP1)
- key = event.kbd.ascii;
- else if (_allowSynthetic || !event.synthetic)
+ if (_allowSynthetic || !event.synthetic)
key = KEY_DOWN_LEFT;
break;
case Common::KEYCODE_KP5:
- if (_predictiveDialogRunning)
- key = event.kbd.ascii;
- else
- key = KEY_STATIONARY;
+ key = KEY_STATIONARY;
break;
case Common::KEYCODE_PLUS:
key = '+';
@@ -218,7 +219,7 @@ void AgiEngine::processEvents() {
case Common::KEYCODE_F6:
key = 0x4000;
break;
- case Common::KEYCODE_F7:
+ case Common::KEYCODE_F7:
key = 0x4100;
break;
case Common::KEYCODE_F8:
@@ -575,10 +576,6 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas
_oldMode = INPUT_NONE;
- _predictiveDialogRunning = false;
- _predictiveDictText = NULL;
- _predictiveDictLine = NULL;
- _predictiveDictLineCount = 0;
_firstSlot = 0;
resetControllers();
@@ -684,9 +681,6 @@ AgiEngine::~AgiEngine() {
_gfx->deinitMachine();
delete _gfx;
delete _console;
-
- free(_predictiveDictLine);
- free(_predictiveDictText);
}
Common::Error AgiBase::init() {