From 2af9dd5fe1ae5ee8d8b46fe207484f05f30c800f Mon Sep 17 00:00:00 2001 From: CoCoSol007 Date: Wed, 28 Feb 2024 13:37:04 +0100 Subject: [PATCH] update --- crates/border-wars/src/camera.rs | 37 +++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/crates/border-wars/src/camera.rs b/crates/border-wars/src/camera.rs index 9d33768..b61a30c 100644 --- a/crates/border-wars/src/camera.rs +++ b/crates/border-wars/src/camera.rs @@ -7,16 +7,20 @@ use bevy::prelude::*; use crate::CurrentScene; /// The speed of camera movement. -const CAMERA_SPEED_MOVEMENT: f32 = 10.; +#[derive(Resource)] +struct CameraSpeedMouvement(f32); /// The speed of camera scaling. -const CAMERA_SPEED_SCALE: f32 = 0.1; +#[derive(Resource)] +struct CameraSpeedScale(f32); /// The minimum scale of the camera. -const MIN_SCALE: f32 = 0.5; +#[derive(Resource)] +struct MinScale(f32); /// The maximum scale of the camera. -const MAX_SCALE: f32 = 5.; +#[derive(Resource)] +struct MaxScale(f32); /// Key settings for camera movement. #[derive(Resource)] @@ -41,7 +45,7 @@ pub struct CameraPlugin; impl Plugin for CameraPlugin { fn build(&self, app: &mut App) { app.add_systems(Startup, init_camera) - .add_systems(Startup, init_key_movement) + .add_systems(Startup, init_resources) .add_systems(Update, movement_system.run_if(in_state(CurrentScene::Game))) .add_systems(Update, scale_system.run_if(in_state(CurrentScene::Game))); } @@ -53,13 +57,18 @@ fn init_camera(mut commands: Commands) { } /// Initializes the key movement settings for the camera. -fn init_key_movement(mut commands: Commands) { +fn init_resources(mut commands: Commands) { commands.insert_resource(KeysMovementSettings { up: KeyCode::Z, down: KeyCode::S, right: KeyCode::D, left: KeyCode::Q, }); + + commands.insert_resource(CameraSpeedMouvement(10.0)); + commands.insert_resource(CameraSpeedScale(0.1)); + commands.insert_resource(MinScale(0.1)); + commands.insert_resource(MaxScale(10.0)); } /// Moves the camera with keyboard input. @@ -67,15 +76,16 @@ fn movement_system( mut query: Query<&mut Transform, With>, keys: Res>, keys_settings: Res, + movement_speed: Res, ) { for mut transform in query.iter_mut() { let mut target = Vec3::ZERO; for key in keys.get_pressed() { match *key { - v if v == keys_settings.up => target.y += CAMERA_SPEED_MOVEMENT, - v if v == keys_settings.down => target.y -= CAMERA_SPEED_MOVEMENT, - v if v == keys_settings.right => target.x += CAMERA_SPEED_MOVEMENT, - v if v == keys_settings.left => target.x -= CAMERA_SPEED_MOVEMENT, + v if v == keys_settings.up => target.y += movement_speed.0, + v if v == keys_settings.down => target.y -= movement_speed.0, + v if v == keys_settings.right => target.x += movement_speed.0, + v if v == keys_settings.left => target.x -= movement_speed.0, _ => continue, } } @@ -88,6 +98,9 @@ fn movement_system( fn scale_system( mut scroll_ev: EventReader, mut query: Query<&mut OrthographicProjection, With>, + min_scale: Res, + max_scale: Res, + scale_speed: Res, ) { for ev in scroll_ev.read() { for mut projection in query.iter_mut() { @@ -95,8 +108,8 @@ fn scale_system( return; } - let future_scale = ev.y.mul_add(CAMERA_SPEED_SCALE, projection.scale); - if MIN_SCALE < future_scale && future_scale < MAX_SCALE { + let future_scale = ev.y.mul_add(scale_speed.0, projection.scale); + if min_scale.0 < future_scale && future_scale < max_scale.0 { projection.scale = future_scale; } }