diff options
| author | Raymond Hogenson <rhogenson@posteo.net> | 2018-08-18 00:25:29 -0400 |
|---|---|---|
| committer | Raymond Hogenson <rhogenson@posteo.net> | 2018-08-18 00:25:29 -0400 |
| commit | daa61a51eb97f868a56a52fc61b560832dde353b (patch) | |
| tree | 4da42fd8b8265b7e639275e613d4c7f78bf980e9 /src/player.rs | |
| download | stallman-shooter-daa61a51eb97f868a56a52fc61b560832dde353b.tar.zst | |
Write a working bullet hell
I just fucked up the enemy movement, but hopefully I won't ever need
that old code. The new one is going to look really cool and sweet.
Anything with just modifying acceleration must look very cool and
smooth.
Diffstat (limited to 'src/player.rs')
| -rw-r--r-- | src/player.rs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/player.rs b/src/player.rs new file mode 100644 index 0000000..97c98f6 --- /dev/null +++ b/src/player.rs @@ -0,0 +1,100 @@ +extern crate sdl2; +extern crate std; + +use super::state; + +pub struct Player { + pub x: i32, + pub y: i32, + left_p: bool, + right_p: bool, + up_p: bool, + down_p: bool, + y_d: i32, + x_d: i32, + pub fire_rate: u32, +} + +impl Player { + pub fn new() -> Player { + Player { x: 400, y: 500, x_d: 0, y_d: 0, down_p: false, left_p: false, right_p: false, up_p: false, fire_rate: 30 } + } + + pub fn act(&mut self, events: &mut sdl2::event::EventPollIterator){ + for event in events { + match event { + sdl2::event::Event::Quit {..} | + sdl2::event::Event::KeyDown { keycode: Some(sdl2::keyboard::Keycode::Escape), .. } => { + std::process::exit(0); + }, + sdl2::event::Event::KeyDown { keycode: Some(sdl2::keyboard::Keycode::Down), .. } => { + self.down_p = true; + self.y_d = -1; + } + sdl2::event::Event::KeyUp { keycode: Some(sdl2::keyboard::Keycode::Down), .. } => { + self.down_p = false; + } + sdl2::event::Event::KeyDown { keycode: Some(sdl2::keyboard::Keycode::Up), .. } => { + self.up_p = true; + self.y_d = 1; + } + sdl2::event::Event::KeyUp { keycode: Some(sdl2::keyboard::Keycode::Up), .. } => { + self.up_p = false; + } + sdl2::event::Event::KeyDown { keycode: Some(sdl2::keyboard::Keycode::Left), .. } => { + self.left_p = true; + self.x_d = -1; + } + sdl2::event::Event::KeyUp { keycode: Some(sdl2::keyboard::Keycode::Left), .. } => { + self.left_p = false; + } + sdl2::event::Event::KeyDown { keycode: Some(sdl2::keyboard::Keycode::Right), .. } => { + self.right_p = true; + self.x_d = 1; + } + sdl2::event::Event::KeyUp { keycode: Some(sdl2::keyboard::Keycode::Right), .. } => { + self.right_p = false; + } + _ => { }, + } + } + if self.left_p { + if !self.right_p { + self.x_d = -1; + } + } else if self.right_p { + self.x_d = 1; + } else { + self.x_d = 0; + } + if self.up_p { + if !self.down_p { + self.y_d = -1; + } + } else if self.down_p { + self.y_d = 1; + } else { + self.y_d = 0; + } + self.x += self.x_d; + self.y += self.y_d; + } +} + +impl state::Positioned for Player { + fn x(&self) -> i32 { + self.x + } + fn y(&self) -> i32 { + self.y + } + fn radius(&self) -> u32 { + 5 + } +} + +impl state::Drawable for Player { + fn color(&self) -> sdl2::pixels::Color { + sdl2::pixels::Color::RGB(0, 0, 0) + } +} |
