Add key repeat

This commit is contained in:
Miloslav Ciz 2025-06-11 22:40:00 +02:00
parent 57097c57bb
commit 60cf16c8de
2 changed files with 14 additions and 3 deletions

View file

@ -2,7 +2,6 @@ fuck issue trackers :D
=========== GENERAL ==============
- menu: key repeat?
- controller supports? analog input could be "tapping" the keys with varying
frequency
- frontends:
@ -45,6 +44,7 @@ fuck issue trackers :D
=========== HANDLED ==============
- should drifting make a sound? NO NEED
- menu: key repeat?
- replay validation? maybe yes?
- ghost color
- make reverse maps

15
game.h
View file

@ -1366,6 +1366,17 @@ void LCR_gameSaveReplay(void)
LCR_gamePopupMessage(LCR_texts[LCR_TEXTS_SAVED]);
}
/**
Checks if given key is either immediately pressed or repeated after being
held for some time.
*/
uint8_t LCR_gameKeyActive(uint8_t key)
{
return LCR_game.keyStates[key] == 1 ||
(LCR_game.keyStates[key] >= (1200 / LCR_SETTING_FPS)
&& ((LCR_game.frame & 0x03) == 0));
}
/**
Helper subroutine, handles user input during main loop frame, EXCEPT for the
driving input (that is handled in the loop itself).
@ -1470,7 +1481,7 @@ void LCR_gameHandleInput(void)
LCR_game.menu.selectedItem = 0;
LCR_audioPlaySound(LCR_SOUND_CLICK);
}
else if (LCR_game.keyStates[LCR_KEY_UP] == 1)
else if (LCR_gameKeyActive(LCR_KEY_UP))
{
LCR_LOG1("menu item up");
@ -1487,7 +1498,7 @@ void LCR_gameHandleInput(void)
scrolled = -1;
}
}
else if (LCR_game.keyStates[LCR_KEY_DOWN] == 1)
else if (LCR_gameKeyActive(LCR_KEY_DOWN))
{
LCR_LOG1("menu item down");