diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2018-06-12 22:19:54 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2018-06-12 22:19:54 +0200 |
commit | 6d8852b83e8498fe220bd67a3f645146518443b3 (patch) | |
tree | 7b0fc75bc875647cc9b1d44cead6f4f7d17e356e | |
parent | cee4589ff116394b94643b37e251c2be67fe369c (diff) |
Made animated pug
-rw-r--r-- | src/entities/home.rs | 29 | ||||
-rw-r--r-- | src/main.rs | 3 | ||||
-rw-r--r-- | src_assets/sprites/Sleepypug1.png | bin | 0 -> 143576 bytes | |||
-rw-r--r-- | src_assets/sprites/Sleepypug2.png | bin | 0 -> 139570 bytes | |||
-rw-r--r-- | src_assets/sprites/Sleepypug3.png | bin | 0 -> 143608 bytes | |||
-rw-r--r-- | src_assets/sprites/Sleepypug4.png | bin | 0 -> 143590 bytes |
6 files changed, 28 insertions, 4 deletions
diff --git a/src/entities/home.rs b/src/entities/home.rs index 6f7f53d..2839f5d 100644 --- a/src/entities/home.rs +++ b/src/entities/home.rs @@ -1,9 +1,12 @@ use geometry::*; use hitbox::*; +use asset_id::*; -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct Home { - pub pos: Vec2d + pub pos: Vec2d, + pub animation_time: f64, + pub sprite: SpriteId } impl Home { @@ -12,9 +15,29 @@ impl Home { pos: Vec2d { x: x, y: y - } + }, + animation_time: 0., + sprite: SpriteId::Sleepypug1 } } + + pub fn advance(&mut self, seconds: f64) { + let scale = 0.5; + self.animation_time = (self.animation_time + scale * seconds).fract(); + self.sprite = if self.animation_time < 0.3 { + SpriteId::Sleepypug1 + } else if self.animation_time < 0.4 { + SpriteId::Sleepypug2 + } else if self.animation_time < 0.5 { + SpriteId::Sleepypug3 + } else if self.animation_time < 0.8 { + SpriteId::Sleepypug4 + } else if self.animation_time < 0.9 { + SpriteId::Sleepypug3 + } else { + SpriteId::Sleepypug2 + } ; + } } impl CircleHitbox for Home { diff --git a/src/main.rs b/src/main.rs index c98c80e..88f0a2c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -50,6 +50,7 @@ impl App<AssetId> for BugBasherGame { self.lives -= 1; } } + self.home.advance(seconds); if self.lives <= 0 { self.game_over = true; } @@ -111,7 +112,7 @@ impl App<AssetId> for BugBasherGame { let mut renderer = renderer.sprite_mode(); renderer.draw( &Affine::translate(self.home.pos.x, self.home.pos.y), - SpriteId::Home + self.home.sprite ); for bug in &self.bugs { renderer.draw( diff --git a/src_assets/sprites/Sleepypug1.png b/src_assets/sprites/Sleepypug1.png Binary files differnew file mode 100644 index 0000000..00d275a --- /dev/null +++ b/src_assets/sprites/Sleepypug1.png diff --git a/src_assets/sprites/Sleepypug2.png b/src_assets/sprites/Sleepypug2.png Binary files differnew file mode 100644 index 0000000..134b494 --- /dev/null +++ b/src_assets/sprites/Sleepypug2.png diff --git a/src_assets/sprites/Sleepypug3.png b/src_assets/sprites/Sleepypug3.png Binary files differnew file mode 100644 index 0000000..579e617 --- /dev/null +++ b/src_assets/sprites/Sleepypug3.png diff --git a/src_assets/sprites/Sleepypug4.png b/src_assets/sprites/Sleepypug4.png Binary files differnew file mode 100644 index 0000000..6bb2c5d --- /dev/null +++ b/src_assets/sprites/Sleepypug4.png |