Moved out objects from game module
[kaka/rust-sdl-test.git] / src / boll.rs
index 64be265..07c7b28 100644 (file)
@@ -1,21 +1,17 @@
-use sdl2::pixels::Color;
-use sdl2::rect::Point;
+use core::render::Renderer;
+use geometry::Point;
+use sdl2::gfx::primitives::DrawRenderer;
 use sdl2::rect::Rect;
-use sdl2::render::Canvas;
-use sdl2::video::Window;
-
 use {SCREEN_HEIGHT, SCREEN_WIDTH};
-use common::Point2D;
-use sdl2::gfx::primitives::DrawRenderer;
 
 pub trait Boll {
     fn update(&mut self);
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32);
+    fn draw(&self, renderer: &mut Renderer, size: u32);
 }
 
 pub struct SquareBoll {
-    pub pos: Point2D<f64>,
-    pub vel: Point2D<f64>,
+    pub pos: Point<f64>,
+    pub vel: Point<f64>,
 }
 
 impl Boll for SquareBoll {
@@ -41,30 +37,27 @@ impl Boll for SquareBoll {
         }
     }
 
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32) {
-        canvas.set_draw_color(Color::RGBA(
+    fn draw(&self, renderer: &mut Renderer, size: u32) {
+        renderer.canvas().set_draw_color((
             255 - std::cmp::min(255, (self.vel.length() * 25.0) as u8),
             (255.0 * (self.pos.x / SCREEN_WIDTH as f64)) as u8,
-            (255.0 * (self.pos.y / SCREEN_HEIGHT as f64)) as u8, 128
+            (255.0 * (self.pos.y / SCREEN_HEIGHT as f64)) as u8,
+            128,
         ));
         let mut r = Rect::new(0, 0, size, size);
-        r.center_on(Point::new(self.pos.x as i32, self.pos.y as i32));
-        canvas.fill_rect(r).unwrap();
+        r.center_on((self.pos.x as i32, self.pos.y as i32));
+        renderer.canvas().fill_rect(r).unwrap();
     }
 }
 
-
 pub struct CircleBoll {
     pub boll: SquareBoll,
 }
 
 impl CircleBoll {
-    pub fn new(pos: Point2D<f64>, vel: Point2D<f64>) -> CircleBoll {
+    pub fn new(pos: Point<f64>, vel: Point<f64>) -> CircleBoll {
         CircleBoll {
-            boll: SquareBoll {
-                pos,
-                vel,
-            }
+            boll: SquareBoll { pos, vel },
         }
     }
 }
@@ -74,13 +67,16 @@ impl Boll for CircleBoll {
         self.boll.update();
     }
 
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32) {
+    fn draw(&self, renderer: &mut Renderer, size: u32) {
         let val = 255 - std::cmp::min(255, (self.boll.vel.length() * 20.0) as u8);
-        canvas.filled_circle(self.boll.pos.x as i16, self.boll.pos.y as i16, size as i16, Color::RGBA(
-            val,
-            val,
-            val,
-            128,
-        )).unwrap();
+        renderer
+           .canvas()
+            .filled_circle(
+                self.boll.pos.x as i16,
+                self.boll.pos.y as i16,
+                size as i16,
+                (val, val, val, 128),
+            )
+            .unwrap();
     }
 }