From 2dea132d7ffe4f561b283b685bcde368db811137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Thu, 18 Apr 2024 00:16:37 +0200 Subject: [PATCH] more stuff --- enmacompat/src/area.rs | 20 ++++++++++++++++---- enmacompat/src/dist_cell.rs | 17 ++++++++++++----- enmacompat/src/lib.rs | 2 +- enmacompat/src/{non_guard.rs => sign.rs} | 12 ++++++------ 4 files changed, 35 insertions(+), 16 deletions(-) rename enmacompat/src/{non_guard.rs => sign.rs} (59%) diff --git a/enmacompat/src/area.rs b/enmacompat/src/area.rs index 0427737..0d987d4 100644 --- a/enmacompat/src/area.rs +++ b/enmacompat/src/area.rs @@ -1,8 +1,8 @@ use crate::{ - dist_cell::read_dist_cells, + dist_cell::{read_dist_cells, EnmaDistTableCell}, lane::EnmaLaneCell, - non_guard::EnmaNonGuardCell, section::{read_bank_cell, EnmaBankCell, EnmaSection}, + sign::EnmaSignCell, speed::EnmaSpeedCell, windows_pe::WindowsPEFile, zebra::EnmaZebraCell, @@ -72,6 +72,11 @@ pub fn read_area(file: &WindowsPEFile, address: u64) -> Result, pub zebra_right: Vec, pub gaps: Vec, - pub non_guard_left: Vec, - pub non_guard_right: Vec, + pub non_guard_left: Vec, + pub non_guard_right: Vec, pub speed: Vec, pub lane: Vec, + // TODO: other + pub non_lane_change: Vec, + pub signs: Vec, + pub notices: Vec, + pub watches: Vec, + pub on_comers: Vec, + // TODO: pillers } #[derive(BinRead, Debug)] diff --git a/enmacompat/src/dist_cell.rs b/enmacompat/src/dist_cell.rs index 788c52d..35a4cbf 100644 --- a/enmacompat/src/dist_cell.rs +++ b/enmacompat/src/dist_cell.rs @@ -1,6 +1,6 @@ -use binrw::BinRead; - use crate::windows_pe::WindowsPEFile; +use binrw::BinRead; +use serde::Serialize; pub trait EnmaDistCell { fn dist(&self) -> f32; @@ -17,13 +17,20 @@ impl EnmaDistCell for f32 { } } -impl EnmaDistCell for (f32, i32) { +#[derive(Debug, BinRead, Serialize)] +pub struct EnmaDistTableCell { + pub dist: f32, + pub unk1: f32, + pub flag: i32, +} + +impl EnmaDistCell for EnmaDistTableCell { fn dist(&self) -> f32 { - self.0 + self.dist } fn size() -> u64 { - 8 + 0xc } } diff --git a/enmacompat/src/lib.rs b/enmacompat/src/lib.rs index c707e4c..9d22e6c 100644 --- a/enmacompat/src/lib.rs +++ b/enmacompat/src/lib.rs @@ -2,8 +2,8 @@ pub mod area; pub mod dist_cell; pub mod lane; pub mod meta; -pub mod non_guard; pub mod section; +pub mod sign; pub mod speed; mod util; pub mod windows_pe; diff --git a/enmacompat/src/non_guard.rs b/enmacompat/src/sign.rs similarity index 59% rename from enmacompat/src/non_guard.rs rename to enmacompat/src/sign.rs index dfcc601..c09eb7a 100644 --- a/enmacompat/src/non_guard.rs +++ b/enmacompat/src/sign.rs @@ -4,19 +4,19 @@ use serde::Serialize; use crate::dist_cell::EnmaDistCell; #[derive(Debug, BinRead, Serialize)] -pub struct EnmaNonGuardCell { +pub struct EnmaSignCell { pub dist: f32, - pub unk1: f32, - // TODO: Is this a boolean? - pub guard: i32, + pub unk2: f32, + pub unk3: i32, + pub unk4: i32, } -impl EnmaDistCell for EnmaNonGuardCell { +impl EnmaDistCell for EnmaSignCell { fn dist(&self) -> f32 { self.dist } fn size() -> u64 { - 0xc + 0x10 } }