aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrubbelkopp <[email protected]>2025-07-25 12:20:17 +0200
committerStrubbelkopp <[email protected]>2025-07-25 12:20:17 +0200
commit5dda54ecd49a43e79a52ded2a0fc0f1017689197 (patch)
tree9f0fca801612521850eb17c34086246acedae2f0
parent473d5d0173b80917692bb316d8c681be16355510 (diff)
downloadmikusays-c-5dda54ecd49a43e79a52ded2a0fc0f1017689197.tar.gz
mikusays-c-5dda54ecd49a43e79a52ded2a0fc0f1017689197.zip
Add optional argument to select a specific style
-rw-r--r--src/main.rs13
-rw-r--r--src/mikuart.rs4
2 files changed, 12 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index d6313fa..715d34b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -12,20 +12,27 @@ struct Args {
/// Text to display in the speech bubble
text: String,
+ /// Style of the Miku art. Random is chosen if not specified.
+ #[arg(short, long)]
+ style: Option<i32>,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
let text = args.text;
- draw_miku_says(&text)?;
+ let style = match args.style {
+ Some(s) => s,
+ None => -1 // Default to -1 to select a random style
+ };
+ draw_miku_says(&text, style)?;
Ok(())
}
-fn draw_miku_says(text: &str) -> Result<(), Box<dyn std::error::Error>> {
+fn draw_miku_says(text: &str, style: i32) -> Result<(), Box<dyn std::error::Error>> {
let speech_bubble_lines = get_speech_bubble_lines(text);
- let miku_art = get_miku_art();
+ let miku_art = get_miku_art(style);
let (window_width, window_height) = size()?;
let available_width = window_width as usize;
diff --git a/src/mikuart.rs b/src/mikuart.rs
index 5ba1849..6d7b5c9 100644
--- a/src/mikuart.rs
+++ b/src/mikuart.rs
@@ -3,7 +3,7 @@
use rand::Rng;
-pub fn get_miku_art() -> Vec<&'static str> {
+pub fn get_miku_art(style: i32) -> Vec<&'static str> {
let mut rng = rand::rng();
let styles = vec![
//MARK: small art
@@ -504,6 +504,6 @@ pub fn get_miku_art() -> Vec<&'static str> {
],
];
- let selected_style = rng.random_range(0..styles.len());
+ let selected_style = if style < 0 { rng.random_range(0..styles.len()) } else { style as usize };
styles[selected_style].clone()
}