projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
de9f167
)
improved smoothness of moving tile selection cursor
author
Holger Schemel
<info@artsoft.org>
Fri, 15 Dec 2017 07:29:27 +0000
(08:29 +0100)
committer
Holger Schemel
<info@artsoft.org>
Fri, 23 Mar 2018 22:21:17 +0000
(23:21 +0100)
src/events.c
patch
|
blob
|
history
diff --git
a/src/events.c
b/src/events.c
index 5dabff98e944b25fb815cf470f6e58c58b1011b2..4755d51ff57dc975ba1a27f91d45f02f7847fe2f 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-2242,6
+2242,8
@@
void HandleJoystick()
static unsigned int joytest_delay = 0;
static unsigned int joytest_delay_value = GADGET_FRAME_DELAY;
static int joytest_last = 0;
static unsigned int joytest_delay = 0;
static unsigned int joytest_delay_value = GADGET_FRAME_DELAY;
static int joytest_last = 0;
+ int delay_value_first = GADGET_FRAME_DELAY_FIRST;
+ int delay_value = GADGET_FRAME_DELAY;
int joystick = HandleJoystickForAllPlayers();
int keyboard = key_joystick_mapping;
int joy = (joystick | keyboard);
int joystick = HandleJoystickForAllPlayers();
int keyboard = key_joystick_mapping;
int joy = (joystick | keyboard);
@@
-2254,6
+2256,7
@@
void HandleJoystick()
int newbutton = (AnyJoystickButton() == JOY_BUTTON_NEW_PRESSED);
int dx = (left ? -1 : right ? 1 : 0);
int dy = (up ? -1 : down ? 1 : 0);
int newbutton = (AnyJoystickButton() == JOY_BUTTON_NEW_PRESSED);
int dx = (left ? -1 : right ? 1 : 0);
int dy = (up ? -1 : down ? 1 : 0);
+ boolean use_delay_value_first = (joytest != joytest_last);
if (HandleGlobalAnimClicks(-1, -1, newbutton))
{
if (HandleGlobalAnimClicks(-1, -1, newbutton))
{
@@
-2263,10
+2266,18
@@
void HandleJoystick()
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
{
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
{
- // when playing MM style levels, also use delay for keyboard events
if (game_status == GAME_MODE_PLAYING)
if (game_status == GAME_MODE_PLAYING)
+ {
+ // when playing MM style levels, also use delay for keyboard events
joytest |= keyboard;
joytest |= keyboard;
+ // only use first delay value for new events, but not for changed events
+ use_delay_value_first = (!joytest != !joytest_last);
+
+ // only use delay after the initial keyboard event
+ delay_value = 0;
+ }
+
// for any joystick or keyboard event, enable playfield tile cursor
if (dx || dy || button)
SetTileCursorEnabled(TRUE);
// for any joystick or keyboard event, enable playfield tile cursor
if (dx || dy || button)
SetTileCursorEnabled(TRUE);
@@
-2281,7
+2292,7
@@
void HandleJoystick()
{
/* first start with longer delay, then continue with shorter delay */
joytest_delay_value =
{
/* first start with longer delay, then continue with shorter delay */
joytest_delay_value =
- (
joytest != joytest_last ? GADGET_FRAME_DELAY_FIRST : GADGET_FRAME_DELAY
);
+ (
use_delay_value_first ? delay_value_first : delay_value
);
}
joytest_last = joytest;
}
joytest_last = joytest;