diff options
author | metamuffin <metamuffin@disroot.org> | 2025-09-11 23:59:43 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-09-11 23:59:43 +0200 |
commit | 732850dbde6788c7585ad0152e2ef6c17da79bfc (patch) | |
tree | 1df1d0ff5577e066752e2fbd0b1cc29f1781137f /server/replaytool/src/main.rs | |
parent | 2b1d79588241fc9afa3ef9ddc3b20b26b8ce2433 (diff) | |
download | hurrycurry-732850dbde6788c7585ad0152e2ef6c17da79bfc.tar hurrycurry-732850dbde6788c7585ad0152e2ef6c17da79bfc.tar.bz2 hurrycurry-732850dbde6788c7585ad0152e2ef6c17da79bfc.tar.zst |
add render subcommand to replaytool
Diffstat (limited to 'server/replaytool/src/main.rs')
-rw-r--r-- | server/replaytool/src/main.rs | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/server/replaytool/src/main.rs b/server/replaytool/src/main.rs index 5ff821cc..40496786 100644 --- a/server/replaytool/src/main.rs +++ b/server/replaytool/src/main.rs @@ -15,10 +15,13 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +#![feature(exit_status_error)] pub mod record; +pub mod render; pub mod replay; +use crate::{record::record, render::render, replay::replay}; use clap::Parser; use hurrycurry_protocol::PacketC; use log::{info, warn, LevelFilter}; @@ -29,8 +32,6 @@ use std::{ }; use tokio::{net::TcpListener, time::sleep}; -use crate::{record::record, replay::replay}; - #[derive(Parser)] enum Args { /// Connects as a spectator and saves the protocol packets for replay @@ -43,6 +44,18 @@ enum Args { }, /// Starts a local server that replays previously recorded sessions Replay { input: PathBuf }, + /// Runs a replay server and the client in movie mode to record that replay + Render { + /// Replay file path + input: PathBuf, + /// Output video file path passed to godot (must end in either .avi for MJPEG or .png for PNG sequence) + output: PathBuf, + #[arg(short = 'r', long, default_value = "30")] + framerate: usize, + /// Render without display server; Requires wlheadless-run and mutter + #[arg(short = 'H', long)] + headless: bool, + }, } #[derive(Serialize, Deserialize)] @@ -99,6 +112,14 @@ async fn main() -> anyhow::Result<()> { replay(&ws_listener, &input).await?; } } + Args::Render { + input, + output, + framerate, + headless, + } => { + render(&input, &output, framerate, headless).await?; + } } Ok(()) } |