mirror of
https://codeberg.org/demostf/tf-demos-viewer.git
synced 2026-06-03 18:14:11 +02:00
heal target
This commit is contained in:
parent
cf1dcca7fd
commit
0aa4402b22
1 changed files with 19 additions and 5 deletions
22
src/state.rs
22
src/state.rs
|
|
@ -5,6 +5,7 @@ use tf_demo_parser::demo::data::game_state::{
|
||||||
use tf_demo_parser::demo::data::DemoTick;
|
use tf_demo_parser::demo::data::DemoTick;
|
||||||
use tf_demo_parser::demo::gamevent::GameEvent;
|
use tf_demo_parser::demo::gamevent::GameEvent;
|
||||||
use tf_demo_parser::demo::header::Header;
|
use tf_demo_parser::demo::header::Header;
|
||||||
|
use tf_demo_parser::demo::message::EntityId;
|
||||||
use tf_demo_parser::demo::parser::analyser::UserInfo;
|
use tf_demo_parser::demo::parser::analyser::UserInfo;
|
||||||
use tf_demo_parser::demo::parser::gamestateanalyser::{
|
use tf_demo_parser::demo::parser::gamestateanalyser::{
|
||||||
Building, Class, Dispenser, GameState, Kill, PlayerState as PlayerAliveState, Sentry, Team,
|
Building, Class, Dispenser, GameState, Kill, PlayerState as PlayerAliveState, Sentry, Team,
|
||||||
|
|
@ -203,7 +204,15 @@ impl PlayerState {
|
||||||
let combined_bytes = team_class_health.to_le_bytes();
|
let combined_bytes = team_class_health.to_le_bytes();
|
||||||
|
|
||||||
let class_bits = match self.class_data {
|
let class_bits = match self.class_data {
|
||||||
PlayerClassData::Medic { charge, medigun } => [charge, medigun as u8],
|
PlayerClassData::Medic {
|
||||||
|
charge,
|
||||||
|
medigun,
|
||||||
|
target,
|
||||||
|
} => {
|
||||||
|
let medigun_bits =
|
||||||
|
((medigun as u8) << 6) + target.map(u32::from).unwrap_or_default() as u8;
|
||||||
|
[charge, medigun_bits]
|
||||||
|
}
|
||||||
PlayerClassData::Spy {
|
PlayerClassData::Spy {
|
||||||
disguise_class,
|
disguise_class,
|
||||||
disguise_team,
|
disguise_team,
|
||||||
|
|
@ -258,10 +267,14 @@ impl PlayerState {
|
||||||
let mut cloaked = false;
|
let mut cloaked = false;
|
||||||
|
|
||||||
let class_data = match class {
|
let class_data = match class {
|
||||||
Class::Medic => PlayerClassData::Medic {
|
Class::Medic => {
|
||||||
|
let target_bits = class_bits[1] & 31;
|
||||||
|
PlayerClassData::Medic {
|
||||||
charge: class_bits[0],
|
charge: class_bits[0],
|
||||||
medigun: MedigunType::try_from(class_bits[1]).unwrap_or_default(),
|
medigun: MedigunType::try_from(class_bits[1] >> 6).unwrap_or_default(),
|
||||||
},
|
target: (target_bits > 0).then(|| EntityId::from(target_bits as u32)),
|
||||||
|
}
|
||||||
|
}
|
||||||
Class::Spy => {
|
Class::Spy => {
|
||||||
let disguise_team = Team::new(class_bits[0] >> 6);
|
let disguise_team = Team::new(class_bits[0] >> 6);
|
||||||
let disguise_class = Class::new((class_bits[0] >> 2) & 15);
|
let disguise_class = Class::new((class_bits[0] >> 2) & 15);
|
||||||
|
|
@ -353,6 +366,7 @@ fn test_player_packing_medic() {
|
||||||
class_data: PlayerClassData::Medic {
|
class_data: PlayerClassData::Medic {
|
||||||
charge: 52,
|
charge: 52,
|
||||||
medigun: MedigunType::Quickfix,
|
medigun: MedigunType::Quickfix,
|
||||||
|
target: Some(EntityId::from(8u32)),
|
||||||
},
|
},
|
||||||
ubered: true,
|
ubered: true,
|
||||||
cloaked: false,
|
cloaked: false,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue