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

gamestate api bits

This commit is contained in:
Robin Appelman 2019-12-22 18:34:05 +01:00
commit fb166e0808
3 changed files with 18 additions and 10 deletions

View file

@ -2,7 +2,7 @@ use crate::demo::gameevent_gen::GameEventType::PlayerSappedObject;
use crate::demo::message::packetentities::{EntityId, PacketEntity}; use crate::demo::message::packetentities::{EntityId, PacketEntity};
use crate::demo::message::Message; use crate::demo::message::Message;
use crate::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass, ServerClassName}; use crate::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass, ServerClassName};
use crate::demo::parser::analyser::{Class, Team, UserId}; pub use crate::demo::parser::analyser::{Class, Team, UserId};
use crate::demo::parser::handler::BorrowMessageHandler; use crate::demo::parser::handler::BorrowMessageHandler;
use crate::demo::parser::MessageHandler; use crate::demo::parser::MessageHandler;
use crate::demo::vector::{Vector, VectorXY}; use crate::demo::vector::{Vector, VectorXY};
@ -35,13 +35,13 @@ impl PlayerState {
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Player { pub struct Player {
entity: EntityId, entity: EntityId,
position: Vector, pub position: Vector,
health: u16, pub health: u16,
max_health: u16, pub max_health: u16,
class: Class, pub class: Class,
team: Team, pub team: Team,
view_angle: f32, pub view_angle: f32,
state: PlayerState, pub state: PlayerState,
} }
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
@ -96,8 +96,8 @@ pub enum Building {
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)] #[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
pub struct GameState { pub struct GameState {
players: Vec<Player>, pub players: Vec<Player>,
buildings: Vec<Building>, pub buildings: Vec<Building>,
} }
impl GameState { impl GameState {

View file

@ -83,6 +83,8 @@ impl<A: MessageHandler> DemoParser<A> {
Ok((header, ticker.into_state())) Ok((header, ticker.into_state()))
} }
/// A Ticker provides a way to step trough the demo packet by packet
/// while allowing to see the intermediate states
pub fn ticker(mut self) -> Result<(Header, DemoTicker<A>)> { pub fn ticker(mut self) -> Result<(Header, DemoTicker<A>)> {
let header = Header::read(&mut self.stream)?; let header = Header::read(&mut self.stream)?;
let ticker = DemoTicker { let ticker = DemoTicker {

View file

@ -28,3 +28,9 @@ impl PartialEq for VectorXY {
(self.x - other.x < 0.001) && (self.y - other.y < 0.001) (self.x - other.x < 0.001) && (self.y - other.y < 0.001)
} }
} }
impl From<Vector> for VectorXY {
fn from(vec: Vector) -> Self {
VectorXY { x: vec.x, y: vec.y }
}
}