913253cbf15c55936729baff58944e913ec1f164
[bug-basher.git] / src / entities / bug.rs
1 use geometry::*;
2 use hitbox::*;
3
4 #[derive(Debug, Clone)]
5 pub struct Bug {
6     pub pos: Vec2d,
7     pub rotation: f64,
8     pub alive: bool
9 }
10
11 const SPEED: f64 = 175.;
12
13 impl Bug {
14     pub fn new(x: f64, y: f64, facing: f64) -> Bug {
15         Bug {
16             pos: Vec2d {
17                 x: x,
18                 y: y
19             },
20             rotation: facing,
21             alive: true
22         }
23     }
24
25     pub fn advance(&mut self, seconds: f64) {
26         self.rotation = (-self.pos).angle();
27         let distance = SPEED*seconds;
28         let delta_pos = Vec2d {
29             x: distance * self.rotation.cos(),
30             y: distance * self.rotation.sin()
31         };
32         self.pos = self.pos + delta_pos;
33     }
34 }
35
36 impl CircleHitbox for Bug {
37     fn pos(&self) -> Vec2d {
38         self.pos
39     }
40     fn radius(&self) -> f64 {
41         75.
42     }
43 }