just look at y for now
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
46
src/main.rs
46
src/main.rs
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user