43 lines
1.4 KiB
Rust
43 lines
1.4 KiB
Rust
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<AssetServer>) {
|
|
let image = asset_server.load::<Image>("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<Player>>,
|
|
mut player_inventory_query: Query<&mut PlayerInventory, With<PlayerInventory>>,
|
|
market_query: Query<&Transform, With<Market>>,
|
|
keyboard: Res<ButtonInput<KeyCode>>,
|
|
) {
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|