diff --git a/src/v0.rs b/src/v0.rs index 1d4610a..9dac788 100644 --- a/src/v0.rs +++ b/src/v0.rs @@ -257,27 +257,12 @@ pub struct GravityEvent{ #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] -pub enum RunEventType{ - #[brw(magic=0u32)] - Prepare, - #[brw(magic=1u32)] - Start, - #[brw(magic=2u32)] - Finish, - #[brw(magic=3u32)] - Clear, - #[brw(magic=4u32)] - Flag, - #[brw(magic=5u32)] - LoadState, - #[brw(magic=6u32)] - SaveState, -} +pub struct ModeID(pub u32); #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] pub enum ModeSpec{ - Exactly(u32), + Exactly(ModeID), #[brw(magic=-1i32)] All, #[brw(magic=-2i32)] @@ -288,6 +273,39 @@ pub enum ModeSpec{ #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] +pub enum Style{ + #[brw(magic=1u32)] + Autohop, + #[brw(magic=2u32)] + Scroll, + #[brw(magic=3u32)] + Sideways, + #[brw(magic=4u32)] + HalfSideways, + #[brw(magic=5u32)] + WOnly, + #[brw(magic=6u32)] + AOnly, + #[brw(magic=7u32)] + Backwards, + #[brw(magic=8u32)] + Faste, + #[brw(magic=14u32)] + LowGravity, + #[brw(magic=501u32)] + Fly, + #[brw(magic=502u32)] + FlySustain, + #[brw(magic=503u32)] + Rocket, + #[brw(magic=504u32)] + Style3DStrafe, + #[brw(magic=505u32)] + RocketStrafe, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] pub enum FlagReason{ #[brw(magic=0u32)] Anticheat, @@ -309,17 +327,57 @@ pub enum FlagReason{ Teleport, #[brw(magic=9u32)] Practice, - #[brw(magic=b"data")] - None, } #[binrw] #[brw(little)] #[derive(Debug,Clone)] -pub struct RunEvent{ - pub run_event_type:RunEventType, +pub struct RunEventPrepare{ + pub mode:ModeID, + pub style:Style, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventZone{ + pub mode:ModeID, + #[br(temp)] + #[bw(ignore)] + #[brw(magic=b"data")] + _magic:(), +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventFlag{ pub mode:ModeSpec, pub flag_reason:FlagReason, } +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventPractice{ + pub mode:ModeSpec, + pub state_id:u32, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub enum RunEvent{ + #[brw(magic=0u32)] + Prepare(RunEventPrepare), + #[brw(magic=1u32)] + Start(RunEventZone), + #[brw(magic=2u32)] + Finish(RunEventZone), + #[brw(magic=3u32)] + Clear(RunEventZone), + #[brw(magic=4u32)] + Flag(RunEventFlag), + #[brw(magic=5u32)] + LoadState(RunEventPractice), + #[brw(magic=6u32)] + SaveState(RunEventPractice), +} // camera #[binrw]