use bevy::prelude::*; use crate::{ player::Player, player_inventory::PlayerInventory, 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_inventory_query: Query<&mut PlayerInventory, 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(); 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; } } } } }