X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=5f85101eb06ef4b6764c38034d140e0620b771f7;hp=b563a8605e0c54fd28fea397576e9a119613eadf;hb=3367ba5eaec57086e3c1013708967e8a995ef2e3;hpb=19e3dfa321d39a822bda8fa489fb76f25f9f9165 diff --git a/src/events.c b/src/events.c index b563a860..5f85101e 100644 --- a/src/events.c +++ b/src/events.c @@ -13,6 +13,7 @@ ***********************************************************/ #include "events.h" +#include "init.h" #include "screens.h" #include "tools.h" #include "game.h" @@ -54,6 +55,9 @@ void EventLoop(void) case FocusOut: HandleFocusEvent((XFocusChangeEvent *) &event); break; + case ClientMessage: + HandleClientMessageEvent((XClientMessageEvent *) &event); + break; default: break; } @@ -97,6 +101,9 @@ void ClearEventQueue() case FocusOut: HandleFocusEvent((XFocusChangeEvent *) &event); break; + case ClientMessage: + HandleClientMessageEvent((XClientMessageEvent *) &event); + break; default: break; } @@ -129,6 +136,9 @@ void SleepWhileUnmapped() case MapNotify: window_unmapped = FALSE; break; + case ClientMessage: + HandleClientMessageEvent((XClientMessageEvent *) &event); + break; default: break; } @@ -218,6 +228,13 @@ void HandleFocusEvent(XFocusChangeEvent *event) } } +void HandleClientMessageEvent(XClientMessageEvent *event) +{ + if ((event->window == window) && + (event->data.l[0] == XInternAtom(display, "WM_DELETE_WINDOW", FALSE))) + CloseAll(); +} + void HandleButton(int mx, int my, int button) { static int old_mx = 0, old_my = 0; @@ -284,7 +301,9 @@ void HandleKey(KeySym key, int key_status) case XK_KP_Left: #endif case XK_KP_4: +#ifndef MSDOS case XK_J: +#endif case XK_j: joy |= JOY_LEFT; break; @@ -293,7 +312,9 @@ void HandleKey(KeySym key, int key_status) case XK_KP_Right: #endif case XK_KP_6: +#ifndef MSDOS case XK_K: +#endif case XK_k: joy |= JOY_RIGHT; break; @@ -302,7 +323,9 @@ void HandleKey(KeySym key, int key_status) case XK_KP_Up: #endif case XK_KP_8: +#ifndef MSDOS case XK_I: +#endif case XK_i: joy |= JOY_UP; break; @@ -311,7 +334,9 @@ void HandleKey(KeySym key, int key_status) case XK_KP_Down: #endif case XK_KP_2: +#ifndef MSDOS case XK_M: +#endif case XK_m: joy |= JOY_DOWN; break; @@ -339,35 +364,47 @@ void HandleKey(KeySym key, int key_status) case XK_KP_3: joy |= JOY_DOWN | JOY_RIGHT; break; +#ifndef MSDOS case XK_S: /* Feld entfernen */ +#endif case XK_s: joy |= JOY_BUTTON_1 | JOY_LEFT; break; +#ifndef MSDOS case XK_D: +#endif case XK_d: joy |= JOY_BUTTON_1 | JOY_RIGHT; break; +#ifndef MSDOS case XK_E: +#endif case XK_e: joy |= JOY_BUTTON_1 | JOY_UP; break; +#ifndef MSDOS case XK_X: +#endif case XK_x: joy |= JOY_BUTTON_1 | JOY_DOWN; break; case XK_Shift_L: /* Linker Feuerknopf */ +#ifndef MSDOS case XK_Control_L: case XK_Alt_L: case XK_Meta_L: +#endif joy |= JOY_BUTTON_1; break; case XK_Shift_R: /* Rechter Feuerknopf */ +#ifndef MSDOS case XK_Control_R: case XK_Alt_R: case XK_Meta_R: case XK_Mode_switch: case XK_Multi_key: case XK_B: /* (Bombe legen) */ +#endif case XK_b: joy |= JOY_BUTTON_2; break; @@ -468,12 +505,6 @@ void HandleKey(KeySym key, int key_status) case XK_7: case XK_8: case XK_9: - /* - MoveSpeed = key - XK_0; - printf("speed == %d\n", MoveSpeed); - break; - */ - if (key == XK_0) GameSpeed = 50; else @@ -482,30 +513,33 @@ void HandleKey(KeySym key, int key_status) break; case XK_a: - if (ScrollSteps == TILEX/4) - ScrollSteps = TILEX/8; + if (ScrollStepSize == TILEX/8) + ScrollStepSize = TILEX/4; else - ScrollSteps = TILEX/4; + ScrollStepSize = TILEX/8; + printf("ScrollStepSize == %d\n", ScrollStepSize); break; case XK_f: - GameSpeed = 2; - printf("GameSpeed == %d\n", GameSpeed); + ScrollStepSize = TILEX/8; + printf("ScrollStepSize == %d (1/8)\n", ScrollStepSize); break; case XK_g: - GameSpeed = 3; - printf("GameSpeed == %d\n", GameSpeed); + ScrollStepSize = TILEX/4; + printf("ScrollStepSize == %d (1/4)\n", ScrollStepSize); break; case XK_h: - GameSpeed = 4; - printf("GameSpeed == %d\n", GameSpeed); + ScrollStepSize = TILEX/2; + printf("ScrollStepSize == %d (1/2)\n", ScrollStepSize); break; case XK_l: - GameSpeed = 50; - printf("GameSpeed == %d\n", GameSpeed); + ScrollStepSize = TILEX; + printf("ScrollStepSize == %d (1/1)\n", ScrollStepSize); break; +#ifndef MSDOS case XK_Q: +#endif case XK_q: Dynamite = 1000; break;