From: Stephen Seo Date: Sun, 6 Oct 2019 04:46:38 +0000 (+0900) Subject: Give new planets a random amount of moons X-Git-Url: https://git.seodisparate.com/tbm-client-edit-cmd.png?a=commitdiff_plain;h=3fa3f3d48b75579f48a734806782e000f7871273;p=LudumDare45_StartWithNothing Give new planets a random amount of moons --- diff --git a/src/main.rs b/src/main.rs index 0d7b2d6..9e3a3e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -499,6 +499,16 @@ impl Menu { false, "A new planet... It has most certainly been a while.", ), + Menu::pause(500.0, false), + Menu::text( + 50.0, + HEIGHT_F - 100.0, + 40.0, + false, + "Please, go out and create the new universe, and again..", + ), + Menu::pause(300.0, false), + Menu::text(50.0, HEIGHT_F - 60.0, 40.0, false, "Thank you."), ], } } @@ -666,11 +676,19 @@ impl RotatingParticleSystem { } fn update(&mut self, dt: f64) { - let saved_rect = self.particle_system.host_rect; - self.particle_system.host_rect.pos += - Transform::rotate(self.r) * Vector::new(self.offset, 0.0); - self.particle_system.update(dt); - self.particle_system.host_rect = saved_rect; + if self.particle_system.is_rect { + let saved_rect = self.particle_system.host_rect; + self.particle_system.host_rect.pos += + Transform::rotate(self.r) * Vector::new(self.offset, 0.0); + self.particle_system.update(dt); + self.particle_system.host_rect = saved_rect; + } else { + let saved_cir = self.particle_system.host_circle; + self.particle_system.host_circle.pos += + Transform::rotate(self.r) * Vector::new(self.offset, 0.0); + self.particle_system.update(dt); + self.particle_system.host_circle = saved_cir; + } self.r += self.velr * dt as f32; } @@ -787,15 +805,18 @@ struct Planet { circle: Circle, color: Color, particle_system: ParticleSystem, + moons: Vec, } impl Planet { fn new(circle: Circle, color: Color) -> Self { - Planet { + let mut smaller_circle = circle; + smaller_circle.radius /= 4.0; + let mut planet = Planet { circle, color, particle_system: ParticleSystem::new( - 3500.0, + rand::thread_rng().gen_range(2000.0, 3800.0), 900.0, Rectangle::new((0.0, 0.0), (1.0, 1.0)), circle, @@ -805,16 +826,45 @@ impl Planet { 1.0, 0.3, ), + moons: Vec::new(), + }; + + let mut r: f32 = rand::thread_rng().gen_range(0.0, 360.0); + for i in 0..rand::thread_rng().gen_range(0, 5) { + planet.moons.push(RotatingParticleSystem::new( + rand::thread_rng().gen_range(1000.0, 2600.0), + 600.0, + Rectangle::new((0.0, 0.0), (1.0, 1.0)), + smaller_circle, + false, + Vector::new(0.0, 0.0), + color, + 1.0, + r, + rand::thread_rng().gen_range(0.05, 0.15), + rand::thread_rng().gen_range(35.0, 200.0), + 0.2, + )); } + + planet } fn update(&mut self, dt: f64) { + self.particle_system.host_circle.pos = self.circle.pos; self.particle_system.update(dt); + for moon in &mut self.moons { + moon.particle_system.host_circle.pos = self.circle.pos; + moon.update(dt); + } } fn draw(&mut self, window: &mut Window, transform: Transform) { self.particle_system.draw(window, transform); window.draw_ex(&self.circle, Col(self.color), transform, 1); + for moon in &mut self.moons { + moon.draw(window, transform); + } } }