diff --git a/Cargo.lock b/Cargo.lock index 62d0a22..7d2a357 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,6 @@ name = "smb" version = "0.0.1" dependencies = [ "sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "sdl2_ttf 0.0.3 (git+https://github.com/andelf/rust-sdl2_ttf)", ] [[package]] @@ -11,11 +10,3 @@ name = "sdl2" version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "sdl2_ttf" -version = "0.0.3" -source = "git+https://github.com/andelf/rust-sdl2_ttf#614fdbed9f07208d280a41abf02cc91a401d6cb5" -dependencies = [ - "sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - diff --git a/Cargo.toml b/Cargo.toml index ff86cf9..b2a60e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,3 @@ authors = ["logaritmisk "] [dependencies] sdl2 = "0.0.7" - - -[dependencies.sdl2_ttf] -git = "https://github.com/andelf/rust-sdl2_ttf" diff --git a/src/main.rs b/src/main.rs index 926c49a..9b0435e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,26 +13,41 @@ const SCREEN_HEIGHT : int = 600; const MS_PER_UPDATE : uint = 10; +struct Player { + x: f32, + y: f32, + vel_x: f32, + vel_y: f32, +} + +impl Player { + fn new(x: f32, y: f32) -> Player { + Player { x: x, y: y, vel_x: 0.0, vel_y: 0.0 } + } + + 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); let window = match Window::new("SMB", WindowPos::PosCentered, WindowPos::PosCentered, SCREEN_WIDTH, SCREEN_HEIGHT, OPENGL) { Ok(window) => window, - Err(err) => panic!("failed to create window: {}", err) + Err(err) => panic!("failed to create window: {}", err) }; let renderer = match sdl2::render::Renderer::from_window(window, sdl2::render::RenderDriverIndex::Auto, sdl2::render::ACCELERATED) { Ok(renderer) => renderer, - Err(err) => panic!("failed to create renderer: {}", err) + Err(err) => panic!("failed to create renderer: {}", err) }; - let mut player = Rect::new(0, 290, 10, 10); - - let mut x : f32 = 390.0; - let mut y : f32 = 290.0; - - let mut v_x : f32 = 0.0; - let mut v_y : f32 = 0.0; + let mut player = Player::new(390.0, 290.0); let mut on_ground = true; let mut gravity : f32 = 0.3; @@ -55,12 +70,12 @@ fn main() { if key == sdl2::keycode::KeyCode::Escape { break 'event; } else if key == sdl2::keycode::KeyCode::Right { - v_x = 4.0; + player.vel_x = 4.0; } else if key == sdl2::keycode::KeyCode::Left { - v_x = -4.0; + player.vel_x = -4.0; } else if key == sdl2::keycode::KeyCode::Up { if on_ground { - v_y = -8.0; + player.vel_y = -8.0; on_ground = false; } @@ -68,12 +83,12 @@ fn main() { }, Event::KeyUp(_, _, key, _, _, _) => { if key == sdl2::keycode::KeyCode::Right { - v_x = 0.0; + player.vel_x = 0.0; } else if key == sdl2::keycode::KeyCode::Left { - v_x = 0.0; + player.vel_x = 0.0; } else if key == sdl2::keycode::KeyCode::Up { - if v_y < -4.0 { - v_y = -4.0; + if player.vel_y < -4.0 { + player.vel_y = -4.0; } } }, @@ -81,14 +96,14 @@ fn main() { } while lag >= MS_PER_UPDATE { - v_y += gravity; + player.vel_y += gravity; - x += v_x; - y += v_y; + player.x += player.vel_x; + player.y += player.vel_y; - if y > 290.0 { - y = 290.0; - v_y = 0.0; + if player.y > 290.0 { + player.y = 290.0; + player.vel_y = 0.0; on_ground = true; } @@ -99,11 +114,7 @@ fn main() { let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0)); let _ = renderer.clear(); - player.x = x as i32; - player.y = y as i32; - - let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0)); - let _ = renderer.fill_rect(&player); + player.render(&renderer); renderer.present(); }