diff options
Diffstat (limited to 'light-client/src/game.rs')
-rw-r--r-- | light-client/src/game.rs | 33 |
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), + )) + } } } |