From 0176bb2987105456b1aba0a64c967f8ad771f9a6 Mon Sep 17 00:00:00 2001 From: logaritmisk Date: Sat, 13 Dec 2014 16:32:13 +0100 Subject: [PATCH] update to sdl2 0.0.8, and move code to modules --- Cargo.lock | 6 ++-- Cargo.toml | 8 +++-- src/main.rs | 84 ++++++++++++++++++++------------------------------- src/player.rs | 35 +++++++++++++++++++++ src/vec.rs | 4 +++ 5 files changed, 79 insertions(+), 58 deletions(-) create mode 100644 src/player.rs create mode 100644 src/vec.rs diff --git a/Cargo.lock b/Cargo.lock index 7d2a357..8651eea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,12 +1,12 @@ [root] -name = "smb" +name = "super-matte-bros" version = "0.0.1" dependencies = [ - "sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "sdl2 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sdl2" -version = "0.0.7" +version = "0.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml index b2a60e4..c79edb6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,10 @@ [package] -name = "smb" +name = "super-matte-bros" version = "0.0.1" authors = ["logaritmisk "] - [dependencies] -sdl2 = "0.0.7" +sdl2 = "0.0.8" + +[[bin]] +name = "super-matte-bros" diff --git a/src/main.rs b/src/main.rs index 83da511..8678265 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,15 @@ extern crate sdl2; - use sdl2::video::{Window, WindowPos, OPENGL}; use sdl2::event::{poll_event, Event}; -use sdl2::timer::{get_ticks}; -use sdl2::rect::{Rect}; +use sdl2::timer::get_ticks; +use sdl2::rect::Rect; +use sdl2::keycode::KeyCode; +use sdl2::pixels::Color; + + +mod vec; +mod player; const SCREEN_WIDTH : int = 800; @@ -13,35 +18,6 @@ const SCREEN_HEIGHT : int = 600; const MS_PER_UPDATE : uint = 10; -struct Player { - x: f32, - y: f32, - vel_x: f32, - vel_y: f32, - gravity: f32, -} - -impl Player { - fn new(x: f32, y: f32) -> Player { - Player { x: x, y: y, vel_x: 0.0, vel_y: 0.0, gravity: 0.3 } - } - - pub fn update(&mut self) { - self.vel_y += self.gravity; - - self.x += self.vel_x; - self.y += self.vel_y; - } - - pub fn render(&self, renderer: &sdl2::render::Renderer) { - let player = Rect::new(self.x as i32, self.y as i32, 10, 10); - - let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0)); - let _ = renderer.fill_rect(&player); - } -} - - fn main() { sdl2::init(sdl2::INIT_EVERYTHING); @@ -55,10 +31,11 @@ fn main() { Err(err) => panic!("failed to create renderer: {}", err) }; - let mut player = Player::new(390.0, 390.0); - + let mut player = player::Player::new(390.0, 390.0); let mut on_ground = true; + let ground = Rect::new(0, 400, SCREEN_WIDTH as i32, 5); + let mut current : uint; let mut elapsed : uint; let mut previous : uint = get_ticks(); @@ -73,28 +50,28 @@ fn main() { match poll_event() { Event::Quit(_) => break, Event::KeyDown(_, _, key, _, _, _) => { - if key == sdl2::keycode::KeyCode::Escape { + if key == KeyCode::Escape { break; - } else if key == sdl2::keycode::KeyCode::Right { - player.vel_x = 4.0; - } else if key == sdl2::keycode::KeyCode::Left { - player.vel_x = -4.0; - } else if key == sdl2::keycode::KeyCode::Up { + } else if key == KeyCode::Right { + player.velocity.x = 4.0; + } else if key == KeyCode::Left { + player.velocity.x = -4.0; + } else if key == KeyCode::Up { if on_ground { - player.vel_y = -8.0; + player.velocity.y = -8.0; on_ground = false; } } }, Event::KeyUp(_, _, key, _, _, _) => { - if key == sdl2::keycode::KeyCode::Right { - player.vel_x = 0.0; - } else if key == sdl2::keycode::KeyCode::Left { - player.vel_x = 0.0; - } else if key == sdl2::keycode::KeyCode::Up { - if player.vel_y < -4.0 { - player.vel_y = -4.0; + if key == KeyCode::Right { + player.velocity.x = 0.0; + } else if key == KeyCode::Left { + player.velocity.x = 0.0; + } else if key == KeyCode::Up { + if player.velocity.y < -4.0 { + player.velocity.y = -4.0; } } }, @@ -104,9 +81,9 @@ fn main() { while lag >= MS_PER_UPDATE { player.update(); - if player.y > 390.0 { - player.y = 390.0; - player.vel_y = 0.0; + if player.position.y >= 390.0 { + player.position.y = 390.0; + player.velocity.y = 0.0; on_ground = true; } @@ -114,9 +91,12 @@ fn main() { lag -= MS_PER_UPDATE; } - let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0)); + let _ = renderer.set_draw_color(Color::RGB(0, 0, 0)); let _ = renderer.clear(); + let _ = renderer.set_draw_color(Color::RGB(0, 0, 255)); + let _ = renderer.fill_rect(&ground); + player.render(&renderer); renderer.present(); diff --git a/src/player.rs b/src/player.rs new file mode 100644 index 0000000..2554fd3 --- /dev/null +++ b/src/player.rs @@ -0,0 +1,35 @@ +extern crate sdl2; + + +use sdl2::render::Renderer; +use sdl2::pixels::Color; +use sdl2::rect::Rect; + +use vec; + + +pub struct Player { + pub position: vec::Vec2, + pub velocity: vec::Vec2, + pub gravity: f32, +} + +impl Player { + pub fn new(x: f32, y: f32) -> Player { + Player { position: vec::Vec2 { x: x, y: y }, velocity: vec::Vec2 { x: 0.0, y: 0.0 }, gravity: 0.3 } + } + + pub fn update(&mut self) { + self.velocity.y += self.gravity; + + self.position.x += self.velocity.x; + self.position.y += self.velocity.y; + } + + pub fn render(&self, renderer: &Renderer) { + let player = Rect::new(self.position.x as i32, self.position.y as i32, 10, 10); + + let _ = renderer.set_draw_color(Color::RGB(0, 255, 0)); + let _ = renderer.fill_rect(&player); + } +} diff --git a/src/vec.rs b/src/vec.rs new file mode 100644 index 0000000..f1ecaca --- /dev/null +++ b/src/vec.rs @@ -0,0 +1,4 @@ +pub struct Vec2 { + pub x: f32, + pub y: f32, +}