From 9926aa177c606c4b1751e4cd7cdb0a26caa32f07 Mon Sep 17 00:00:00 2001 From: logaritmisk Date: Wed, 8 Jun 2016 00:14:58 +0200 Subject: [PATCH] Move player components to separate mod. --- src/main.rs | 54 +++------------------------------------ src/player_components.rs | 55 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 51 deletions(-) create mode 100644 src/player_components.rs diff --git a/src/main.rs b/src/main.rs index 61d714a..1fd678a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,21 +3,19 @@ extern crate sdl2; extern crate sdl2_image; use std::path::Path; -use std::cell::{Cell, RefCell}; use sdl2_image::LoadTexture; use sdl2::rect::Rect; use sdl2::keyboard::Keycode; use sdl2::pixels::Color; -use sdl2::render::{Renderer, Texture}; use tile::Layer; use camera::Camera; use keyboard::KeyboardHandler; -use sprite::{Sprite, StaticSprite, AnimatedSprite}; +use sprite::{Sprite, StaticSprite}; use timer::Timer; use game_object::GameObject; -use component::{Updatable, Renderable}; +use player_components::{PlayerPhysicsComponent, PlayerGraphicsComponent}; mod timer; mod tile; @@ -26,6 +24,7 @@ mod keyboard; mod sprite; mod game_object; mod component; +mod player_components; const SCREEN_WIDTH : u32 = 960; const SCREEN_HEIGHT : u32 = 640; @@ -42,53 +41,6 @@ const PLAYER_ACCELERATION_X_START : f32 = 0.02; const PLAYER_ACCELERATION_X_STOP : f32 = 0.15; const PLAYER_ACCELERATION_X_CHANGE : f32 = 0.06; -struct PlayerPhysicsComponent; - -impl Updatable for PlayerPhysicsComponent { - fn update(&self, _: &GameObject) { - } -} - -struct PlayerGraphicsComponent<'a> { - flip_horizontal: Cell, - sprite_standing: RefCell>, - sprite_running: RefCell> -} - -impl<'a> PlayerGraphicsComponent<'a> { - pub fn new(texture: &'a Texture) -> PlayerGraphicsComponent<'a> { - PlayerGraphicsComponent { - flip_horizontal: Cell::new(false), - sprite_standing: RefCell::new(StaticSprite::new(&texture, 80, 32)), - sprite_running: RefCell::new(AnimatedSprite::new(&texture, 96, 32, 3, 10.0)) - } - } -} - -impl<'a> Renderable for PlayerGraphicsComponent<'a> { - fn render(&self, object: &GameObject, elapsed: f64, renderer: &mut Renderer, destination: &Rect) { - if object.dx == 0.0 { - let mut sprite = self.sprite_standing.borrow_mut(); - - sprite.flip_horizontal = self.flip_horizontal.get(); - - sprite.render(elapsed, renderer, destination); - } else { - let mut sprite = self.sprite_running.borrow_mut(); - - if object.dx < 0.0 { - sprite.flip_horizontal = true; - self.flip_horizontal.set(true); - } else if object.dx > 0.0 { - sprite.flip_horizontal = false; - self.flip_horizontal.set(false); - } - - sprite.render(elapsed, renderer, destination); - }; - } -} - #[derive(Clone)] enum Tile<'a> { Empty, diff --git a/src/player_components.rs b/src/player_components.rs new file mode 100644 index 0000000..7e28aec --- /dev/null +++ b/src/player_components.rs @@ -0,0 +1,55 @@ +use std::cell::{Cell, RefCell}; + +use sdl2::rect::Rect; +use sdl2::render::{Renderer, Texture}; + +use sprite::{Sprite, StaticSprite, AnimatedSprite}; +use game_object::GameObject; +use component::{Updatable, Renderable}; + +pub struct PlayerPhysicsComponent; + +impl Updatable for PlayerPhysicsComponent { + fn update(&self, _: &GameObject) { + } +} + +pub struct PlayerGraphicsComponent<'a> { + flip_horizontal: Cell, + sprite_standing: RefCell>, + sprite_running: RefCell> +} + +impl<'a> PlayerGraphicsComponent<'a> { + pub fn new(texture: &'a Texture) -> PlayerGraphicsComponent<'a> { + PlayerGraphicsComponent { + flip_horizontal: Cell::new(false), + sprite_standing: RefCell::new(StaticSprite::new(&texture, 80, 32)), + sprite_running: RefCell::new(AnimatedSprite::new(&texture, 96, 32, 3, 10.0)) + } + } +} + +impl<'a> Renderable for PlayerGraphicsComponent<'a> { + fn render(&self, object: &GameObject, elapsed: f64, renderer: &mut Renderer, destination: &Rect) { + if object.dx == 0.0 { + let mut sprite = self.sprite_standing.borrow_mut(); + + sprite.flip_horizontal = self.flip_horizontal.get(); + + sprite.render(elapsed, renderer, destination); + } else { + let mut sprite = self.sprite_running.borrow_mut(); + + if object.dx < 0.0 { + sprite.flip_horizontal = true; + self.flip_horizontal.set(true); + } else if object.dx > 0.0 { + sprite.flip_horizontal = false; + self.flip_horizontal.set(false); + } + + sprite.render(elapsed, renderer, destination); + }; + } +}