From 39ea81bea4a61baf8c95a33bcc979b0e65ce660e Mon Sep 17 00:00:00 2001 From: tom barrett Date: Fri, 28 Jun 2019 08:37:07 -0500 Subject: unified interfaces --- src/tile.rs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'src/tile.rs') diff --git a/src/tile.rs b/src/tile.rs index cb2aa83..a367592 100644 --- a/src/tile.rs +++ b/src/tile.rs @@ -3,12 +3,12 @@ use ggez::nalgebra::{Point2, Vector2}; use std::time::Instant; use crate::constants; -use crate::math::convert_angle_to_rad; +use crate::math::{convert_angle_to_rad, next_source}; use crate::tileset::Tileset; pub struct Tile { source: Rect, - animations: Option>, + animation: Option>, timer: Instant, destination: Point2, rotation: f32, @@ -51,7 +51,7 @@ impl Tile { Tile { source, - animations: tileset.get_animations(id), + animation: tileset.get_animation(id), timer: Instant::now(), destination, rotation, @@ -66,15 +66,9 @@ impl Tile { } pub fn update(&mut self) { - if let Some(animations) = &self.animations { - if let Some(mut i) = animations.iter().position(|a| a.1 == self.source) { - if self.timer.elapsed().as_millis() > animations[i].0 as u128 { - i = if i == animations.len() - 1 { 0 } else { i + 1 }; - self.source = animations[i].1; - self.timer = Instant::now() - } - } - } + let (source, timer) = next_source(self.source, &self.animation, self.timer); + self.source = source; + self.timer = timer; } pub fn draw(&self, spritebatch: &mut SpriteBatch) { -- cgit v1.2.3