diff --git a/src/char.rs b/src/char.rs new file mode 100644 index 0000000..963a744 --- /dev/null +++ b/src/char.rs @@ -0,0 +1,16 @@ +pub struct CharSampler { + chars: String +} + +impl CharSampler { + pub fn new(chars: String) -> Self { + Self { chars } + } + + pub fn sample(&self, level: f32) -> char { + let pos = level * self.chars.chars().count() as f32; + let index = pos as usize; + + self.chars.chars().nth(index).unwrap() + } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index f06f20d..2004c2c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,20 +1,26 @@ use clap::Parser; use rand::rngs::OsRng; +use crate::char::CharSampler; use crate::pallet::{choose_pallet, create_pallet, PalletEnum}; mod pallet; +mod char; #[derive(Parser)] #[clap(author = "Rico Riedel", version = "0.1.0", about = "Wipe your terminal with a random animation.")] struct Args { #[clap(short, long, help = "Add color pallet", arg_enum)] pallet: Vec, + #[clap(long, default_value = ".-+%#", help = "Set chars")] + chars: String } fn main() { let args = Args::parse(); let rng = &mut OsRng::default(); + let chars = CharSampler::new(args.chars); + let pallet_key = choose_pallet(args.pallet, rng); let pallet = create_pallet(pallet_key); }