aboutsummaryrefslogtreecommitdiff
path: root/saga/interface.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-06-19 14:06:20 +0000
committerAndrew Kurushin2005-06-19 14:06:20 +0000
commit97337c46238d3e6ebd2a792d03bd6990c5775d03 (patch)
tree2456acf6d42e11f464f18c4871c25762e6a9e081 /saga/interface.cpp
parent04eba089f6af536b311c51753700a65d09fc9fb7 (diff)
downloadscummvm-rg350-97337c46238d3e6ebd2a792d03bd6990c5775d03.tar.gz
scummvm-rg350-97337c46238d3e6ebd2a792d03bd6990c5775d03.tar.bz2
scummvm-rg350-97337c46238d3e6ebd2a792d03bd6990c5775d03.zip
implemented sfGetNumber
now use MagicHat (be carefull not to exceed overall scene number) svn-id: r18410
Diffstat (limited to 'saga/interface.cpp')
-rw-r--r--saga/interface.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/saga/interface.cpp b/saga/interface.cpp
index edd2e4ef51..c00b5b2cd1 100644
--- a/saga/interface.cpp
+++ b/saga/interface.cpp
@@ -207,6 +207,8 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
_textInputRepeatPhase = 0;
_textInput = false;
+ _statusTextInput = false;
+ _statusTextInputState = kStatusTextInputFirstRun;
_initialized = true;
}
@@ -315,6 +317,10 @@ void Interface::setMode(int mode) {
bool Interface::processAscii(uint16 ascii) {
int i;
PanelButton *panelButton;
+ if (_statusTextInput) {
+ processStatusTextInput(ascii);
+ return true;
+ }
switch (_panelMode) {
case kPanelNull:
if (ascii == 27) {// Esc
@@ -344,6 +350,7 @@ bool Interface::processAscii(uint16 ascii) {
case kPanelSave:
if (_textInput) {
processTextInput(ascii);
+ return true;
} else {
if (ascii == 27) {// Esc
ascii = 'c'; //cancel
@@ -810,6 +817,41 @@ void Interface::setLoad(PanelButton *panelButton) {
}
}
+void Interface::processStatusTextInput(uint16 ascii) {
+
+ textInputStartRepeat(ascii);
+ switch (ascii) {
+ case(27): // esc
+ _statusTextInputState = kStatusTextInputAborted;
+ _statusTextInput = false;
+ _vm->_script->wakeUpThreads(kWaitTypeStatusTextInput);
+ break;
+ case(13): // return
+ _statusTextInputState = kStatusTextInputEntered;
+ _statusTextInput = false;
+ _vm->_script->wakeUpThreads(kWaitTypeStatusTextInput);
+ break;
+ case(8): // backspace
+ if (_statusTextInputPos == 0) {
+ break;
+ }
+ _statusTextInputPos--;
+ _statusTextInputString[_statusTextInputPos] = 0;
+ default:
+ if (_statusTextInputPos >= STATUS_TEXT_INPUT_MAX) {
+ break;
+ }
+ if (((ascii >= 'a') && (ascii <='z')) ||
+ ((ascii >= '0') && (ascii <='9')) ||
+ ((ascii >= 'A') && (ascii <='Z')) ||
+ (ascii == ' ')) {
+ _statusTextInputString[_statusTextInputPos++] = ascii;
+ _statusTextInputString[_statusTextInputPos] = 0;
+ }
+ }
+ setStatusText(_statusTextInputString);
+}
+
void Interface::processTextInput(uint16 ascii) {
char ch[2];
char tempString[SAVE_TITLE_SIZE];
@@ -1131,6 +1173,10 @@ void Interface::update(const Point& mousePoint, int updateFlag) {
return;
}
+ if (_statusTextInput) {
+ return;
+ }
+
if (_panelMode == kPanelMain) {
if (updateFlag & UPDATE_MOUSEMOVE) {
bool lastWasPlayfield = _lastMousePoint.y < _vm->getSceneHeight();