Prepare for a texture handler.
This commit is contained in:
@@ -6,8 +6,6 @@ extern crate sdl2_image;
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::thread::sleep_ms;
|
use std::thread::sleep_ms;
|
||||||
|
|
||||||
//use sdl2::video::{Window, WindowPos, OPENGL};
|
|
||||||
//use sdl2::timer::{get_ticks, delay};
|
|
||||||
use sdl2_image::LoadTexture;
|
use sdl2_image::LoadTexture;
|
||||||
use sdl2::rect::Rect;
|
use sdl2::rect::Rect;
|
||||||
use sdl2::keyboard::Keycode;
|
use sdl2::keyboard::Keycode;
|
||||||
@@ -226,6 +224,7 @@ fn main() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
player.dx = a * PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
player.dx = a * PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
||||||
|
player_sprite.flip = (false, false);
|
||||||
} else if keyboard.is_held(Keycode::Left) && (player.dx <= 0.0 || player.on_ground) {
|
} else if keyboard.is_held(Keycode::Left) && (player.dx <= 0.0 || player.on_ground) {
|
||||||
let a = if player.dx < 0.0 {
|
let a = if player.dx < 0.0 {
|
||||||
PLAYER_ACCELERATION_X_START
|
PLAYER_ACCELERATION_X_START
|
||||||
@@ -234,6 +233,7 @@ fn main() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
player.dx = a * -PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
player.dx = a * -PLAYER_SPEED_X + (1.0 - a) * player.dx;
|
||||||
|
player_sprite.flip = (true, false);
|
||||||
} 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) * player.dx;
|
||||||
|
|
||||||
@@ -442,7 +442,6 @@ fn main() {
|
|||||||
|
|
||||||
let player_rect = camera_relative_rect(&camera.to_rect(), &player.to_rect());
|
let player_rect = camera_relative_rect(&camera.to_rect(), &player.to_rect());
|
||||||
|
|
||||||
player_sprite.flip = (true, false);
|
|
||||||
player_sprite.render(&mut renderer, &player_rect);
|
player_sprite.render(&mut renderer, &player_rect);
|
||||||
|
|
||||||
renderer.present();
|
renderer.present();
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
use sdl2::rect::Rect;
|
use sdl2::rect::Rect;
|
||||||
|
|
||||||
pub enum PlayerFacing {
|
|
||||||
Left,
|
|
||||||
Right
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Player {
|
pub struct Player {
|
||||||
pub x: f32,
|
pub x: f32,
|
||||||
@@ -13,8 +9,7 @@ pub struct Player {
|
|||||||
pub dx: f32,
|
pub dx: f32,
|
||||||
pub dy: f32,
|
pub dy: f32,
|
||||||
pub gravity: f32,
|
pub gravity: f32,
|
||||||
pub on_ground: bool,
|
pub on_ground: bool
|
||||||
pub facing: PlayerFacing
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Player {
|
impl Player {
|
||||||
@@ -27,25 +22,11 @@ impl Player {
|
|||||||
dx: 0.0,
|
dx: 0.0,
|
||||||
dy: 0.0,
|
dy: 0.0,
|
||||||
gravity: 0.3,
|
gravity: 0.3,
|
||||||
on_ground: false,
|
on_ground: false
|
||||||
facing: PlayerFacing::Right
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update(&mut self) {
|
pub fn update(&mut self) {
|
||||||
match self.facing {
|
|
||||||
PlayerFacing::Right => {
|
|
||||||
if self.dx < 0.0 {
|
|
||||||
self.facing = PlayerFacing::Left;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
PlayerFacing::Left => {
|
|
||||||
if self.dx > 0.0 {
|
|
||||||
self.facing = PlayerFacing::Right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.dy += self.gravity;
|
self.dy += self.gravity;
|
||||||
|
|
||||||
if self.dy > 8.0 {
|
if self.dy > 8.0 {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
use sdl2::render::{Texture, Renderer};
|
use sdl2::render::{Texture, Renderer};
|
||||||
use sdl2::rect::Rect;
|
use sdl2::rect::Rect;
|
||||||
|
|
||||||
@@ -8,11 +9,22 @@ pub trait Sprite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub struct TextureManager<'a> {
|
||||||
|
textures: HashMap<String, &'a Texture>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> TextureManager<'a> {
|
||||||
|
pub fn insert_texture(&mut self, key: String, texture: &'a Texture) {
|
||||||
|
self.textures.insert(key, texture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pub struct StaticSprite<'a> {
|
pub struct StaticSprite<'a> {
|
||||||
texture: &'a Texture,
|
texture: &'a Texture,
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
flip: (bool, bool)
|
pub flip: (bool, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> StaticSprite<'a> {
|
impl<'a> StaticSprite<'a> {
|
||||||
@@ -37,7 +49,7 @@ pub struct AnimatedSprite<'a> {
|
|||||||
texture: &'a Texture,
|
texture: &'a Texture,
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
flip: (bool, bool),
|
pub flip: (bool, bool),
|
||||||
frame: u32,
|
frame: u32,
|
||||||
frames: u32,
|
frames: u32,
|
||||||
time: u64,
|
time: u64,
|
||||||
|
|||||||
Reference in New Issue
Block a user