From 7d4dd03ec2a0a61905c5a60e02e83daf6d591868 Mon Sep 17 00:00:00 2001 From: Abel Suranyi Date: Thu, 28 Nov 2024 20:41:37 +0100 Subject: [PATCH 1/3] fix #84 do not start reload if magazine full --- common/src/components/weapon.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/src/components/weapon.rs b/common/src/components/weapon.rs index f33acd5..7d40955 100644 --- a/common/src/components/weapon.rs +++ b/common/src/components/weapon.rs @@ -97,9 +97,14 @@ impl Weapon { self.details.bullet_distance_limit / self.details.bullet_speed } + pub fn is_magazine_full(&self) -> bool { + self.bullets_left_in_magazine == self.details.magazine_size + } + pub fn is_allowed_to_reload(&self) -> bool { - self.reload_started_at.is_none() + self.reload_started_at.is_none() && !self.is_magazine_full() } + } mod weapon_details { From 8870a7a01573df0ea06582b311bc540ed973b933 Mon Sep 17 00:00:00 2001 From: Abel Suranyi Date: Sat, 11 Jan 2025 15:14:34 +0100 Subject: [PATCH 2/3] 89: implement run --- common/src/lib.rs | 1 + common/src/metric_dimension.rs | 8 ++++++++ server/src/systems/player_movement.rs | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/common/src/lib.rs b/common/src/lib.rs index c13ca8c..499cc34 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -19,6 +19,7 @@ pub mod utilities; pub enum MoveDirection { Forward, Backward, + RunForward, StrafeLeft, StrafeRight, } diff --git a/common/src/metric_dimension.rs b/common/src/metric_dimension.rs index 71dbedd..00dd764 100644 --- a/common/src/metric_dimension.rs +++ b/common/src/metric_dimension.rs @@ -204,6 +204,14 @@ impl Div for MeterPerSec { } } +impl Mul for MeterPerSec { + type Output = MeterPerSec; + + fn mul(self, rhs: f32) -> Self::Output { + MeterPerSec(self.0 * rhs) + } +} + impl AddAssign for MeterPerSec { fn add_assign(&mut self, rhs: MeterPerSec) { self.0.add_assign(rhs.0) diff --git a/server/src/systems/player_movement.rs b/server/src/systems/player_movement.rs index 5910e68..8ead288 100644 --- a/server/src/systems/player_movement.rs +++ b/server/src/systems/player_movement.rs @@ -16,7 +16,11 @@ pub fn apply_input(mut query: Query<(&GlobalTransform, &mut Transform, &mut Velo fn move_directions_from_input(input: &Input) -> Vec { let mut directions = Vec::new(); if input.flags.intersects(InputFlags::FORWARD) { - directions.push(MoveDirection::Forward); + if input.flags.intersects(InputFlags::RUN) { + directions.push(MoveDirection::RunForward); + } else { + directions.push(MoveDirection::Forward); + } } if input.flags.intersects(InputFlags::BACKWARD) { directions.push(MoveDirection::Backward); @@ -67,6 +71,10 @@ fn as_vector2(move_dir: MoveDirection) -> MeterPerSecVec2 { x: -PLAYER_MAX_WALK_SPEED / 2.0, y: MeterPerSec(0.0), }, + MoveDirection::RunForward => MeterPerSecVec2 { + x: MeterPerSec(0.0), + y: PLAYER_MAX_WALK_SPEED * - 2.0, + }, } } From 76340176258f16e96ae224f7896b79a5478bd245 Mon Sep 17 00:00:00 2001 From: Abel Suranyi Date: Sat, 11 Jan 2025 21:00:37 +0100 Subject: [PATCH 3/3] 89: add tests --- server/src/systems/player_movement.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/src/systems/player_movement.rs b/server/src/systems/player_movement.rs index 8ead288..f24bb6f 100644 --- a/server/src/systems/player_movement.rs +++ b/server/src/systems/player_movement.rs @@ -119,6 +119,10 @@ mod test { fwd_down: FACING_DOWN, vec!{Forward}, (MeterPerSec(0.0), -PLAYER_MAX_WALK_SPEED), fwd_left: FACING_LEFT, vec!{Forward}, (-PLAYER_MAX_WALK_SPEED, MeterPerSec(0.0)), fwd_right: FACING_RIGHT, vec!{Forward}, (PLAYER_MAX_WALK_SPEED, MeterPerSec(0.0)), + run_fwd_up: FACING_UP, vec!{RunForward}, (MeterPerSec(0.0), PLAYER_MAX_WALK_SPEED * 2.0), + run_fwd_down: FACING_DOWN, vec!{RunForward}, (MeterPerSec(0.0), -PLAYER_MAX_WALK_SPEED * 2.0), + run_fwd_left: FACING_LEFT, vec!{RunForward}, (-PLAYER_MAX_WALK_SPEED * 2.0, MeterPerSec(0.0)), + run_fwd_right: FACING_RIGHT, vec!{RunForward}, (PLAYER_MAX_WALK_SPEED * 2.0, MeterPerSec(0.0)), } } }