projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added showing mouse cursor for levels with mouse click custom elements
[rocksndiamonds.git]
/
src
/
events.c
diff --git
a/src/events.c
b/src/events.c
index 13723bfa514da9ff8f78e499946907ad7d4729bd..4a1ecbfee9df368244a8d26d596c7b677fcce925 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-38,6
+38,7
@@
static boolean cursor_inside_playfield = FALSE;
static int cursor_mode_last = CURSOR_DEFAULT;
static unsigned int special_cursor_delay = 0;
static unsigned int special_cursor_delay_value = 1000;
static int cursor_mode_last = CURSOR_DEFAULT;
static unsigned int special_cursor_delay = 0;
static unsigned int special_cursor_delay_value = 1000;
+static boolean special_cursor_enabled = FALSE;
static boolean stop_processing_events = FALSE;
static boolean stop_processing_events = FALSE;
@@
-48,6
+49,11
@@
static void HandleNoEvent(void);
static void HandleEventActions(void);
static void HandleEventActions(void);
+void SetPlayfieldMouseCursorEnabled(boolean enabled)
+{
+ special_cursor_enabled = enabled;
+}
+
// event filter to set mouse x/y position (for pointer class global animations)
// (this is especially required to ensure smooth global animation mouse pointer
// movement when the screen is updated without handling events; this can happen
// event filter to set mouse x/y position (for pointer class global animations)
// (this is especially required to ensure smooth global animation mouse pointer
// movement when the screen is updated without handling events; this can happen
@@
-340,11
+346,10
@@
static void HandleMouseCursor(void)
if (gfx.cursor_mode != CURSOR_PLAYFIELD &&
cursor_inside_playfield &&
if (gfx.cursor_mode != CURSOR_PLAYFIELD &&
cursor_inside_playfield &&
+ special_cursor_enabled &&
DelayReached(&special_cursor_delay, special_cursor_delay_value))
{
DelayReached(&special_cursor_delay, special_cursor_delay_value))
{
- if (level.game_engine_type != GAME_ENGINE_TYPE_MM ||
- tile_cursor.enabled)
- SetMouseCursor(CURSOR_PLAYFIELD);
+ SetMouseCursor(CURSOR_PLAYFIELD);
}
}
else if (gfx.cursor_mode != CURSOR_DEFAULT)
}
}
else if (gfx.cursor_mode != CURSOR_DEFAULT)
@@
-524,6
+529,10
@@
void HandleButtonEvent(ButtonEvent *event)
// for any mouse button event, disable playfield tile cursor
SetTileCursorEnabled(FALSE);
// for any mouse button event, disable playfield tile cursor
SetTileCursorEnabled(FALSE);
+ // for any mouse button event, disable playfield mouse cursor
+ if (cursor_inside_playfield)
+ SetPlayfieldMouseCursorEnabled(FALSE);
+
#if defined(HAS_SCREEN_KEYBOARD)
if (video.shifted_up)
event->y += video.shifted_up_pos;
#if defined(HAS_SCREEN_KEYBOARD)
if (video.shifted_up)
event->y += video.shifted_up_pos;
@@
-2156,6
+2165,10
@@
void HandleKey(Key key, int key_status)
// for MM style levels, handle in-game keyboard input in HandleJoystick()
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
joy |= key_action;
// for MM style levels, handle in-game keyboard input in HandleJoystick()
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
joy |= key_action;
+
+ // for any keyboard event, enable playfield mouse cursor
+ if (key_action && key_status == KEY_PRESSED)
+ SetPlayfieldMouseCursorEnabled(TRUE);
}
}
else
}
}
else
@@
-2599,6
+2612,10
@@
void HandleJoystick(void)
SetTileCursorEnabled(TRUE);
}
SetTileCursorEnabled(TRUE);
}
+ // for any joystick event, enable playfield mouse cursor
+ if (dx || dy || button)
+ SetPlayfieldMouseCursorEnabled(TRUE);
+
if (joytest && !button && !DelayReached(&joytest_delay, joytest_delay_value))
{
// delay joystick/keyboard actions if axes/keys continually pressed
if (joytest && !button && !DelayReached(&joytest_delay, joytest_delay_value))
{
// delay joystick/keyboard actions if axes/keys continually pressed