39 lines
1 KiB
Rust
39 lines
1 KiB
Rust
|
|
use bevy::prelude::*;
|
||
|
|
|
||
|
|
use crate::common::{CommonCloseApp, ExitToMainMenu};
|
||
|
|
use crate::common::messages::ExitRequestMessage;
|
||
|
|
use crate::states::AppState;
|
||
|
|
use crate::ui::button_click::ButtonClickMessage;
|
||
|
|
|
||
|
|
pub fn exit_to_main_menu_system(
|
||
|
|
interaction_query: Query<
|
||
|
|
&Interaction,
|
||
|
|
(Changed<Interaction>, With<Button>, With<ExitToMainMenu>),
|
||
|
|
>,
|
||
|
|
mut next_state: ResMut<NextState<AppState>>,
|
||
|
|
) {
|
||
|
|
for interaction in &interaction_query {
|
||
|
|
if matches!(interaction, Interaction::Pressed) {
|
||
|
|
next_state.set(AppState::MainMenu);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn close_app_system(
|
||
|
|
mut messages: MessageReader<ButtonClickMessage<CommonCloseApp>>,
|
||
|
|
mut exit_request: MessageWriter<ExitRequestMessage>,
|
||
|
|
) {
|
||
|
|
for _msg in messages.read() {
|
||
|
|
exit_request.write(ExitRequestMessage);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn exit_system(
|
||
|
|
mut requests: MessageReader<ExitRequestMessage>,
|
||
|
|
mut app_exit: MessageWriter<AppExit>,
|
||
|
|
) {
|
||
|
|
for _ in requests.read() {
|
||
|
|
app_exit.write(AppExit::Success);
|
||
|
|
}
|
||
|
|
}
|