1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 10:14:06 +02:00

formatting

This commit is contained in:
Robin Appelman 2025-07-12 22:53:22 +02:00
commit 2ab3e91774
4 changed files with 41 additions and 36 deletions

View file

@ -12,8 +12,7 @@ pub fn handle_sentry_entity(
entity: &PacketEntity, entity: &PacketEntity,
parser_state: &ParserState, parser_state: &ParserState,
) { ) {
const ROTATION: SendPropIdentifier = const ROTATION: SendPropIdentifier = SendPropIdentifier::new("DT_BaseEntity", "m_angRotation");
SendPropIdentifier::new("DT_BaseEntity", "m_angRotation");
const ANGLE: SendPropIdentifier = const ANGLE: SendPropIdentifier =
SendPropIdentifier::new("DT_TFNonLocalPlayerExclusive", "m_angEyeAngles[1]"); SendPropIdentifier::new("DT_TFNonLocalPlayerExclusive", "m_angEyeAngles[1]");
const MINI: SendPropIdentifier = SendPropIdentifier::new("DT_BaseObject", "m_bMiniBuilding"); const MINI: SendPropIdentifier = SendPropIdentifier::new("DT_BaseObject", "m_bMiniBuilding");
@ -28,8 +27,10 @@ pub fn handle_sentry_entity(
const SHIELD: SendPropIdentifier = const SHIELD: SendPropIdentifier =
SendPropIdentifier::new("DT_ObjectSentrygun", "m_nShieldLevel"); SendPropIdentifier::new("DT_ObjectSentrygun", "m_nShieldLevel");
#[allow(dead_code)] #[allow(dead_code)]
const POSE_PARAMETER_PITCH: SendPropIdentifier = SendPropIdentifier::new("m_flPoseParameter", "000"); const POSE_PARAMETER_PITCH: SendPropIdentifier =
const POSE_PARAMETER_YAW: SendPropIdentifier = SendPropIdentifier::new("m_flPoseParameter", "001"); SendPropIdentifier::new("m_flPoseParameter", "000");
const POSE_PARAMETER_YAW: SendPropIdentifier =
SendPropIdentifier::new("m_flPoseParameter", "001");
if entity.update_type == UpdateType::Delete { if entity.update_type == UpdateType::Delete {
state.remove_building(entity.entity_index); state.remove_building(entity.entity_index);

View file

@ -1,19 +1,21 @@
use std::str::FromStr;
use crate::demo::data::game_state::{GameState, Handle, PlayerClassData, PlayerState}; use crate::demo::data::game_state::{GameState, Handle, PlayerClassData, PlayerState};
use crate::demo::message::{EntityId, PacketEntity}; use crate::demo::message::{EntityId, PacketEntity};
use crate::demo::parser::analyser::{Class, Team}; use crate::demo::parser::analyser::{Class, Team};
use crate::demo::sendprop::SendPropIdentifier; use crate::demo::sendprop::SendPropIdentifier;
use crate::demo::vector::{Vector, VectorXY}; use crate::demo::vector::{Vector, VectorXY};
use crate::ParserState; use crate::ParserState;
use std::str::FromStr;
pub fn handle_player_entity(state: &mut GameState, entity: &PacketEntity, parser_state: &ParserState) { pub fn handle_player_entity(
state: &mut GameState,
entity: &PacketEntity,
parser_state: &ParserState,
) {
let player = state.get_or_create_player(entity.entity_index); let player = state.get_or_create_player(entity.entity_index);
const OUTER: SendPropIdentifier = const OUTER: SendPropIdentifier = SendPropIdentifier::new("DT_AttributeContainer", "m_hOuter");
SendPropIdentifier::new("DT_AttributeContainer", "m_hOuter");
const HEALTH_PROP: SendPropIdentifier = const HEALTH_PROP: SendPropIdentifier = SendPropIdentifier::new("DT_BasePlayer", "m_iHealth");
SendPropIdentifier::new("DT_BasePlayer", "m_iHealth");
const MAX_HEALTH_PROP: SendPropIdentifier = const MAX_HEALTH_PROP: SendPropIdentifier =
SendPropIdentifier::new("DT_BasePlayer", "m_iMaxHealth"); SendPropIdentifier::new("DT_BasePlayer", "m_iMaxHealth");
const LIFE_STATE_PROP: SendPropIdentifier = const LIFE_STATE_PROP: SendPropIdentifier =
@ -71,9 +73,7 @@ pub fn handle_player_entity(state: &mut GameState, entity: &PacketEntity, parser
OUTER => { OUTER => {
player.handle = Handle::try_from(&prop.value).unwrap_or_default(); player.handle = Handle::try_from(&prop.value).unwrap_or_default();
} }
HEALTH_PROP => { HEALTH_PROP => player.health = i64::try_from(&prop.value).unwrap_or_default() as u16,
player.health = i64::try_from(&prop.value).unwrap_or_default() as u16
}
MAX_HEALTH_PROP => { MAX_HEALTH_PROP => {
player.max_health = i64::try_from(&prop.value).unwrap_or_default() as u16 player.max_health = i64::try_from(&prop.value).unwrap_or_default() as u16
} }
@ -145,8 +145,7 @@ pub fn handle_player_entity(state: &mut GameState, entity: &PacketEntity, parser
} }
DISGUISE_CLASS => { DISGUISE_CLASS => {
if let PlayerClassData::Spy { disguise_class, .. } = &mut player.class_data { if let PlayerClassData::Spy { disguise_class, .. } = &mut player.class_data {
*disguise_class = *disguise_class = Class::new(i64::try_from(&prop.value).unwrap_or_default());
Class::new(i64::try_from(&prop.value).unwrap_or_default());
} }
} }
CLOAK_LEVEL => { CLOAK_LEVEL => {
@ -159,7 +158,11 @@ pub fn handle_player_entity(state: &mut GameState, entity: &PacketEntity, parser
} }
} }
pub fn handle_player_resource(state: &mut GameState, entity: &PacketEntity, parser_state: &ParserState) { pub fn handle_player_resource(
state: &mut GameState,
entity: &PacketEntity,
parser_state: &ParserState,
) {
for prop in entity.props(parser_state) { for prop in entity.props(parser_state) {
if let Some((table_name, prop_name)) = prop.identifier.names() { if let Some((table_name, prop_name)) = prop.identifier.names() {
if let Ok(player_id) = u32::from_str(prop_name.as_str()) { if let Ok(player_id) = u32::from_str(prop_name.as_str()) {
@ -171,25 +174,21 @@ pub fn handle_player_resource(state: &mut GameState, entity: &PacketEntity, pars
{ {
match table_name.as_str() { match table_name.as_str() {
"m_iTeam" => { "m_iTeam" => {
player.team = player.team = Team::new(i64::try_from(&prop.value).unwrap_or_default())
Team::new(i64::try_from(&prop.value).unwrap_or_default())
} }
"m_iMaxHealth" => { "m_iMaxHealth" => {
player.max_health = player.max_health =
i64::try_from(&prop.value).unwrap_or_default() as u16 i64::try_from(&prop.value).unwrap_or_default() as u16
} }
"m_iPlayerClass" => { "m_iPlayerClass" => {
let class = let class = Class::new(i64::try_from(&prop.value).unwrap_or_default());
Class::new(i64::try_from(&prop.value).unwrap_or_default());
if player.class != class { if player.class != class {
player.class = class; player.class = class;
player.class_data = PlayerClassData::default_for_class(class); player.class_data = PlayerClassData::default_for_class(class);
} }
} }
"m_iChargeLevel" => { "m_iChargeLevel" => {
if let PlayerClassData::Medic { charge, .. } = if let PlayerClassData::Medic { charge, .. } = &mut player.class_data {
&mut player.class_data
{
*charge = i64::try_from(&prop.value).unwrap_or_default() as u8 *charge = i64::try_from(&prop.value).unwrap_or_default() as u8
} }
} }
@ -202,4 +201,4 @@ pub fn handle_player_resource(state: &mut GameState, entity: &PacketEntity, pars
} }
} }
} }
} }

View file

@ -6,7 +6,12 @@ use crate::demo::sendprop::SendPropIdentifier;
use crate::demo::vector::Vector; use crate::demo::vector::Vector;
use crate::ParserState; use crate::ParserState;
pub fn handle_projectile_entity(state: &mut GameState, entity: &PacketEntity, parser_state: &ParserState, class_names: &[ServerClassName]) { pub fn handle_projectile_entity(
state: &mut GameState,
entity: &PacketEntity,
parser_state: &ParserState,
class_names: &[ServerClassName],
) {
let Some(class_name) = class_names.get(usize::from(entity.server_class)) else { let Some(class_name) = class_names.get(usize::from(entity.server_class)) else {
return; return;
}; };
@ -44,9 +49,7 @@ pub fn handle_projectile_entity(state: &mut GameState, entity: &PacketEntity, pa
let projectile = state let projectile = state
.projectiles .projectiles
.entry(entity.entity_index) .entry(entity.entity_index)
.or_insert_with(|| { .or_insert_with(|| Projectile::new(entity.entity_index, entity.server_class, class_name));
Projectile::new(entity.entity_index, entity.server_class, class_name)
});
// todo: bounds for grenades // todo: bounds for grenades
@ -70,8 +73,7 @@ pub fn handle_projectile_entity(state: &mut GameState, entity: &PacketEntity, pa
} }
PIPE_TYPE => { PIPE_TYPE => {
let pipe_type = PipeType::new(i64::try_from(&prop.value).unwrap_or_default()); let pipe_type = PipeType::new(i64::try_from(&prop.value).unwrap_or_default());
if let Some(class_name) = class_names.get(usize::from(entity.server_class)) if let Some(class_name) = class_names.get(usize::from(entity.server_class)) {
{
let ty = ProjectileType::new(class_name, Some(pipe_type)); let ty = ProjectileType::new(class_name, Some(pipe_type));
projectile.ty = ty; projectile.ty = ty;
} }
@ -87,4 +89,4 @@ pub fn handle_projectile_entity(state: &mut GameState, entity: &PacketEntity, pa
_ => {} _ => {}
} }
} }
} }

View file

@ -1,12 +1,15 @@
use std::collections::HashMap;
use crate::demo::data::attributes::{has_attribute, Attribute}; use crate::demo::data::attributes::{has_attribute, Attribute};
use crate::demo::data::game_state::{GameState, Handle, MedigunType, PlayerClassData}; use crate::demo::data::game_state::{GameState, Handle, MedigunType, PlayerClassData};
use crate::demo::message::{EntityId, PacketEntity, UpdateType}; use crate::demo::message::{EntityId, PacketEntity, UpdateType};
use crate::demo::sendprop::SendPropIdentifier; use crate::demo::sendprop::SendPropIdentifier;
use std::collections::HashMap;
pub fn handle_medigun_entity(state: &mut GameState, entity: &PacketEntity, outer_map_rev: &HashMap<EntityId, Handle>) { pub fn handle_medigun_entity(
const OUTER: SendPropIdentifier = state: &mut GameState,
SendPropIdentifier::new("DT_AttributeContainer", "m_hOuter"); entity: &PacketEntity,
outer_map_rev: &HashMap<EntityId, Handle>,
) {
const OUTER: SendPropIdentifier = SendPropIdentifier::new("DT_AttributeContainer", "m_hOuter");
const TARGET: SendPropIdentifier = const TARGET: SendPropIdentifier =
SendPropIdentifier::new("DT_WeaponMedigun", "m_hHealingTarget"); SendPropIdentifier::new("DT_WeaponMedigun", "m_hHealingTarget");
@ -50,4 +53,4 @@ pub fn handle_medigun_entity(state: &mut GameState, entity: &PacketEntity, outer
} }
} }
} }
} }