aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/kevent.cpp')
-rw-r--r--engines/sci/engine/kevent.cpp167
1 files changed, 93 insertions, 74 deletions
diff --git a/engines/sci/engine/kevent.cpp b/engines/sci/engine/kevent.cpp
index 3b6df771e7..f559fb4184 100644
--- a/engines/sci/engine/kevent.cpp
+++ b/engines/sci/engine/kevent.cpp
@@ -32,14 +32,13 @@ int stop_on_event;
#define SCI_VARIABLE_GAME_SPEED 3
reg_t
-kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv) {
int mask = UKPV(0);
reg_t obj = argv[1];
sci_event_t e;
int oldx, oldy;
- int modifier_mask = SCI_VERSION_MAJOR(s->version)==0 ? SCI_EVM_ALL
- : SCI_EVM_NO_FOOLOCK;
+ int modifier_mask = SCI_VERSION_MAJOR(s->version) == 0 ? SCI_EVM_ALL
+ : SCI_EVM_NO_FOOLOCK;
if (s->kernel_opt_flags & KERNEL_OPT_FLAG_GOT_2NDEVENT) {
/* Penalty time- too many requests to this function without
@@ -48,7 +47,7 @@ kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv)
gfxop_usleep(s->gfx_state, (1000000 * delay) / 60);
}
-
+
/*If there's a simkey pending, and the game wants a keyboard event, use the
*simkey instead of a normal event*/
if (_kdebug_cheap_event_hack && (mask & SCI_EVT_KEYBOARD)) {
@@ -60,7 +59,7 @@ kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv)
_kdebug_cheap_event_hack = 0;
return make_reg(0, 1);
}
-
+
oldx = s->gfx_state->pointer_pos.x;
oldy = s->gfx_state->pointer_pos.y;
e = gfxop_get_event(s->gfx_state, mask);
@@ -75,7 +74,7 @@ kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv)
if (e.type)
s->kernel_opt_flags &= ~(KERNEL_OPT_FLAG_GOT_EVENT
- | KERNEL_OPT_FLAG_GOT_2NDEVENT);
+ | KERNEL_OPT_FLAG_GOT_2NDEVENT);
else {
if (s->kernel_opt_flags & KERNEL_OPT_FLAG_GOT_EVENT)
s->kernel_opt_flags |= KERNEL_OPT_FLAG_GOT_2NDEVENT;
@@ -83,95 +82,118 @@ kGetEvent(state_t *s, int funct_nr, int argc, reg_t *argv)
s->kernel_opt_flags |= KERNEL_OPT_FLAG_GOT_EVENT;
}
- switch(e.type)
- {
- case SCI_EVT_QUIT:
- quit_vm();
- break;
+ switch (e.type) {
+ case SCI_EVT_QUIT:
+ quit_vm();
+ break;
- case SCI_EVT_KEYBOARD: {
+ case SCI_EVT_KEYBOARD: {
- if ((e.buckybits & SCI_EVM_LSHIFT) && (e.buckybits & SCI_EVM_RSHIFT)
- && (e.data == '-')) {
+ if ((e.buckybits & SCI_EVM_LSHIFT) && (e.buckybits & SCI_EVM_RSHIFT)
+ && (e.data == '-')) {
- sciprintf("Debug mode activated\n");
+ sciprintf("Debug mode activated\n");
- script_debug_flag = 1; /* Enter debug mode */
- _debug_seeking = _debug_step_running = 0;
- s->onscreen_console = 0;
+ script_debug_flag = 1; /* Enter debug mode */
+ _debug_seeking = _debug_step_running = 0;
+ s->onscreen_console = 0;
- } else if ((e.buckybits & SCI_EVM_CTRL) && (e.data == '`')) {
+ } else if ((e.buckybits & SCI_EVM_CTRL) && (e.data == '`')) {
- script_debug_flag = 1; /* Enter debug mode */
- _debug_seeking = _debug_step_running = 0;
- s->onscreen_console = 1;
+ script_debug_flag = 1; /* Enter debug mode */
+ _debug_seeking = _debug_step_running = 0;
+ s->onscreen_console = 1;
- } else if ((e.buckybits & SCI_EVM_CTRL) && (e.data == '1')) {
+ } else if ((e.buckybits & SCI_EVM_CTRL) && (e.data == '1')) {
- if (s->visual)
- s->visual->print(GFXW(s->visual), 0);
+ if (s->visual)
+ s->visual->print(GFXW(s->visual), 0);
- } else {
- PUT_SEL32V(obj, type, SCI_EVT_KEYBOARD); /*Keyboard event*/
- s->r_acc=make_reg(0, 1);
- PUT_SEL32V(obj, message, e.character);
- /* We only care about the translated
- ** character */
- PUT_SEL32V(obj, modifiers, e.buckybits&modifier_mask);
+ } else {
+ PUT_SEL32V(obj, type, SCI_EVT_KEYBOARD); /*Keyboard event*/
+ s->r_acc = make_reg(0, 1);
+ PUT_SEL32V(obj, message, e.character);
+ /* We only care about the translated
+ ** character */
+ PUT_SEL32V(obj, modifiers, e.buckybits&modifier_mask);
+ }
+ }
+ break;
+
+ case SCI_EVT_MOUSE_RELEASE:
+ case SCI_EVT_MOUSE_PRESS: {
+ int extra_bits = 0;
+
+ if (mask & e.type) {
+ switch (e.data) {
+ case 2:
+ extra_bits = SCI_EVM_LSHIFT | SCI_EVM_RSHIFT;
+ break;
+ case 3:
+ extra_bits = SCI_EVM_CTRL;
+ default:
+ break;
}
- } break;
-
- case SCI_EVT_MOUSE_RELEASE:
- case SCI_EVT_MOUSE_PRESS: {
- int extra_bits=0;
-
- if(mask & e.type) {
- switch(e.data) {
- case 2: extra_bits=SCI_EVM_LSHIFT|SCI_EVM_RSHIFT; break;
- case 3: extra_bits=SCI_EVM_CTRL;
- default:break;
- }
-
- PUT_SEL32V(obj, type, e.type);
- PUT_SEL32V(obj, message, 1);
- PUT_SEL32V(obj, modifiers, (e.buckybits|extra_bits)&modifier_mask);
- s->r_acc = make_reg(0, 1);
- }
- } break;
- default: {
- s->r_acc = NULL_REG; /* Unknown or no event */
- }
+ PUT_SEL32V(obj, type, e.type);
+ PUT_SEL32V(obj, message, 1);
+ PUT_SEL32V(obj, modifiers, (e.buckybits | extra_bits)&modifier_mask);
+ s->r_acc = make_reg(0, 1);
}
+ }
+ break;
+
+ default: {
+ s->r_acc = NULL_REG; /* Unknown or no event */
+ }
+ }
if ((s->r_acc.offset) && (stop_on_event)) {
stop_on_event = 0;
script_debug_flag = 1;
- }
+ }
return s->r_acc;
}
reg_t
-kMapKeyToDir(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kMapKeyToDir(state_t *s, int funct_nr, int argc, reg_t *argv) {
reg_t obj = argv[0];
if (GET_SEL32V(obj, type) == SCI_EVT_KEYBOARD) { /* Keyboard */
int mover = -1;
switch (GET_SEL32V(obj, message)) {
- case SCI_K_HOME: mover = 8; break;
- case SCI_K_UP: mover = 1; break;
- case SCI_K_PGUP: mover = 2; break;
- case SCI_K_LEFT: mover = 7; break;
+ case SCI_K_HOME:
+ mover = 8;
+ break;
+ case SCI_K_UP:
+ mover = 1;
+ break;
+ case SCI_K_PGUP:
+ mover = 2;
+ break;
+ case SCI_K_LEFT:
+ mover = 7;
+ break;
case SCI_K_CENTER:
- case 76: mover = 0; break;
- case SCI_K_RIGHT: mover = 3; break;
- case SCI_K_END: mover = 6; break;
- case SCI_K_DOWN: mover = 5; break;
- case SCI_K_PGDOWN: mover = 4; break;
- default: break;
+ case 76:
+ mover = 0;
+ break;
+ case SCI_K_RIGHT:
+ mover = 3;
+ break;
+ case SCI_K_END:
+ mover = 6;
+ break;
+ case SCI_K_DOWN:
+ mover = 5;
+ break;
+ case SCI_K_PGDOWN:
+ mover = 4;
+ break;
+ default:
+ break;
}
if (mover >= 0) {
@@ -186,8 +208,7 @@ kMapKeyToDir(state_t *s, int funct_nr, int argc, reg_t *argv)
reg_t
-kGlobalToLocal(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kGlobalToLocal(state_t *s, int funct_nr, int argc, reg_t *argv) {
reg_t obj = argc ? argv[0] : NULL_REG; /* Can this really happen? Lars */
if (obj.segment) {
@@ -204,8 +225,7 @@ kGlobalToLocal(state_t *s, int funct_nr, int argc, reg_t *argv)
reg_t
-kLocalToGlobal(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kLocalToGlobal(state_t *s, int funct_nr, int argc, reg_t *argv) {
reg_t obj = argc ? argv[0] : NULL_REG; /* Can this really happen? Lars */
if (obj.segment) {
@@ -220,8 +240,7 @@ kLocalToGlobal(state_t *s, int funct_nr, int argc, reg_t *argv)
}
reg_t /* Not implemented */
-kJoystick(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kJoystick(state_t *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkSTUB, "Unimplemented syscall 'Joystick()'\n", funct_nr);
return NULL_REG;
}