refactor: ♻️ player inventory
This commit is contained in:
parent
59489021ba
commit
6ee570cfa3
7 changed files with 77 additions and 71 deletions
56
src/player_inventory_gui.rs
Normal file
56
src/player_inventory_gui.rs
Normal file
|
@ -0,0 +1,56 @@
|
|||
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<AssetServer>) {
|
||||
let image = asset_server.load::<Image>("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<PlayerInventoryGUI>, Without<Player>),
|
||||
>,
|
||||
mut player_query: Query<&mut Player, With<Player>>,
|
||||
player_transform_query: Query<&Transform, With<Player>>,
|
||||
mut player_inventory_visibility_query: Query<&mut Visibility, With<PlayerInventoryGUI>>,
|
||||
keyboard: Res<ButtonInput<KeyCode>>,
|
||||
mut player_gui_status: ResMut<PlayerGUIStatus>,
|
||||
) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue