From 4ad3e0ac5f6ff59214157f50e4cecbf44c0d8dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Wed, 17 Apr 2024 23:59:41 +0200 Subject: [PATCH] non-guard --- enmacompat/src/area.rs | 7 +++++-- enmacompat/src/dist_cell.rs | 10 ++++++++++ enmacompat/src/lib.rs | 1 + enmacompat/src/non_guard.rs | 22 ++++++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 enmacompat/src/non_guard.rs diff --git a/enmacompat/src/area.rs b/enmacompat/src/area.rs index c0d531f..0427737 100644 --- a/enmacompat/src/area.rs +++ b/enmacompat/src/area.rs @@ -1,6 +1,7 @@ use crate::{ dist_cell::read_dist_cells, lane::EnmaLaneCell, + non_guard::EnmaNonGuardCell, section::{read_bank_cell, EnmaBankCell, EnmaSection}, speed::EnmaSpeedCell, windows_pe::WindowsPEFile, @@ -67,6 +68,8 @@ pub fn read_area(file: &WindowsPEFile, address: u64) -> Result, pub zebra_right: Vec, pub gaps: Vec, - // TODO: Non Guard Left - // TODO: Non Guard Right + pub non_guard_left: Vec, + pub non_guard_right: Vec, pub speed: Vec, pub lane: Vec, } diff --git a/enmacompat/src/dist_cell.rs b/enmacompat/src/dist_cell.rs index 02df6e2..788c52d 100644 --- a/enmacompat/src/dist_cell.rs +++ b/enmacompat/src/dist_cell.rs @@ -17,6 +17,16 @@ impl EnmaDistCell for f32 { } } +impl EnmaDistCell for (f32, i32) { + fn dist(&self) -> f32 { + self.0 + } + + fn size() -> u64 { + 8 + } +} + pub fn read_dist_cells<'a, T>( file: &WindowsPEFile, mut address: u64, diff --git a/enmacompat/src/lib.rs b/enmacompat/src/lib.rs index a625e86..c707e4c 100644 --- a/enmacompat/src/lib.rs +++ b/enmacompat/src/lib.rs @@ -2,6 +2,7 @@ pub mod area; pub mod dist_cell; pub mod lane; pub mod meta; +pub mod non_guard; pub mod section; pub mod speed; mod util; diff --git a/enmacompat/src/non_guard.rs b/enmacompat/src/non_guard.rs new file mode 100644 index 0000000..dfcc601 --- /dev/null +++ b/enmacompat/src/non_guard.rs @@ -0,0 +1,22 @@ +use binrw::BinRead; +use serde::Serialize; + +use crate::dist_cell::EnmaDistCell; + +#[derive(Debug, BinRead, Serialize)] +pub struct EnmaNonGuardCell { + pub dist: f32, + pub unk1: f32, + // TODO: Is this a boolean? + pub guard: i32, +} + +impl EnmaDistCell for EnmaNonGuardCell { + fn dist(&self) -> f32 { + self.dist + } + + fn size() -> u64 { + 0xc + } +}