diff options
Diffstat (limited to 'light-client/src/render/mod.rs')
-rw-r--r-- | light-client/src/render/mod.rs | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/light-client/src/render/mod.rs b/light-client/src/render/mod.rs index fbf3d7a5..a410da6f 100644 --- a/light-client/src/render/mod.rs +++ b/light-client/src/render/mod.rs @@ -15,6 +15,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +pub mod misc; pub mod sprite; use hurrycurry_protocol::glam::Vec2; @@ -24,11 +25,11 @@ use sdl2::{ render::{BlendMode, Canvas, Texture, TextureAccess, TextureCreator}, video::{Window, WindowContext}, }; -use sprite::{Sprite, SpriteDraw}; +use sprite::SpriteDraw; use std::collections::HashMap; pub struct SpriteRenderer<'a> { - metadata: HashMap<String, Rect>, + metadata: AtlasLayout, texture: Texture<'a>, @@ -38,6 +39,8 @@ pub struct SpriteRenderer<'a> { sprites: Vec<SpriteDraw>, } +pub type AtlasLayout = HashMap<String, Rect>; + impl<'a> SpriteRenderer<'a> { pub fn init(texture_creator: &'a TextureCreator<WindowContext>) -> Self { let palette = include_str!("../../assets/palette.csv") @@ -108,7 +111,7 @@ impl<'a> SpriteRenderer<'a> { } #[inline] - pub fn metadata(&self) -> &HashMap<String, Rect> { + pub fn atlas_layout(&self) -> &HashMap<String, Rect> { &self.metadata } @@ -122,6 +125,7 @@ impl<'a> SpriteRenderer<'a> { pub fn draw_world(&mut self, sprite: SpriteDraw) { self.sprites.push(SpriteDraw { + tint: sprite.tint, z_order: sprite.z_order, src: sprite.src, dst: FRect::new( @@ -135,24 +139,10 @@ impl<'a> SpriteRenderer<'a> { pub fn submit(&mut self, canvas: &mut Canvas<Window>) { self.sprites.sort(); - for SpriteDraw { src, dst, .. } in self.sprites.drain(..) { + for SpriteDraw { src, dst, tint, .. } in self.sprites.drain(..) { + self.texture.set_color_mod(tint[0], tint[1], tint[2]); + self.texture.set_alpha_mod(tint[3]); canvas.copy_f(&self.texture, src, dst).unwrap(); } } } - -pub struct MiscTextures { - pub player: Sprite, -} - -impl MiscTextures { - pub fn init(renderer: &SpriteRenderer) -> Self { - MiscTextures { - player: Sprite::new( - *renderer.metadata().get("player+a").unwrap(), - Vec2::Y * 0.3, - 0., - ), - } - } -} |