zuma-like/src/common/systems.rs
2026-04-10 20:28:55 +03:00

38 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);
}
}