wip convert

This commit is contained in:
2026-02-13 09:54:14 -08:00
parent 607929a471
commit 822b7e0a24
2 changed files with 113 additions and 0 deletions

112
src/convert.rs Normal file
View File

@@ -0,0 +1,112 @@
use crate::v1 as latest;
pub fn from_v0(block_v0:&crate::v0::Block)->latest::Block{
let input_events=block_v0.input_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:latest::InputEvent{
game_controls:latest::GameControls::from_bits(event.event.game_controls.bits()).unwrap(),
mouse_pos:latest::Vector2{x:event.event.mouse_pos.x,y:event.event.mouse_pos.y},
},
}
}).collect();
let output_events=block_v0.output_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:latest::OutputEvent{
tick_info:latest::TickInfo::from_bits(event.event.tick_info.bits()).unwrap(),
angles:latest::Vector3{x:event.event.angles.x,y:event.event.angles.y,z:event.event.angles.z},
position:latest::Vector3{x:event.event.position.x,y:event.event.position.y,z:event.event.position.z},
velocity:latest::Vector3{x:event.event.velocity.x,y:event.event.velocity.y,z:event.event.velocity.z},
acceleration:latest::Vector3{x:event.event.acceleration.x,y:event.event.acceleration.y,z:event.event.acceleration.z},
},
}
}).collect();
let sound_events=block_v0.sound_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:latest::SoundEvent{
sound_type:match event.event.sound_type{
crate::v0::SoundType::TrackGround=>latest::SoundType::TrackGround,
crate::v0::SoundType::TrackLadder=>latest::SoundType::TrackLadder,
crate::v0::SoundType::TrackWater=>latest::SoundType::TrackWater,
crate::v0::SoundType::TrackAir=>latest::SoundType::TrackAir,
crate::v0::SoundType::JumpGround=>latest::SoundType::JumpGround,
crate::v0::SoundType::JumpLadder=>latest::SoundType::JumpLadder,
crate::v0::SoundType::SmashGround=>latest::SoundType::SmashGround,
crate::v0::SoundType::SmashWall=>latest::SoundType::SmashWall,
},
material:event.event.material,
},
}
}).collect();
let world_events=block_v0.world_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:match event.event{
crate::v0::WorldEvent::Reset(world_event_reset)=>latest::WorldEvent::Reset(latest::WorldEventReset{
position:latest::Vector3{x:world_event_reset.position.x,y:world_event_reset.position.y,z:world_event_reset.position.z},
}),
crate::v0::WorldEvent::Button(world_event_button)=>latest::WorldEvent::Button(latest::WorldEventButton{
button_id:world_event_button.button_id,
}),
crate::v0::WorldEvent::SetTime(world_event_set_time)=>latest::WorldEvent::SetTime(latest::WorldEventSetTime{
time:latest::Time::new(world_event_set_time.time).unwrap(),
}),
crate::v0::WorldEvent::SetPaused(world_event_set_paused)=>latest::WorldEvent::SetPaused(latest::WorldEventSetPaused{
paused:world_event_set_paused.paused,
}),
},
}
}).collect();
let gravity_events=block_v0.gravity_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:latest::GravityEvent{
gravity:latest::Vector3{x:event.event.gravity.x,y:event.event.gravity.y,z:event.event.gravity.z},
},
}
}).collect();
// need to generate a setting event for the style in RunPrepare
let run_events=block_v0.run_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:match event.event{
crate::v0::RunEvent::Prepare(run_event_prepare)=>todo!(),
crate::v0::RunEvent::Start(run_event_zone)=>todo!(),
crate::v0::RunEvent::Finish(run_event_zone)=>todo!(),
crate::v0::RunEvent::Clear(run_event_clear)=>todo!(),
crate::v0::RunEvent::Flag(run_event_flag)=>todo!(),
crate::v0::RunEvent::LoadState(run_event_practice)=>todo!(),
crate::v0::RunEvent::SaveState(run_event_practice)=>todo!(),
},
}
}).collect();
let camera_events=block_v0.camera_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:match event.event{
crate::v0::CameraEvent::CameraPunch(camera_event_camera_punch)=>todo!(),
crate::v0::CameraEvent::Transform(camera_event_transform)=>todo!(),
},
}
}).collect();
let setting_events=block_v0.setting_events.iter().map(|event|{
latest::Timed{
time:latest::Time::new(event.time).unwrap(),
event:match event.event{
crate::v0::SettingEvent::(camera_event_camera_punch)=>todo!(),
},
}
}).collect();
latest::Block{
input_events,
output_events,
sound_events,
world_events,
gravity_events,
run_events,
camera_events,
setting_events,
}
}

View File

@@ -2,6 +2,7 @@ pub use binrw::Error as BinrwError;
pub mod v0;
pub mod v1;
pub mod convert;
#[cfg(test)]
mod tests;