{
switch (event->type)
{
- case EVENT_EXPOSE:
- HandleExposeEvent((ExposeEvent *) event);
- break;
-
- case EVENT_UNMAPNOTIFY:
-#if 0
- // This causes the game to stop not only when iconified, but also
- // when on another virtual desktop, which might be not desired.
- SleepWhileUnmapped();
-#endif
- break;
-
- case EVENT_FOCUSIN:
- case EVENT_FOCUSOUT:
- HandleFocusEvent((FocusChangeEvent *) event);
- break;
-
case EVENT_CLIENTMESSAGE:
HandleClientMessageEvent((ClientMessageEvent *) event);
break;
SetTileCursorXY(lx, ly);
}
-void SleepWhileUnmapped(void)
-{
- boolean window_unmapped = TRUE;
-
- KeyboardAutoRepeatOn();
-
- while (window_unmapped)
- {
- Event event;
-
- if (!WaitValidEvent(&event))
- continue;
-
- switch (event.type)
- {
- case EVENT_BUTTONRELEASE:
- button_status = MB_RELEASED;
- break;
-
- case EVENT_KEYRELEASE:
- key_joystick_mapping = 0;
- break;
-
- case SDL_CONTROLLERBUTTONUP:
- HandleJoystickEvent(&event);
- key_joystick_mapping = 0;
- break;
-
- case EVENT_MAPNOTIFY:
- window_unmapped = FALSE;
- break;
-
- case EVENT_UNMAPNOTIFY:
- // this is only to surely prevent the 'should not happen' case
- // of recursively looping between 'SleepWhileUnmapped()' and
- // 'HandleOtherEvents()' which usually calls this funtion.
- break;
-
- default:
- HandleOtherEvents(&event);
- break;
- }
- }
-
- if (game_status == GAME_MODE_PLAYING)
- KeyboardAutoRepeatOffUnlessAutoplay();
-}
-
-void HandleExposeEvent(ExposeEvent *event)
-{
-}
-
void HandleButtonEvent(ButtonEvent *event)
{
#if DEBUG_EVENTS_BUTTON
HandleKey(key, key_status);
}
-void HandleFocusEvent(FocusChangeEvent *event)
-{
- static int old_joystick_status = -1;
-
- if (event->type == EVENT_FOCUSOUT)
- {
- KeyboardAutoRepeatOn();
- old_joystick_status = joystick.status;
- joystick.status = JOYSTICK_NOT_AVAILABLE;
-
- ClearPlayerAction();
- }
- else if (event->type == EVENT_FOCUSIN)
- {
- /* When there are two Rocks'n'Diamonds windows which overlap and
- the player moves the pointer from one game window to the other,
- a 'FocusOut' event is generated for the window the pointer is
- leaving and a 'FocusIn' event is generated for the window the
- pointer is entering. In some cases, it can happen that the
- 'FocusIn' event is handled by the one game process before the
- 'FocusOut' event by the other game process. In this case the
- X11 environment would end up with activated keyboard auto repeat,
- because unfortunately this is a global setting and not (which
- would be far better) set for each X11 window individually.
- The effect would be keyboard auto repeat while playing the game
- (game_status == GAME_MODE_PLAYING), which is not desired.
- To avoid this special case, we just wait 1/10 second before
- processing the 'FocusIn' event. */
-
- if (game_status == GAME_MODE_PLAYING)
- {
- Delay(100);
- KeyboardAutoRepeatOffUnlessAutoplay();
- }
-
- if (old_joystick_status != -1)
- joystick.status = old_joystick_status;
- }
-}
-
void HandleClientMessageEvent(ClientMessageEvent *event)
{
if (CheckCloseWindowEvent(event))
void ClearAutoRepeatKeyEvents(void);
void ClearEventQueue(void);
void ClearPlayerAction(void);
-void SleepWhileUnmapped(void);
-void HandleExposeEvent(ExposeEvent *);
void HandleButtonEvent(ButtonEvent *);
void HandleMotionEvent(MotionEvent *);
void HandleWheelEvent(WheelEvent *);
void HandlePauseResumeEvent(PauseResumeEvent *);
boolean HandleKeysDebug(Key, int);
void HandleKeyEvent(KeyEvent *);
-void HandleFocusEvent(FocusChangeEvent *);
void HandleClientMessageEvent(ClientMessageEvent *);
void HandleDropEvent(Event *);
typedef SDL_Event PauseResumeEvent;
typedef SDL_WindowEvent WindowEvent;
typedef SDL_KeyboardEvent KeyEvent;
-typedef SDL_Event ExposeEvent;
-typedef SDL_Event FocusChangeEvent;
typedef SDL_Event ClientMessageEvent;
#define EVENT_TEXTINPUT SDL_TEXTINPUT
#define EVENT_KEYPRESS SDL_KEYDOWN
#define EVENT_KEYRELEASE SDL_KEYUP
-#define EVENT_EXPOSE SDL_USEREVENT + 0
-#define EVENT_FOCUSIN SDL_USEREVENT + 1
-#define EVENT_FOCUSOUT SDL_USEREVENT + 2
#define EVENT_CLIENTMESSAGE SDL_QUIT
-#define EVENT_MAPNOTIFY SDL_USEREVENT + 4
-#define EVENT_UNMAPNOTIFY SDL_USEREVENT + 5
#define KSYM_UNDEFINED SDLK_UNKNOWN