diff options
author | Torbjörn Andersson | 2005-01-06 16:07:46 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2005-01-06 16:07:46 +0000 |
commit | cfe84492adc3ef69154c59d0a94c093bbb9a6609 (patch) | |
tree | de9099a129f066238479a50c249419cda9cdaec9 /saga/events.cpp | |
parent | f974b48a41469aa3a86a1ed1ccb00d9a58656cc0 (diff) | |
download | scummvm-rg350-cfe84492adc3ef69154c59d0a94c093bbb9a6609.tar.gz scummvm-rg350-cfe84492adc3ef69154c59d0a94c093bbb9a6609.tar.bz2 scummvm-rg350-cfe84492adc3ef69154c59d0a94c093bbb9a6609.zip |
Placard functions are now event-driven, so the blocking palette faders are
no longer needed.
svn-id: r16450
Diffstat (limited to 'saga/events.cpp')
-rw-r--r-- | saga/events.cpp | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/saga/events.cpp b/saga/events.cpp index f0f2e63e92..3babfcbc8c 100644 --- a/saga/events.cpp +++ b/saga/events.cpp @@ -259,6 +259,7 @@ int Events::handleImmediate(EVENT *event) { int Events::handleOneShot(EVENT *event) { SURFACE *back_buf; SCRIPT_THREAD *sthread; + Rect rect; static SCENE_BGINFO bginfo; @@ -372,29 +373,48 @@ int Events::handleOneShot(EVENT *event) { case EVENT_ACTIVATE: _vm->_interface->activate(); break; + case EVENT_DEACTIVATE: + _vm->_interface->deactivate(); + break; + case EVENT_SET_STATUS: + _vm->_interface->setStatusText((const char*)event->data); + _vm->_interface->drawStatusBar(_vm->_gfx->getBackBuffer()); + break; + case EVENT_CLEAR_STATUS: + _vm->_interface->setStatusText(""); + _vm->_interface->drawStatusBar(_vm->_gfx->getBackBuffer()); + break; default: break; } break; case SCRIPT_EVENT: - debug(0, "Starting start script #%d", event->param); + switch (event->op) { + case EVENT_EXEC_BLOCKING: + case EVENT_EXEC_NONBLOCKING: + debug(0, "Starting start script #%d", event->param); - sthread = _vm->_script->SThreadCreate(); - if (sthread == NULL) { - _vm->_console->DebugPrintf("Thread creation failed.\n"); - break; - } + sthread = _vm->_script->SThreadCreate(); + if (sthread == NULL) { + _vm->_console->DebugPrintf("Thread creation failed.\n"); + break; + } - sthread->threadVars[kVarAction] = TO_LE_16(event->param2); - sthread->threadVars[kVarObject] = TO_LE_16(event->param3); - sthread->threadVars[kVarWithObject] = TO_LE_16(event->param4); - sthread->threadVars[kVarActor] = TO_LE_16(event->param5); + sthread->threadVars[kVarAction] = TO_LE_16(event->param2); + sthread->threadVars[kVarObject] = TO_LE_16(event->param3); + sthread->threadVars[kVarWithObject] = TO_LE_16(event->param4); + sthread->threadVars[kVarActor] = TO_LE_16(event->param5); - _vm->_script->SThreadExecute(sthread, event->param); + _vm->_script->SThreadExecute(sthread, event->param); - if (event->op == EVENT_BLOCKING) - _vm->_script->SThreadCompleteThread(); + if (event->op == EVENT_EXEC_BLOCKING) + _vm->_script->SThreadCompleteThread(); + break; + case EVENT_THREAD_WAKE: + _vm->_script->wakeUpThreads(event->param); + break; + } break; case CURSOR_EVENT: switch (event->op) { @@ -407,6 +427,25 @@ int Events::handleOneShot(EVENT *event) { default: break; } + break; + case GRAPHICS_EVENT: + switch (event->op) { + case EVENT_FILL_RECT: + rect.top = event->param2; + rect.bottom = event->param3; + rect.left = event->param4; + rect.right = event->param5; + drawRect((SURFACE *)event->data, &rect, event->param); + break; + case EVENT_SETFLAG: + _vm->_render->setFlag(event->param); + break; + case EVENT_CLEARFLAG: + _vm->_render->clearFlag(event->param); + break; + default: + break; + } default: break; } |