Merge branch 'master' of github.com:Logaritmisk/rust-smb
This commit is contained in:
@@ -21,7 +21,7 @@ impl KeyboardHandler {
|
|||||||
pub fn process(&mut self, event: &Event) {
|
pub fn process(&mut self, event: &Event) {
|
||||||
match *event {
|
match *event {
|
||||||
Event::KeyDown {keycode, repeat, ..} => {
|
Event::KeyDown {keycode, repeat, ..} => {
|
||||||
if repeat == false {
|
if !repeat {
|
||||||
self.key_down(keycode.unwrap());
|
self.key_down(keycode.unwrap());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
21
src/main.rs
21
src/main.rs
@@ -58,12 +58,12 @@ fn main() {
|
|||||||
let window = video_subsystem.window("Super Matte Bros", SCREEN_WIDTH, SCREEN_HEIGHT).position_centered().build().unwrap();
|
let window = video_subsystem.window("Super Matte Bros", SCREEN_WIDTH, SCREEN_HEIGHT).position_centered().build().unwrap();
|
||||||
let mut renderer = window.renderer().software().build().unwrap();
|
let mut renderer = window.renderer().software().build().unwrap();
|
||||||
|
|
||||||
let world_sprites = renderer.load_texture(&Path::new("gfx/world.png")).unwrap();
|
let world_sprites = renderer.load_texture(Path::new("gfx/world.png")).unwrap();
|
||||||
|
|
||||||
let floor_sprite = StaticSprite::new(&world_sprites, 16 * 0, 16 * 0);
|
let floor_sprite = StaticSprite::new(&world_sprites, 16 * 0, 16 * 0);
|
||||||
let brick_sprite = StaticSprite::new(&world_sprites, 16 * 1, 16 * 0);
|
let brick_sprite = StaticSprite::new(&world_sprites, 16 * 1, 16 * 0);
|
||||||
|
|
||||||
let player_sprites = renderer.load_texture(&Path::new("gfx/mario.png")).unwrap();
|
let player_sprites = renderer.load_texture(Path::new("gfx/mario.png")).unwrap();
|
||||||
|
|
||||||
let timer = Timer::new();
|
let timer = Timer::new();
|
||||||
|
|
||||||
@@ -206,26 +206,22 @@ fn main() {
|
|||||||
|
|
||||||
player.dx = a * -PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
player.dx = a * -PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
||||||
} else if player.on_ground {
|
} else if player.on_ground {
|
||||||
player.dx = (1.0 - PLAYER_ACCELERATION_X_STOP) * player.dx;
|
player.dx *= 1.0 - PLAYER_ACCELERATION_X_STOP;
|
||||||
|
|
||||||
if player.dx.abs() <= PLAYER_THRESHOLD_X {
|
if player.dx.abs() <= PLAYER_THRESHOLD_X {
|
||||||
player.dx = 0.0;
|
player.dx = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if player.on_ground {
|
if player.on_ground && keyboard.was_pressed(Keycode::Up) {
|
||||||
if keyboard.was_pressed(Keycode::Up) {
|
|
||||||
player.dy = -8.0;
|
player.dy = -8.0;
|
||||||
|
|
||||||
player.on_ground = false;
|
player.on_ground = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if keyboard.was_released(Keycode::Up) {
|
if keyboard.was_released(Keycode::Up) && player.dy < -4.0 {
|
||||||
if player.dy < -4.0 {
|
|
||||||
player.dy = -4.0;
|
player.dy = -4.0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
while lag >= MS_PER_UPDATE {
|
while lag >= MS_PER_UPDATE {
|
||||||
player.dy += player.gravity;
|
player.dy += player.gravity;
|
||||||
@@ -406,12 +402,7 @@ fn main() {
|
|||||||
let object = camera.to_relative_rect(position);
|
let object = camera.to_relative_rect(position);
|
||||||
|
|
||||||
match *tile {
|
match *tile {
|
||||||
Tile::Background(src) => {
|
Tile::Background(src) | Tile::Floor(src) => renderer.copy(&world_sprites, Some(src), Some(object)),
|
||||||
renderer.copy(&world_sprites, Some(src), Some(object));
|
|
||||||
},
|
|
||||||
Tile::Floor(src) => {
|
|
||||||
renderer.copy(&world_sprites, Some(src), Some(object));
|
|
||||||
},
|
|
||||||
Tile::Static(ref sprite, _) => sprite.render(lag / MS_PER_UPDATE, &mut renderer, &object),
|
Tile::Static(ref sprite, _) => sprite.render(lag / MS_PER_UPDATE, &mut renderer, &object),
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ impl<'a> PlayerGraphicsComponent<'a> {
|
|||||||
pub fn new(texture: &'a Texture) -> PlayerGraphicsComponent<'a> {
|
pub fn new(texture: &'a Texture) -> PlayerGraphicsComponent<'a> {
|
||||||
PlayerGraphicsComponent {
|
PlayerGraphicsComponent {
|
||||||
flip_horizontal: Cell::new(false),
|
flip_horizontal: Cell::new(false),
|
||||||
sprite_standing: RefCell::new(StaticSprite::new(&texture, 80, 32)),
|
sprite_standing: RefCell::new(StaticSprite::new(texture, 80, 32)),
|
||||||
sprite_running: RefCell::new(AnimatedSprite::new(&texture, 96, 32, 3, 10.0)),
|
sprite_running: RefCell::new(AnimatedSprite::new(texture, 96, 32, 3, 10.0)),
|
||||||
sprite_jumping: RefCell::new(StaticSprite::new(&texture, 160, 32))
|
sprite_jumping: RefCell::new(StaticSprite::new(texture, 160, 32))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user