This commit is contained in:
2015-11-19 12:57:41 +01:00
parent 78c6cf66c1
commit dc2ad09f4f

View File

@@ -44,8 +44,15 @@ const PLAYER_ACCELERATION_X_CHANGE : f32 = 0.06;
struct GameObject { struct GameObject {
x: f32, pub x: f32,
y: f32, pub y: f32,
pub dx: f32,
pub dy: f32,
pub gravity: f32,
pub on_ground: bool,
graphics: Box<GraphicsComponent + 'static> graphics: Box<GraphicsComponent + 'static>
} }
@@ -54,18 +61,30 @@ impl GameObject {
GameObject { GameObject {
x: x, x: x,
y: y, y: y,
dx: 0.0,
dy: 0.0,
gravity: 0.3,
on_ground: false,
graphics: graphics graphics: graphics
} }
} }
pub fn update(&self, renderer: &Renderer) { pub fn update(&self, elapsed: u64) {
self.graphics.update(self, renderer); self.graphics.update(self, elapsed);
}
pub fn render(&self, renderer: &Renderer) {
self.graphics.render(self, renderer);
} }
} }
trait GraphicsComponent { trait GraphicsComponent {
fn update(&self, &GameObject, &Renderer); fn update(&self, &GameObject, u64);
fn render(&self, &GameObject, &Renderer);
} }
@@ -82,7 +101,11 @@ impl<'a> PlayerGraphicsComponent<'a> {
} }
impl<'a> GraphicsComponent for PlayerGraphicsComponent<'a> { impl<'a> GraphicsComponent for PlayerGraphicsComponent<'a> {
fn update(&self, object: &GameObject, renderer: &Renderer) { fn update(&self, object: &GameObject, elapsed: u64) {
}
fn render(&self, object: &GameObject, renderer: &Renderer) {
println!("epic shit!"); println!("epic shit!");
} }
} }
@@ -113,8 +136,8 @@ fn main() {
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 _player = GameObject::new(390.0, 390.0, Box::new(PlayerGraphicsComponent::new(&player_sprites))); // new shit!
//_player.update(&renderer); // let _player = GameObject::new(390.0, 390.0, Box::new(PlayerGraphicsComponent::new(&player_sprites)));
let mut player_sprite = AnimatedSprite::new(&player_sprites, 96, 32, 3, 15); let mut player_sprite = AnimatedSprite::new(&player_sprites, 96, 32, 3, 15);
@@ -491,6 +514,9 @@ 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());
// new shit!
// _player.render(&renderer);
player_sprite.render(&mut renderer, &player_rect); player_sprite.render(&mut renderer, &player_rect);
renderer.present(); renderer.present();