Merge branch 'master' of github.com:Logaritmisk/rust-smb

This commit is contained in:
2016-06-15 19:51:36 +02:00
3 changed files with 13 additions and 22 deletions

View File

@@ -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());
} }
}, },

View File

@@ -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),
_ => () _ => ()
} }

View File

@@ -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))
} }
} }
} }