diff --git a/src/lib.rs b/src/lib.rs index dcf9d35..87169ed 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,7 @@ use bevy::{ use camera::UserCamera; use market::Market; use player::Player; -use player_inventory::PlayerInventory; +use player_inventory_gui::PlayerInventoryGUI; use ui::{FPSText, FishCounterText, KeybindingsText, MoneyText}; use water::Water; @@ -17,6 +17,7 @@ mod camera; mod market; mod player; mod player_inventory; +mod player_inventory_gui; mod ui; mod water; @@ -53,7 +54,7 @@ pub fn start_game() { UserCamera::setup, Water::setup, Market::setup, - PlayerInventory::setup, + PlayerInventoryGUI::setup, Player::setup, FishCounterText::setup, MoneyText::setup, @@ -65,7 +66,7 @@ pub fn start_game() { ( FPSText::update, UserCamera::update, - PlayerInventory::toggle, + PlayerInventoryGUI::toggle, Player::r#move.before(FishCounterText::update), Water::fishing, Market::sell.chain().before(MoneyText::update), diff --git a/src/market.rs b/src/market.rs index 8cbf8f1..19251a0 100644 --- a/src/market.rs +++ b/src/market.rs @@ -1,8 +1,6 @@ use bevy::prelude::*; -use crate::{ - player::Player, player_inventory::PlayerInventory, FISH_PRICE, INTERACTION_AREA_RADIUS, -}; +use crate::{player::Player, FISH_PRICE, INTERACTION_AREA_RADIUS}; #[derive(Debug, Component)] pub struct Market; @@ -20,12 +18,12 @@ impl Market { pub fn sell( player_transform_query: Query<&Transform, With>, - mut player_inventory_query: Query<&mut PlayerInventory, With>, + mut player_query: Query<&mut Player, With>, market_query: Query<&Transform, With>, keyboard: Res>, ) { let player_transform = player_transform_query.get_single().unwrap(); - let mut player_inventory = player_inventory_query.get_single_mut().unwrap(); + let player_inventory = &mut player_query.get_single_mut().unwrap().inventory; for market_query in &market_query { let distance = player_transform diff --git a/src/player.rs b/src/player.rs index 7ec75cd..25f9cf1 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,9 +1,11 @@ use bevy::prelude::*; -use crate::{PlayerGUIStatus, CHARACTER_SPEED}; +use crate::{player_inventory::PlayerInventory, PlayerGUIStatus, CHARACTER_SPEED}; -#[derive(Debug, Component)] -pub struct Player; +#[derive(Debug, Default, Component)] +pub struct Player { + pub inventory: PlayerInventory, +} impl Player { pub fn setup(mut commands: Commands, asset_server: Res) { @@ -11,7 +13,7 @@ impl Player { commands.spawn(( Sprite::from_image(image), Transform::from_xyz(0.0, 0.0, 0.0), - Player, + Player::default(), )); } diff --git a/src/player_inventory.rs b/src/player_inventory.rs index 4c264b4..bb80b70 100644 --- a/src/player_inventory.rs +++ b/src/player_inventory.rs @@ -1,58 +1,7 @@ use bevy::prelude::*; -use crate::{player::Player, PlayerGUIStatus}; - #[derive(Debug, Default, Component)] pub struct PlayerInventory { pub money: usize, pub fish: usize, } - -impl PlayerInventory { - 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, - PlayerInventory::default(), - )); - } - - pub fn toggle( - mut player_inventory_transform_query: Query< - &mut Transform, - (With, Without), - >, - mut player_inventory_query: Query<&mut PlayerInventory, 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_transform = - player_inventory_transform_query.get_single_mut().unwrap(); - let player_inventory = player_inventory_query.get_single_mut().unwrap(); - let player_position = player_transform_query.get_single().unwrap(); - - let new_inventory_position = player_position.translation.truncate().extend(2.0); - player_inventory_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(); - } - } -} diff --git a/src/player_inventory_gui.rs b/src/player_inventory_gui.rs new file mode 100644 index 0000000..af54757 --- /dev/null +++ b/src/player_inventory_gui.rs @@ -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) { + 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(); + } + } +} diff --git a/src/ui.rs b/src/ui.rs index a58b94d..740aa49 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -5,7 +5,7 @@ use bevy::{ prelude::*, }; -use crate::{player::Player, player_inventory::PlayerInventory}; +use crate::player::Player; const FISH_COUNTER_OFFSET: Vec3 = Vec3::new(50.0, 50.0, 1.0); static FISH_COUNT: LazyLock>> = LazyLock::new(|| Arc::new(RwLock::new(0))); @@ -61,12 +61,12 @@ impl FishCounterText { >, mut fish_counter_text_query: Query<&mut Text2d, With>, player_transform_query: Query<&Transform, (With, Without)>, - player_inventory_query: Query<&PlayerInventory, With>, + player_query: Query<&Player, With>, ) { let mut fish_counter_text_transform = fish_counter_text_transform_query.get_single_mut().unwrap(); let mut fish_counter_text = fish_counter_text_query.get_single_mut().unwrap(); - let player_inventory = player_inventory_query.get_single().unwrap(); + let player_inventory = &player_query.get_single().unwrap().inventory; let player_position = player_transform_query.get_single().unwrap(); let mut new_fish_counter_text_position = player_position.translation.truncate().extend(0.0); @@ -112,10 +112,10 @@ impl MoneyText { pub fn update( mut money_text_query: Query<&mut Text, With>, - player_inventory_query: Query<&PlayerInventory, With>, + player_query: Query<&Player, With>, ) { let mut fish_counter_text = money_text_query.get_single_mut().unwrap(); - let player_inventory = player_inventory_query.get_single().unwrap(); + let player_inventory = &player_query.get_single().unwrap().inventory; if *MONEY.read().unwrap() != player_inventory.fish { *MONEY.write().unwrap() = player_inventory.fish; diff --git a/src/water.rs b/src/water.rs index d195a44..3bf25f3 100644 --- a/src/water.rs +++ b/src/water.rs @@ -1,6 +1,6 @@ use bevy::prelude::*; -use crate::{player::Player, player_inventory::PlayerInventory, INTERACTION_AREA_RADIUS}; +use crate::{player::Player, INTERACTION_AREA_RADIUS}; #[derive(Debug, Component)] pub struct Water; @@ -15,12 +15,12 @@ impl Water { pub fn fishing( player_transform_query: Query<&Transform, With>, - mut player_inventory_query: Query<&mut PlayerInventory, With>, + mut player_query: Query<&mut Player, With>, water_query: Query<&Transform, With>, keyboard: Res>, ) { let player_transform = player_transform_query.get_single().unwrap(); - let mut player_inventory = player_inventory_query.get_single_mut().unwrap(); + let player_inventory = &mut player_query.get_single_mut().unwrap().inventory; for water_query in &water_query { let distance = player_transform