diff --git a/src/lib.rs b/src/lib.rs index 4aa9c3a..f16de87 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,18 @@ +use rand::Rng; pub const WIDTH: u32 = 400; pub const HEIGHT: u32 = 300; +pub const PURPLE_BACKGROUND: &[u8] = &[0xd3, 0xb7, 0xf7, 0xff]; +pub const PURPLE_RAIN: &[u8] = &[207, 100, 219, 0xff]; + +pub const BLUE_BACKGROUND: &[u8] = &[0x8f, 0xbe, 0xeb, 0xff]; +pub const BLUE_RAIN: &[u8] = &[0x3e, 0x9f, 0xfa, 0xff]; + pub fn draw(drops: &mut Vec, frame: &mut [u8]) { let pixels = frame.chunks_exact_mut(4); for pixel in pixels { - pixel.copy_from_slice(&[0xd3, 0xb7, 0xf7, 0xff]); + pixel.copy_from_slice(BLUE_BACKGROUND); } drops.iter_mut().for_each(|d| d.update()); @@ -17,13 +24,14 @@ pub fn draw(drops: &mut Vec, frame: &mut [u8]) { if let Ok(i) = (y * (WIDTH as i32) * 4 + x * 4).try_into() { if i < frame.len() { drawn = true; - frame[i..i + 4].copy_from_slice(&[207, 100, 219, 0xff]); + frame[i..i + 4].copy_from_slice(BLUE_RAIN); } } } } if !drawn { drop.y = -drop.z; + drop.x = rand::thread_rng().gen_range(0..WIDTH as i32); } } } diff --git a/src/main.rs b/src/main.rs index 0897ee1..c24d2c5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +#![windows_subsystem = "windows"] + use chrono::Duration; use log::error; use pixels::{Pixels, SurfaceTexture}; @@ -44,7 +46,7 @@ fn main() { x: (rng.gen_range(0..WIDTH as i32)), y: (rng.gen_range(0..HEIGHT as i32)), z: ((rng.sample(rand_distr::Geometric::new(0.2).unwrap())+1) as i32), - }) + }); } let timer = Timer::new();