mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
formatting
This commit is contained in:
parent
8da61fb3d8
commit
2ab3e91774
4 changed files with 41 additions and 36 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue