Bolls bounce on walls
authorTomas Wenström <tomas.wenstrom@gmail.com>
Sun, 17 Jan 2021 17:58:49 +0000 (18:58 +0100)
committerTomas Wenström <tomas.wenstrom@gmail.com>
Sun, 17 Jan 2021 17:58:49 +0000 (18:58 +0100)
src/core/game.rs

index f938245..8474fab 100644 (file)
@@ -238,7 +238,7 @@ pub struct Boll {
 }
 
 impl Object for Boll {
-    fn update(&mut self, _objects: &mut Objects, lvl: &Level, _dt: Duration) -> ObjectState {
+    fn update(&mut self, objects: &mut Objects, lvl: &Level, _dt: Duration) -> ObjectState {
        self.vel += lvl.gravity;
        self.pos += self.vel;
 
@@ -252,6 +252,18 @@ impl Object for Boll {
            }
        }
 
+       if self.pos.x <= 0.0 || self.pos.x >= 1280.0 { // only for testing
+           self.pos.x = self.pos.x.max(0.0).min(1280.0);
+           self.vel.x = -self.vel.x;
+           self.bounces = 0;
+           use rand::distributions::{Distribution, Normal};
+           let normal = Normal::new(0.5, 0.4);
+           objects.push(Box::new(Boll {
+               vel: self.vel * normal.sample(&mut rand::thread_rng()),
+               ..*self
+           }));
+       }
+
        Alive
     }