update bot player and collect recoverable errors
This commit is contained in:
5
Cargo.lock
generated
5
Cargo.lock
generated
@@ -968,14 +968,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strafesnet_roblox_bot_player"
|
name = "strafesnet_roblox_bot_player"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
||||||
checksum = "6268924ff0421cfa17ad6a74d74d308ca3ad442773e86e61f00f014e7759b6fb"
|
checksum = "735daf9d81e5ff19fea11256b5e70f644bcff44cc04bd2b648823b11e3915d0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glam",
|
"glam",
|
||||||
"strafesnet_common",
|
"strafesnet_common",
|
||||||
"strafesnet_graphics",
|
"strafesnet_graphics",
|
||||||
"strafesnet_roblox_bot_file",
|
"strafesnet_roblox_bot_file",
|
||||||
|
"thiserror",
|
||||||
"wgpu",
|
"wgpu",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ edition = "2024"
|
|||||||
futures = "0.3.31"
|
futures = "0.3.31"
|
||||||
strafesnet_common = { version = "0.8.7", registry = "strafesnet" }
|
strafesnet_common = { version = "0.8.7", registry = "strafesnet" }
|
||||||
strafesnet_roblox_bot_file = { version = "0.9.4", registry = "strafesnet" }
|
strafesnet_roblox_bot_file = { version = "0.9.4", registry = "strafesnet" }
|
||||||
strafesnet_roblox_bot_player = { version = "0.3.0", registry = "strafesnet" }
|
strafesnet_roblox_bot_player = { version = "0.4.0", registry = "strafesnet" }
|
||||||
tokio = { version = "1.48.0", features = ["macros", "rt-multi-thread", "fs"] }
|
tokio = { version = "1.48.0", features = ["macros", "rt-multi-thread", "fs"] }
|
||||||
tokio-stream = { version = "0.1.17", features = ["fs"] }
|
tokio-stream = { version = "0.1.17", features = ["fs"] }
|
||||||
|
|||||||
30
src/main.rs
30
src/main.rs
@@ -38,6 +38,12 @@ async fn main()->Result<(),Error>{
|
|||||||
return Err(Error::InvalidArgs);
|
return Err(Error::InvalidArgs);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
struct State{
|
||||||
|
count:usize,
|
||||||
|
errors:Vec<(PathBuf,strafesnet_roblox_bot_player::bot::Error)>,
|
||||||
|
}
|
||||||
|
|
||||||
let available_parallelism=std::thread::available_parallelism()?.get();
|
let available_parallelism=std::thread::available_parallelism()?.get();
|
||||||
let read_dir=tokio::fs::read_dir(dir).await?;
|
let read_dir=tokio::fs::read_dir(dir).await?;
|
||||||
let tally=tokio_stream::wrappers::ReadDirStream::new(read_dir).map(|dir_entry|async move{
|
let tally=tokio_stream::wrappers::ReadDirStream::new(read_dir).map(|dir_entry|async move{
|
||||||
@@ -51,7 +57,10 @@ async fn main()->Result<(),Error>{
|
|||||||
let (path,file)=result?;
|
let (path,file)=result?;
|
||||||
let result=tokio::task::spawn_blocking(move||{
|
let result=tokio::task::spawn_blocking(move||{
|
||||||
let block=v0::read_all_to_block(std::io::Cursor::new(file.as_slice())).map_err(PlaybackError::Decode)?;
|
let block=v0::read_all_to_block(std::io::Cursor::new(file.as_slice())).map_err(PlaybackError::Decode)?;
|
||||||
let bot=strafesnet_roblox_bot_player::bot::CompleteBot::new(block);
|
let bot=match strafesnet_roblox_bot_player::bot::CompleteBot::new(block){
|
||||||
|
Ok(bot)=>bot,
|
||||||
|
Err(e)=>return Ok(Some(e)),
|
||||||
|
};
|
||||||
let mut head=strafesnet_roblox_bot_player::head::PlaybackHead::new(&bot,strafesnet_common::session::Time::ZERO);
|
let mut head=strafesnet_roblox_bot_player::head::PlaybackHead::new(&bot,strafesnet_common::session::Time::ZERO);
|
||||||
if let Err(e)=std::panic::catch_unwind(move||{
|
if let Err(e)=std::panic::catch_unwind(move||{
|
||||||
head.get_position_angles(&bot,strafesnet_common::session::Time::ZERO);
|
head.get_position_angles(&bot,strafesnet_common::session::Time::ZERO);
|
||||||
@@ -61,7 +70,7 @@ async fn main()->Result<(),Error>{
|
|||||||
println!("{e:?}");
|
println!("{e:?}");
|
||||||
return Err(PlaybackError::Panic);
|
return Err(PlaybackError::Panic);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(None)
|
||||||
}).await?;
|
}).await?;
|
||||||
match result{
|
match result{
|
||||||
Err(err)=>Err(Error::BotFile{path,err}),
|
Err(err)=>Err(Error::BotFile{path,err}),
|
||||||
@@ -69,12 +78,21 @@ async fn main()->Result<(),Error>{
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.buffer_unordered(available_parallelism)
|
.buffer_unordered(available_parallelism)
|
||||||
.try_fold(0usize,async|mut state,(path,())|{
|
.try_fold(State::default(),async|mut state,(path,bot_error)|{
|
||||||
state+=1;
|
state.count+=1;
|
||||||
// state.accumulate(&path,&block);
|
// state.accumulate(&path,&block);
|
||||||
println!("{:07} {:?}",state,path.file_name());
|
match bot_error{
|
||||||
|
None=>println!("{:07} {:?}",state.count,path.file_name()),
|
||||||
|
Some(e)=>{
|
||||||
|
println!("{:07} {:?} {}",state.count,path.file_name(),e);
|
||||||
|
state.errors.push((path,e));
|
||||||
|
},
|
||||||
|
};
|
||||||
Ok(state)
|
Ok(state)
|
||||||
}).await?;
|
}).await?;
|
||||||
println!("{}",tally);
|
println!("{}",tally.count);
|
||||||
|
for (path,e) in tally.errors{
|
||||||
|
println!("error: {:?} {}",path.file_name(),e);
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user