mirror of
https://codeberg.org/schrottkatze/mgd2-tram-championships.git
synced 2025-07-02 01:27:39 +00:00
fix menus not closing on exit of trigger state
This commit is contained in:
parent
4c24f67cd5
commit
3b0bd65078
1 changed files with 13 additions and 1 deletions
|
@ -5,6 +5,8 @@ use bevy::{
|
||||||
state::state::FreelyMutableState,
|
state::state::FreelyMutableState,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use crate::cleanup::despawn;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ItemPosition, MenuItemInternal, MenuItemType, OnPressAction,
|
ItemPosition, MenuItemInternal, MenuItemType, OnPressAction,
|
||||||
menus::{Menu, Menus},
|
menus::{Menu, Menus},
|
||||||
|
@ -30,7 +32,8 @@ where
|
||||||
update_ui_trigger::<NavState>,
|
update_ui_trigger::<NavState>,
|
||||||
handle_press_actions::<NavState>.run_if(in_state(self.trigger.clone())),
|
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)]
|
#[derive(Resource)]
|
||||||
struct MenusStore<S: States>(HashMap<S, Menu<S>>);
|
struct MenusStore<S: States>(HashMap<S, Menu<S>>);
|
||||||
#[derive(Resource)]
|
#[derive(Resource)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue