just look at y for now

This commit is contained in:
2014-12-23 11:28:38 +01:00
parent d2ace9cc23
commit 75eebf1770
4 changed files with 37 additions and 18 deletions

4
Cargo.lock generated
View File

@@ -2,11 +2,11 @@
name = "super-matte-bros" name = "super-matte-bros"
version = "0.0.1" version = "0.0.1"
dependencies = [ dependencies = [
"sdl2 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "sdl2 0.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "sdl2" name = "sdl2"
version = "0.0.10" version = "0.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"

View File

@@ -4,7 +4,7 @@ version = "0.0.1"
authors = ["logaritmisk <anders.e.olsson@gmail.com>"] authors = ["logaritmisk <anders.e.olsson@gmail.com>"]
[dependencies] [dependencies]
sdl2 = "0.0.10" sdl2 = "0.0.12"
[[bin]] [[bin]]
name = "super-matte-bros" name = "super-matte-bros"

View File

@@ -1,5 +1,6 @@
extern crate sdl2; extern crate sdl2;
use sdl2::video::{Window, WindowPos, OPENGL}; use sdl2::video::{Window, WindowPos, OPENGL};
use sdl2::event::{poll_event, Event}; use sdl2::event::{poll_event, Event};
use sdl2::timer::get_ticks; use sdl2::timer::get_ticks;
@@ -59,11 +60,12 @@ fn main() {
Err(err) => panic!("failed to create renderer: {}", err) Err(err) => panic!("failed to create renderer: {}", err)
}; };
let mut player = player::Player::new(290.0, 390.0); let mut objects = Vec::new();
let mut on_ground = true;
let ground1 = Object::new(162.5, 400.0, 325.0, 5.0, Color::RGB(0, 0, 255)); objects.push(Object::new(162.5, 400.0, 325.0, 5.0, Color::RGB(0, 0, 255)));
let ground2 = Object::new(637.5, 395.0, 325.0, 5.0, Color::RGB(0, 0, 255)); objects.push(Object::new(637.5, 380.0, 325.0, 5.0, Color::RGB(0, 0, 255)));
let mut player = player::Player::new(290.0, 390.0);
let mut current : uint; let mut current : uint;
let mut elapsed : uint; let mut elapsed : uint;
@@ -86,10 +88,9 @@ fn main() {
} else if key == KeyCode::Left { } else if key == KeyCode::Left {
player.velocity.x = -4.0; player.velocity.x = -4.0;
} else if key == KeyCode::Up { } else if key == KeyCode::Up {
if on_ground { if player.on_ground {
player.velocity.y = -8.0; player.velocity.y = -8.0;
player.on_ground = false;
on_ground = false;
} }
} }
}, },
@@ -110,13 +111,29 @@ fn main() {
while lag >= MS_PER_UPDATE { while lag >= MS_PER_UPDATE {
player.update(); player.update();
collision_detection(&player.get_rect(), &ground2.get_rect()); player.on_ground = false;
if player.position.y >= 390.0 { for object in objects.iter() {
player.position.y = 390.0; let mut i : uint = 0;
player.velocity.y = 0.0;
on_ground = true; loop {
if !collision_detection(&object.get_rect(), &player.get_rect()) {
if i > 0 {
player.velocity.y = 0.0;
player.on_ground = true;
}
break;
}
i += 1;
if i > 100 {
break;
}
player.position.y -= player.velocity.y * 0.05;
}
} }
lag -= MS_PER_UPDATE; lag -= MS_PER_UPDATE;
@@ -125,8 +142,9 @@ fn main() {
let _ = renderer.set_draw_color(Color::RGB(0, 0, 0)); let _ = renderer.set_draw_color(Color::RGB(0, 0, 0));
let _ = renderer.clear(); let _ = renderer.clear();
ground1.render(&renderer); for object in objects.iter() {
ground2.render(&renderer); object.render(&renderer);
}
player.render(&renderer); player.render(&renderer);

View File

@@ -12,11 +12,12 @@ pub struct Player {
pub position: vec::Vec2, pub position: vec::Vec2,
pub velocity: vec::Vec2, pub velocity: vec::Vec2,
pub gravity: f32, pub gravity: f32,
pub on_ground: bool
} }
impl Player { impl Player {
pub fn new(x: f32, y: f32) -> 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 } Player { position: vec::Vec2 { x: x, y: y }, velocity: vec::Vec2 { x: 0.0, y: 0.0 }, gravity: 0.3, on_ground: false }
} }
pub fn update(&mut self) { pub fn update(&mut self) {