diff options
Diffstat (limited to 'src/tile.rs')
-rw-r--r-- | src/tile.rs | 42 |
1 files changed, 8 insertions, 34 deletions
diff --git a/src/tile.rs b/src/tile.rs index b00f55e..13d095f 100644 --- a/src/tile.rs +++ b/src/tile.rs @@ -1,52 +1,33 @@ use ggez::graphics::spritebatch::SpriteBatch; use ggez::nalgebra::Point2; -use crate::animations::{convert_angle_to_rad, flip, Animation, Frame}; +use crate::animations::Animation; use crate::constants; use crate::entity::Operable; use crate::tileset::Tileset; #[derive(Debug, Clone)] -pub struct Tile { +pub struct Cell { pub id: usize, pub animation: Animation, pub destination: Point2<f32>, } -impl Operable for Tile { +impl Operable for Cell { fn update(&mut self) { self.animation.update(); } fn draw(&self, spritebatch: &mut SpriteBatch) { self.animation.draw(spritebatch, self.destination); - /* - DrawParam::default() - .src(self.animation.current.source) - .dest(self.destination) - .offset(Point2::new(0.5, 0.5)) - //.rotation(self.rotation) - .scale(Vector2::new(constants::TILE_SCALE, constants::TILE_SCALE)), - ); - */ } } -impl Tile { - pub fn new(text: &str, i: usize, tileset: &Tileset, width: usize, height: usize) -> Tile { +impl Cell { + pub fn new(text: &str, i: usize, tileset: &Tileset, dimensions: (usize, usize)) -> Cell { let id = text.parse::<usize>().unwrap(); /* - let flip_d = (id & constants::FLIP_DIAGONAL_FLAG) == constants::FLIP_DIAGONAL_FLAG; - let flip_h = (id & constants::FLIP_HORIZONTAL_FLAG) == constants::FLIP_HORIZONTAL_FLAG; - let flip_v = (id & constants::FLIP_VERTICAL_FLAG) == constants::FLIP_VERTICAL_FLAG; - - let id = if flip_h | flip_v | flip_d { - id & !constants::ALL_FLIP_FLAGS - } else { - id - }; - let (source, rotation) = match (flip_d, flip_h, flip_v) { (true, true, true) => (flip(tileset.get(id)), convert_angle_to_rad(90.0)), (true, true, false) => (tileset.get(id), convert_angle_to_rad(90.0)), @@ -60,8 +41,8 @@ impl Tile { }; */ - let x = i as f32 % width as f32; - let y = (i as f32 / height as f32).floor(); + let x = i as f32 % dimensions.0 as f32; + let y = (i as f32 / dimensions.1 as f32).floor(); //let offset = (constants::TILE_WIDTH / 2.0) * constants::TILE_SCALE; let destination = Point2::new( @@ -69,14 +50,7 @@ impl Tile { constants::TILE_HEIGHT * constants::TILE_SCALE * y, //+ offset, ); - //let mut animation = Animation::new(Frame::new(source, None, rotation)); - /* - let frame = tileset.get_frame(id); - let mut animation = Animation::default(); - animation.give_frames(tileset.get_frames(id)); - */ - - Tile { + Cell { id, animation: tileset.get_animation(id), destination, |