peppi 2.1.2

Parser for Slippi replay files
Documentation
// This file is auto-generated by `gen/scripts/frames`. Do not edit.

//! Single-frame representation using normal structs.
//!
//! Transposing frame data is fairly slow. Work with Arrow arrays when possible.

use crate::game::Port;

#[derive(PartialEq, Debug)]
pub struct Data {
	pub pre: Pre,
	pub post: Post,
}

#[derive(PartialEq, Debug)]
pub struct PortData {
	pub port: Port,
	pub leader: Data,
	pub follower: Option<Data>,
}

#[derive(PartialEq, Debug, Default)]
pub struct Frame {
	pub id: i32,
	pub ports: Vec<PortData>,
	pub start: Option<Start>,
	pub end: Option<End>,
	pub items: Option<Vec<Item>>,
	pub fod_platforms: Option<Vec<FodPlatform>>,
	pub dreamland_whispys: Option<Vec<DreamlandWhispy>>,
	pub stadium_transformations: Option<Vec<StadiumTransformation>>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct DreamlandWhispy {
	pub direction: u8,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct End {
	pub latest_finalized_frame: Option<i32>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct FodPlatform {
	pub platform: u8,
	pub height: f32,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Item {
	pub r#type: u16,
	pub state: u8,
	pub direction: f32,
	pub velocity: Velocity,
	pub position: Position,
	pub damage: u16,
	pub timer: f32,
	pub id: u32,
	pub misc: Option<ItemMisc>,
	pub owner: Option<i8>,
	pub instance_id: Option<u16>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct ItemMisc(pub u8, pub u8, pub u8, pub u8);

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Position {
	pub x: f32,
	pub y: f32,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Post {
	pub character: u8,
	pub state: u16,
	pub position: Position,
	pub direction: f32,
	pub percent: f32,
	pub shield: f32,
	pub last_attack_landed: u8,
	pub combo_count: u8,
	pub last_hit_by: u8,
	pub stocks: u8,
	pub state_age: Option<f32>,
	pub state_flags: Option<StateFlags>,
	pub misc_as: Option<f32>,
	pub airborne: Option<u8>,
	pub ground: Option<u16>,
	pub jumps: Option<u8>,
	pub l_cancel: Option<u8>,
	pub hurtbox_state: Option<u8>,
	pub velocities: Option<Velocities>,
	pub hitlag: Option<f32>,
	pub animation_index: Option<u32>,
	pub last_hit_by_instance: Option<u16>,
	pub instance_id: Option<u16>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Pre {
	pub random_seed: u32,
	pub state: u16,
	pub position: Position,
	pub direction: f32,
	pub joystick: Position,
	pub cstick: Position,
	pub triggers: f32,
	pub buttons: u32,
	pub buttons_physical: u16,
	pub triggers_physical: TriggersPhysical,
	pub raw_analog_x: Option<i8>,
	pub percent: Option<f32>,
	pub raw_analog_y: Option<i8>,
	pub raw_analog_cstick_x: Option<i8>,
	pub raw_analog_cstick_y: Option<i8>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct StadiumTransformation {
	pub event: u16,
	pub r#type: u16,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Start {
	pub random_seed: u32,
	pub scene_frame_counter: Option<u32>,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct StateFlags(pub u8, pub u8, pub u8, pub u8, pub u8);

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct TriggersPhysical {
	pub l: f32,
	pub r: f32,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Velocities {
	pub self_x_air: f32,
	pub self_y: f32,
	pub knockback_x: f32,
	pub knockback_y: f32,
	pub self_x_ground: f32,
}

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Velocity {
	pub x: f32,
	pub y: f32,
}