aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/game.rs
diff options
context:
space:
mode:
Diffstat (limited to 'light-client/src/game.rs')
-rw-r--r--light-client/src/game.rs33
1 files changed, 28 insertions, 5 deletions
diff --git a/light-client/src/game.rs b/light-client/src/game.rs
index 1425a3f8..13e50a2e 100644
--- a/light-client/src/game.rs
+++ b/light-client/src/game.rs
@@ -16,7 +16,11 @@
*/
use crate::{
- render::{misc::MiscTextures, sprite::Sprite, AtlasLayout, SpriteRenderer},
+ render::{
+ misc::MiscTextures,
+ sprite::{Sprite, SpriteDraw},
+ AtlasLayout, SpriteRenderer,
+ },
tilemap::Tilemap,
};
use hurrycurry_protocol::{
@@ -297,19 +301,38 @@ impl Game {
for p in self.players.values() {
ctx.draw_world(self.misc_textures.player.at(p.movement.position));
if let Some(item) = &p.item {
- item.draw(ctx, &self.item_sprites)
+ item.draw(ctx, &self.item_sprites, &self.misc_textures)
}
}
for tile in self.tiles.values() {
if let Some(item) = &tile.item {
- item.draw(ctx, &self.item_sprites)
+ item.draw(ctx, &self.item_sprites, &self.misc_textures)
}
}
}
}
impl Item {
- pub fn draw(&self, ctx: &mut SpriteRenderer, item_sprites: &[Sprite]) {
- ctx.draw_world(item_sprites[self.kind.0].at(self.position))
+ pub fn draw(&self, ctx: &mut SpriteRenderer, item_sprites: &[Sprite], misc: &MiscTextures) {
+ ctx.draw_world(item_sprites[self.kind.0].at(self.position));
+ if let Some((progress, warn)) = self.progress {
+ let (bg, fg) = if warn {
+ ([100, 0, 0, 200], [255, 0, 0, 200])
+ } else {
+ ([0, 100, 0, 200], [0, 255, 0, 200])
+ };
+ ctx.draw_world(SpriteDraw::overlay(
+ misc.solid,
+ self.position + Vec2::new(-0.5, -1.3),
+ Vec2::new(1., 0.2),
+ Some(bg),
+ ));
+ ctx.draw_world(SpriteDraw::overlay(
+ misc.solid,
+ self.position + Vec2::new(-0.5, -1.3),
+ Vec2::new(progress, 0.2),
+ Some(fg),
+ ))
+ }
}
}