summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2018-06-12 22:19:54 +0200
committerJustin Worthe <justin@worthe-it.co.za>2018-06-12 22:19:54 +0200
commit6d8852b83e8498fe220bd67a3f645146518443b3 (patch)
tree7b0fc75bc875647cc9b1d44cead6f4f7d17e356e
parentcee4589ff116394b94643b37e251c2be67fe369c (diff)
Made animated pug
-rw-r--r--src/entities/home.rs29
-rw-r--r--src/main.rs3
-rw-r--r--src_assets/sprites/Sleepypug1.pngbin0 -> 143576 bytes
-rw-r--r--src_assets/sprites/Sleepypug2.pngbin0 -> 139570 bytes
-rw-r--r--src_assets/sprites/Sleepypug3.pngbin0 -> 143608 bytes
-rw-r--r--src_assets/sprites/Sleepypug4.pngbin0 -> 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
new file mode 100644
index 0000000..00d275a
--- /dev/null
+++ b/src_assets/sprites/Sleepypug1.png
Binary files differ
diff --git a/src_assets/sprites/Sleepypug2.png b/src_assets/sprites/Sleepypug2.png
new file mode 100644
index 0000000..134b494
--- /dev/null
+++ b/src_assets/sprites/Sleepypug2.png
Binary files differ
diff --git a/src_assets/sprites/Sleepypug3.png b/src_assets/sprites/Sleepypug3.png
new file mode 100644
index 0000000..579e617
--- /dev/null
+++ b/src_assets/sprites/Sleepypug3.png
Binary files differ
diff --git a/src_assets/sprites/Sleepypug4.png b/src_assets/sprites/Sleepypug4.png
new file mode 100644
index 0000000..6bb2c5d
--- /dev/null
+++ b/src_assets/sprites/Sleepypug4.png
Binary files differ