projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added option 'off' for touch controls (for non-Android platforms)
[rocksndiamonds.git]
/
src
/
events.c
diff --git
a/src/events.c
b/src/events.c
index b30159555f124225f1526a46778befe0bf8c6a47..c7707c2f6f9fcc7c3904003cac863a518fd66243 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-39,6
+39,12
@@
static int cursor_mode_last = CURSOR_DEFAULT;
static unsigned int special_cursor_delay = 0;
static unsigned int special_cursor_delay_value = 1000;
static unsigned int special_cursor_delay = 0;
static unsigned int special_cursor_delay_value = 1000;
+
+/* forward declarations for internal use */
+static void HandleNoEvent(void);
+static void HandleEventActions(void);
+
+
/* event filter especially needed for SDL event filtering due to
delay problems with lots of mouse motion events when mouse button
not pressed (X11 can handle this with 'PointerMotionHintMask') */
/* event filter especially needed for SDL event filtering due to
delay problems with lots of mouse motion events when mouse button
not pressed (X11 can handle this with 'PointerMotionHintMask') */
@@
-318,10
+324,10
@@
void EventLoop(void)
if (PendingEvent())
HandleEvents();
else
if (PendingEvent())
HandleEvents();
else
- Handle
MouseCursor
();
+ Handle
NoEvent
();
- /*
also execute after pending events have been processed before
*/
- Handle
NoEvent
();
+ /*
execute event related actions after pending events have been processed
*/
+ Handle
EventActions
();
/* don't use all CPU time when idle; the main loop while playing
has its own synchronization and is CPU friendly, too */
/* don't use all CPU time when idle; the main loop while playing
has its own synchronization and is CPU friendly, too */
@@
-403,6
+409,13
@@
void SetPlayerMouseAction(int mx, int my, int button)
local_player->mouse_action.lx = lx;
local_player->mouse_action.ly = ly;
local_player->mouse_action.button = button;
local_player->mouse_action.lx = lx;
local_player->mouse_action.ly = ly;
local_player->mouse_action.button = button;
+
+ if (tape.recording && tape.pausing && tape.use_mouse)
+ {
+ /* prevent button release or motion events from un-pausing a paused game */
+ if (button && !motion_status)
+ TapeTogglePause(TAPE_TOGGLE_MANUAL);
+ }
}
void SleepWhileUnmapped()
}
void SleepWhileUnmapped()
@@
-663,7
+676,7
@@
void HandleFingerEvent(FingerEvent *event)
if (game_status != GAME_MODE_PLAYING)
return;
if (game_status != GAME_MODE_PLAYING)
return;
- if (strEqual(setup.touch.control_type, TOUCH_CONTROL_
FOLLOW_FINGER
))
+ if (strEqual(setup.touch.control_type, TOUCH_CONTROL_
OFF
))
return;
if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS))
return;
if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS))
@@
-811,6
+824,9
@@
void HandleFingerEvent(FingerEvent *event)
return;
}
return;
}
+ if (!strEqual(setup.touch.control_type, TOUCH_CONTROL_WIPE_GESTURES))
+ return;
+
// use touch direction control
if (event->type == EVENT_FINGERPRESS)
// use touch direction control
if (event->type == EVENT_FINGERPRESS)
@@
-1647,7
+1663,7
@@
void HandleKey(Key key, int key_status)
has_snapped[pnr] = FALSE;
}
}
has_snapped[pnr] = FALSE;
}
}
- else if (tape.recording && tape.pausing)
+ else if (tape.recording && tape.pausing
&& !tape.use_mouse
)
{
/* prevent key release events from un-pausing a paused game */
if (key_status == KEY_PRESSED && key_action & KEY_ACTION)
{
/* prevent key release events from un-pausing a paused game */
if (key_status == KEY_PRESSED && key_action & KEY_ACTION)
@@
-1916,6
+1932,20
@@
void HandleKey(Key key, int key_status)
}
void HandleNoEvent()
}
void HandleNoEvent()
+{
+ HandleMouseCursor();
+
+ switch (game_status)
+ {
+#if defined(TARGET_SDL2)
+ case GAME_MODE_PLAYING:
+ HandleFollowFinger(-1, -1, -1);
+ break;
+#endif
+ }
+}
+
+void HandleEventActions()
{
// if (button_status && game_status != GAME_MODE_PLAYING)
if (button_status && (game_status != GAME_MODE_PLAYING ||
{
// if (button_status && game_status != GAME_MODE_PLAYING)
if (button_status && (game_status != GAME_MODE_PLAYING ||
@@
-1944,12
+1974,6
@@
void HandleNoEvent()
HandleLevelEditorIdle();
break;
HandleLevelEditorIdle();
break;
-#if defined(TARGET_SDL2)
- case GAME_MODE_PLAYING:
- HandleFollowFinger(-1, -1, -1);
- break;
-#endif
-
default:
break;
}
default:
break;
}