feat: close popups with escape key

This commit is contained in:
demenik
2025-12-08 14:52:58 +01:00
parent 4f41d89f63
commit 881300e0a6
9 changed files with 108 additions and 4 deletions

View File

@@ -1,6 +1,8 @@
use crate::features::phase::components::{SessionTracker, TimerSettings};
use crate::features::savegame::ui::load_popup_handler;
use crate::features::ui::messages::ClosePopupMessage;
use crate::prelude::*;
use components::*;
use messages::*;
use std::fs::File;
use std::io::{Read, Write};
@@ -19,7 +21,21 @@ impl Plugin for SavegamePlugin {
app.add_systems(Update, dump_savegame.run_if(in_state(AppState::GameScreen)));
app.add_systems(Update, load_savegame.run_if(in_state(AppState::GameScreen)));
app.add_systems(Update, load_popup_handler);
app.add_systems(Update, (load_popup_handler, close_popup));
}
}
fn close_popup(
mut commands: Commands,
mut close_popup_reader: MessageReader<ClosePopupMessage>,
root_query: Query<(Entity, &RootMarker)>,
) {
for _ in close_popup_reader.read() {
for (entity, root) in root_query.iter() {
match *root {
RootMarker::PopupSavegameLoad => commands.entity(entity).despawn(),
}
}
}
}