From cca4b205f5ffcc6083f35a6e96291888aae6ea11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20Kaan=20G=C3=BCm=C3=BC=C5=9F?= Date: Sun, 16 Feb 2025 01:23:41 +0300 Subject: [PATCH] feat: :sparkles: fishing --- src/lib.rs | 3 ++- src/water.rs | 30 +++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index caa1f13..97895f1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ mod water; pub const CHARACTER_SPEED: f32 = 300.0; pub const CAMERA_DECAY_RATE: f32 = 3.0; +pub const FISHING_AREA_RADIUS: f32 = 100.0; pub fn start_game() { App::new() @@ -20,6 +21,6 @@ pub fn start_game() { Startup, (setup_camera, Water::setup_water, Player::setup_player), ) - .add_systems(Update, (update_camera, Player::move_player)) + .add_systems(Update, (update_camera, Player::move_player, Water::fishing)) .run(); } diff --git a/src/water.rs b/src/water.rs index f17e6d5..6637ba1 100644 --- a/src/water.rs +++ b/src/water.rs @@ -1,15 +1,35 @@ use bevy::prelude::*; +use crate::{player::Player, FISHING_AREA_RADIUS}; + #[derive(Debug, Component)] pub struct Water; impl Water { pub fn setup_water(mut commands: Commands, asset_server: Res) { let image = asset_server.load::("water.png"); - commands.spawn(( - Sprite::from_image(image), - Transform::from_xyz(500.0, 0.0, 0.0), - Water, - )); + let sprite = Sprite::from_image(image); + commands.spawn((sprite.clone(), Transform::from_xyz(500.0, 0.0, -1.0), Water)); + commands.spawn((sprite, Transform::from_xyz(-500.0, 0.0, -1.0), Water)); + } + + pub fn fishing( + player_query: Query<&Transform, With>, + water_query: Query<&Transform, With>, + keyboard: Res>, + ) { + let player_transform = player_query.get_single().unwrap(); + + for water_query in &water_query { + let distance = player_transform + .translation + .distance(water_query.translation); + + if distance < FISHING_AREA_RADIUS { + if keyboard.just_pressed(KeyCode::KeyE) { + println!("You caught a fish"); + } + } + } } }