diff --git a/crates/movement_iw4/src/accelerate.rs b/crates/movement_iw4/src/accelerate.rs index ba85542..e3b707b 100644 --- a/crates/movement_iw4/src/accelerate.rs +++ b/crates/movement_iw4/src/accelerate.rs @@ -1,4 +1,4 @@ -use playerstate_iw4::PlayerState; +use playerstate_iw4::{PlayerState, pm_flags}; use crate::Pml; @@ -22,7 +22,7 @@ fn accelerate_velocity( mut wishspeed: f32, accel: f32, ) { - if (pm_flags & 8) != 0 { + if (pm_flags & pm_flags::LADDER) != 0 { let wish_x = wishspeed * wishdir[0]; let wish_y = wishdir[1] * wishspeed; let wish_z = wishspeed * wishdir[2]; diff --git a/crates/movement_iw4/src/air.rs b/crates/movement_iw4/src/air.rs index ff1dad6..3d60509 100644 --- a/crates/movement_iw4/src/air.rs +++ b/crates/movement_iw4/src/air.rs @@ -1,4 +1,4 @@ -use playerstate_iw4::{PlayerState, UserCmd}; +use playerstate_iw4::{PlayerState, UserCmd, pm_flags}; use crate::{CollisionBackend, MoveBounds, Pml, accelerate, friction, step_slide_move}; @@ -78,7 +78,7 @@ fn cmd_scale(ps: &PlayerState, cmd: &UserCmd, spectate_speed_scale: f32) -> f32 } let mut scale = (ps.speed as f32 * largest) / (magnitude * 127.0_f32); - if (ps.pm_flags & 0x40) != 0 || ps.leanf != 0.0 { + if (ps.pm_flags & pm_flags::WALKING) != 0 || ps.leanf != 0.0 { scale *= 0.4_f32; } scale *= match ps.pm_type { diff --git a/crates/movement_iw4/src/cmdscale.rs b/crates/movement_iw4/src/cmdscale.rs index a82dde0..507e908 100644 --- a/crates/movement_iw4/src/cmdscale.rs +++ b/crates/movement_iw4/src/cmdscale.rs @@ -1,4 +1,4 @@ -use playerstate_iw4::{PlayerState, UserCmd}; +use playerstate_iw4::{PlayerState, UserCmd, pm_flags}; use crate::stance_speed_scale; @@ -22,7 +22,7 @@ pub struct CmdScaleWalkContext { #[must_use] pub fn cmd_scale_walk(ps: &PlayerState, cmd: &UserCmd, context: CmdScaleWalkContext) -> f32 { let flags = ps.pm_flags; - let sprinting_ads = (flags & 1) != 0 && ps.f_weapon_pos_frac > 0.0; + let sprinting_ads = (flags & pm_flags::PRONE) != 0 && ps.f_weapon_pos_frac > 0.0; let forward = if cmd.forwardmove < 0 { (cmd.forwardmove as f32) * context.player_back_speed_scale @@ -48,11 +48,11 @@ pub fn cmd_scale_walk(ps: &PlayerState, cmd: &UserCmd, context: CmdScaleWalkCont return 0.0; } - if (flags & 0x40) != 0 || ps.leanf != 0.0 || sprinting_ads { + if (flags & pm_flags::WALKING) != 0 || ps.leanf != 0.0 || sprinting_ads { scale *= 0.4_f32; } - if (flags & 0x4000) != 0 { + if (flags & pm_flags::SPRINTING) != 0 { scale *= context.player_sprint_speed_scale; } @@ -67,7 +67,7 @@ pub fn cmd_scale_walk(ps: &PlayerState, cmd: &UserCmd, context: CmdScaleWalkCont }; if ps.weapon != 0 { - let leaning = (flags & 0x40) != 0; + let leaning = (flags & pm_flags::WALKING) != 0; let use_move = context.weapon_move_speed_scale > 0.0 && !leaning && !sprinting_ads; if use_move { scale *= context.weapon_move_speed_scale; @@ -76,7 +76,7 @@ pub fn cmd_scale_walk(ps: &PlayerState, cmd: &UserCmd, context: CmdScaleWalkCont } } - if (flags & 0x8000) != 0 && context.shellshock_affects_movement { + if (flags & pm_flags::SHELLSHOCKED) != 0 && context.shellshock_affects_movement { scale *= 0.4_f32; } diff --git a/crates/movement_iw4/src/drop_timers.rs b/crates/movement_iw4/src/drop_timers.rs index 19e5c7c..a9f76b6 100644 --- a/crates/movement_iw4/src/drop_timers.rs +++ b/crates/movement_iw4/src/drop_timers.rs @@ -1,6 +1,6 @@ use crate::Pml; use crate::jump; -use playerstate_iw4::PlayerState; +use playerstate_iw4::{PlayerState, pm_flags}; const PM_TIME_EXPIRY_CLEAR: u32 = 0x2180; @@ -9,7 +9,7 @@ pub fn drop_timers(ps: &mut PlayerState, pml: &Pml) { if pml.msec < ps.pm_time { ps.pm_time -= pml.msec; } else { - if (ps.pm_flags & 0x2000) != 0 { + if (ps.pm_flags & pm_flags::JUMPING) != 0 { jump::clear_state(ps); } ps.pm_flags &= !PM_TIME_EXPIRY_CLEAR; diff --git a/crates/movement_iw4/src/friction.rs b/crates/movement_iw4/src/friction.rs index cd85349..9b42b40 100644 --- a/crates/movement_iw4/src/friction.rs +++ b/crates/movement_iw4/src/friction.rs @@ -1,4 +1,4 @@ -use playerstate_iw4::PlayerState; +use playerstate_iw4::{PlayerState, pm_flags}; use crate::Pml; @@ -11,16 +11,16 @@ pub fn friction(ps: &mut PlayerState, pml: &Pml) { let flags = ps.pm_flags; let mut drop = 0.0_f32; - if (flags & 0x10000) == 0 { + if (flags & pm_flags::MELEE_CHARGE) == 0 { if pml.walking != 0 && (pml.ground_trace[4] & 2) == 0 && (flags & 0x100) == 0 { let mut control = speed; if speed < 100.0 { control = 100.0; } - if (flags & 0x80) != 0 { + if (flags & pm_flags::TIME_HARDLANDING) != 0 { control *= 2.0; - } else if (flags & 0x2000) != 0 { + } else if (flags & pm_flags::JUMPING) != 0 { control *= walking_scale(ps); } diff --git a/crates/movement_iw4/src/jump.rs b/crates/movement_iw4/src/jump.rs index c95d3a5..2ba86b1 100644 --- a/crates/movement_iw4/src/jump.rs +++ b/crates/movement_iw4/src/jump.rs @@ -207,7 +207,7 @@ fn evaluate_gate( if (pm_flags & 0x40000) != 0 || context.time_since_jump <= 499 || (pm_flags & 0x400) != 0 - || (pm_flags & 4) != 0 + || (pm_flags & pm_flags::MANTLE) != 0 || pm_type >= 8 { return JumpCheckResult::NotEligible; diff --git a/crates/movement_iw4/src/ladder.rs b/crates/movement_iw4/src/ladder.rs index e98cf6b..68be9a4 100644 --- a/crates/movement_iw4/src/ladder.rs +++ b/crates/movement_iw4/src/ladder.rs @@ -306,7 +306,7 @@ fn ladder_cmd_scale(ps: &PlayerState, cmd: &UserCmd, spectate_speed_scale: f32) return 0.0; } let mut scale = (ps.speed as f32 * largest) / (magnitude * 127.0); - if (ps.pm_flags & 0x40) != 0 || ps.leanf != 0.0 { + if (ps.pm_flags & pm_flags::WALKING) != 0 || ps.leanf != 0.0 { scale *= 0.4; } scale *= match ps.pm_type { diff --git a/crates/movement_iw4/src/single.rs b/crates/movement_iw4/src/single.rs index 0f8df3a..915fa1f 100644 --- a/crates/movement_iw4/src/single.rs +++ b/crates/movement_iw4/src/single.rs @@ -138,7 +138,7 @@ pub fn pmove( && ps.pm_flags & pm_flags::LAST_STAND == 0 && ps.pm_time == 0 { - ps.pm_flags |= 0x2000; + ps.pm_flags |= pm_flags::JUMPING; ps.pm_time = 1800; } let reset_torso = stance_change != crate::StanceChange::Unchanged diff --git a/crates/movement_iw4/src/sprint.rs b/crates/movement_iw4/src/sprint.rs index 1dab31f..261c5c7 100644 --- a/crates/movement_iw4/src/sprint.rs +++ b/crates/movement_iw4/src/sprint.rs @@ -61,7 +61,7 @@ pub fn sprint_start_interfering_buttons( forward_minimum: i32, ) -> bool { let flags = ps.pm_flags; - if (flags & 8) != 0 + if (flags & pm_flags::LADDER) != 0 || sprint_forward_below_minimum(forwardmove, forward_minimum) || (buttons & 0xcc35) != 0 { @@ -94,7 +94,7 @@ pub fn sprint_ending_buttons( } fn weapon_state_admits_sprint(ps: &PlayerState, flags: u32, ending: bool) -> bool { - if !ending && (flags & 0x2000) != 0 && ps.pm_time == 0 { + if !ending && (flags & pm_flags::JUMPING) != 0 && ps.pm_time == 0 { return true; } let state = ps.weaponstate_primary; diff --git a/crates/movement_iw4/src/walk.rs b/crates/movement_iw4/src/walk.rs index 08e462a..b25c9b8 100644 --- a/crates/movement_iw4/src/walk.rs +++ b/crates/movement_iw4/src/walk.rs @@ -1,4 +1,4 @@ -use playerstate_iw4::{PlayerState, UserCmd}; +use playerstate_iw4::{PlayerState, UserCmd, pm_flags}; use crate::{ AirMoveContext, CmdScaleWalkContext, CollisionBackend, JumpCheckContext, JumpCheckResult, @@ -28,7 +28,7 @@ pub fn walk_move( bounds: MoveBounds, collision: &C, ) { - if (ps.pm_flags & 0x2000) != 0 { + if (ps.pm_flags & pm_flags::JUMPING) != 0 { prone_velocity_scale(ps); } @@ -144,7 +144,7 @@ fn walk_accel_scale(ps: &PlayerState, pml: &Pml) -> f32 { StanceSurface::Stand => ACCEL_STAND, } }; - if (ps.pm_flags & 0x80) != 0 { + if (ps.pm_flags & pm_flags::TIME_HARDLANDING) != 0 { accel *= SLOW_WALK_SCALE; } accel