use bevy::prelude::*; use crate::{player::Player, FISH_PRICE, INTERACTION_AREA_RADIUS}; #[derive(Debug, Component)] pub struct Market; impl Market { pub fn setup(mut commands: Commands, asset_server: Res) { let image = asset_server.load::("market.png"); let sprite = Sprite::from_image(image); commands.spawn(( sprite.clone(), Transform::from_xyz(0.0, 200.0, -1.0), Market, )); } pub fn sell( player_transform_query: Query<&Transform, 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 player_inventory = &mut player_query.get_single_mut().unwrap().inventory; for market_query in &market_query { let distance = player_transform .translation .distance(market_query.translation); if distance < INTERACTION_AREA_RADIUS { if keyboard.just_pressed(KeyCode::KeyE) { player_inventory.money += player_inventory.fish * FISH_PRICE; player_inventory.fish = 0; } } } } }