fix menus not closing on exit of trigger state

This commit is contained in:
Schrottkatze 2025-06-18 17:14:11 +02:00
parent 4c24f67cd5
commit 3b0bd65078
Signed by: schrottkatze
SSH key fingerprint: SHA256:FPOYVeBy3QP20FEM42uWF1Wa/Qhlk+L3S2+Wuau/Auo

View file

@ -5,6 +5,8 @@ use bevy::{
state::state::FreelyMutableState,
};
use crate::cleanup::despawn;
use super::{
ItemPosition, MenuItemInternal, MenuItemType, OnPressAction,
menus::{Menu, Menus},
@ -30,7 +32,8 @@ where
update_ui_trigger::<NavState>,
handle_press_actions::<NavState>.run_if(in_state(self.trigger.clone())),
),
);
)
.add_systems(OnExit(self.trigger.clone()), close_menu::<NavState>);
}
}
@ -53,6 +56,15 @@ impl<T: States, S: States> Menus<T, S> {
}
}
fn close_menu<S: States + FreelyMutableState>(
mut c: Commands,
mut nav_state: ResMut<NextState<S>>,
closed_when: Res<MenusClosedWhen<S>>,
) {
c.run_system_cached(despawn::<UiParent<S>>);
nav_state.set(closed_when.0.clone());
}
#[derive(Resource)]
struct MenusStore<S: States>(HashMap<S, Menu<S>>);
#[derive(Resource)]