feat: add keybinds for inventory and settings (#66)

This commit is contained in:
demenik
2025-12-10 18:28:55 +01:00
parent 734fa79d2e
commit 81ff75630e

View File

@@ -1,9 +1,11 @@
use crate::features::{ use crate::features::{
hud::ui::settings::open_settings,
input::utils::mouse_to_grid, input::utils::mouse_to_grid,
inventory::{components::ItemStack, ui::open_inventory},
phase::messages::{NextPhaseMessage, PhaseTimerPauseMessage}, phase::messages::{NextPhaseMessage, PhaseTimerPauseMessage},
pom::messages::InvalidMoveMessage, pom::messages::InvalidMoveMessage,
shop::ui::open_shop, shop::ui::open_shop,
ui::messages::ClosePopupMessage, ui::{messages::ClosePopupMessage, ui::popups::PopupRoot},
}; };
use crate::prelude::*; use crate::prelude::*;
use bevy::input::mouse::MouseButton; use bevy::input::mouse::MouseButton;
@@ -40,6 +42,7 @@ impl Plugin for InputPlugin {
app.add_systems(Update, next_phase.run_if(in_state(AppState::GameScreen))); app.add_systems(Update, next_phase.run_if(in_state(AppState::GameScreen)));
app.add_systems(Update, shop_keybind.run_if(in_state(AppState::GameScreen))); app.add_systems(Update, shop_keybind.run_if(in_state(AppState::GameScreen)));
app.add_systems(Update, inventory_keybind.run_if(in_state(AppState::GameScreen)));
app.add_message::<ClosePopupMessage>(); app.add_message::<ClosePopupMessage>();
app.add_systems(Update, popup_keybind); app.add_systems(Update, popup_keybind);
@@ -261,12 +264,31 @@ fn shop_keybind(
} }
} }
/// Closes popups on Escape press. /// Opens the inventory on 'I' press.
fn inventory_keybind(
keys: Res<ButtonInput<KeyCode>>,
mut commands: Commands,
item_stacks: Query<&ItemStack>,
game_config: Res<GameConfig>,
asset_server: Res<AssetServer>,
) {
if keys.just_pressed(KeyCode::KeyI) {
open_inventory(&mut commands, item_stacks, &game_config, &asset_server);
}
}
/// Closes popups on Escape press or opens settings if no popup is open.
fn popup_keybind( fn popup_keybind(
mut close_popup_messages: MessageWriter<ClosePopupMessage>, mut close_popup_messages: MessageWriter<ClosePopupMessage>,
keys: Res<ButtonInput<KeyCode>>, keys: Res<ButtonInput<KeyCode>>,
popup_query: Query<Entity, With<PopupRoot>>,
mut commands: Commands,
) { ) {
if keys.just_pressed(KeyCode::Escape) { if keys.just_pressed(KeyCode::Escape) {
close_popup_messages.write(ClosePopupMessage); if !popup_query.is_empty() {
close_popup_messages.write(ClosePopupMessage);
} else {
open_settings(&mut commands);
}
} }
} }