Bugs walking to the middle of the screen slowly
[bug-basher.git] / src / entities / bug.rs
1 use geometry::*;
2
3 pub struct Bug {
4     pub pos: Vec2d,
5     pub rotation: f64,
6     pub alive: bool
7 }
8
9 const SPEED: f64 = 75.;
10
11 impl Bug {
12     pub fn new(x: f64, y: f64, facing: f64) -> Bug {
13         Bug {
14             pos: Vec2d {
15                 x: x,
16                 y: y
17             },
18             rotation: facing,
19             alive: true
20         }
21     }
22
23     pub fn advance(&mut self, seconds: f64) {
24         self.rotation = (-self.pos).angle();
25         let distance = SPEED*seconds;
26         let delta_pos = Vec2d {
27             x: distance * self.rotation.cos(),
28             y: distance * self.rotation.sin()
29         };
30         self.pos = self.pos + delta_pos;
31     }
32
33     pub fn click(&mut self, point: Vec2d) {
34         if self.touches(point) {
35             self.alive = false;
36         }
37     }
38
39     fn touches(&self, point: Vec2d) -> bool {
40         let rx = 35.;
41         let ry = 16.;
42         self.pos.distance(point) <= 45. // Some better hit box modelling might be nice?
43     }
44 }