use bevy::prelude::*; use crate::{player::Player, PlayerGUIStatus}; #[derive(Debug, Default, Component)] pub struct PlayerInventoryGUI {} impl PlayerInventoryGUI { pub fn setup(mut commands: Commands, asset_server: Res) { let image = asset_server.load::("inventory.png"); let sprite = Sprite::from_image(image); commands.spawn(( sprite.clone(), Transform::from_scale(Vec3 { x: 20.0, y: 20.0, z: 0.0, }), Visibility::Hidden, PlayerInventoryGUI::default(), )); } pub fn toggle( mut player_inventory_gui_transform_query: Query< &mut Transform, (With, Without), >, mut player_query: Query<&mut Player, With>, player_transform_query: Query<&Transform, With>, mut player_inventory_visibility_query: Query<&mut Visibility, With>, keyboard: Res>, mut player_gui_status: ResMut, ) { let mut player_inventory_visibility = player_inventory_visibility_query.get_single_mut().unwrap(); if keyboard.just_pressed(KeyCode::Tab) && player_gui_status.looking_inventory == false { let mut player_inventory_gui_transform = player_inventory_gui_transform_query .get_single_mut() .unwrap(); let player_inventory = &player_query.get_single_mut().unwrap().inventory; let player_position = player_transform_query.get_single().unwrap(); let new_inventory_position = player_position.translation.truncate().extend(2.0); player_inventory_gui_transform.translation = new_inventory_position; player_gui_status.looking_inventory = true; player_inventory_visibility.toggle_visible_hidden(); println!("{:#?}", player_inventory); } else if keyboard.just_pressed(KeyCode::Tab) && player_gui_status.looking_inventory == true { player_gui_status.looking_inventory = false; player_inventory_visibility.toggle_visible_hidden(); } } }