rust_fisher_game/src/market.rs
Ahmet Kaan Gümüş 650217a746 feat: inventory panel
2025-02-19 04:31:26 +03:00

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;
}
}
}
}
}