wrap cursor in menu

This commit is contained in:
yuni 2024-05-14 18:58:47 +02:00
parent 8fb4ab4a18
commit a0dd6d45a0

View file

@ -431,6 +431,8 @@ pub fn handle_input(
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
mut ew_updatemenu: EventWriter<UpdateMenuEvent>,
) {
let last_menu_entry = MENUDEF.len() - 1;
if keyboard_input.just_pressed(settings.key_menu)
|| keyboard_input.just_pressed(settings.key_vehicle) && settings.menu_active
{
@ -443,7 +445,11 @@ pub fn handle_input(
|| keyboard_input.just_pressed(settings.key_mouseup)
|| keyboard_input.just_pressed(KeyCode::ArrowUp)
{
menustate.cursor = menustate.cursor.saturating_sub(1);
menustate.cursor = if menustate.cursor == 0 {
last_menu_entry
} else {
menustate.cursor.saturating_sub(1)
};
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Click));
ew_updatemenu.send(UpdateMenuEvent);
}
@ -451,7 +457,11 @@ pub fn handle_input(
|| keyboard_input.just_pressed(settings.key_mousedown)
|| keyboard_input.just_pressed(KeyCode::ArrowDown)
{
menustate.cursor = (menustate.cursor + 1).min(MENUDEF.len() - 1);
menustate.cursor = if menustate.cursor == last_menu_entry {
0
} else {
menustate.cursor.saturating_add(1)
};
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Click));
ew_updatemenu.send(UpdateMenuEvent);
}