diff options
author | BigBrotherNii <nicochr1004@gmail.com> | 2024-07-16 20:06:41 +0200 |
---|---|---|
committer | BigBrotherNii <nicochr1004@gmail.com> | 2024-07-16 20:06:41 +0200 |
commit | fb30f4d264863291aaa879fb6f0908d54f346b00 (patch) | |
tree | cc28dc41676988e6f83dcafb84aa207206b4a312 /light-client/src/render/mod.rs | |
parent | cceabfdfe7890ab03b0b07a445af34ec9a302366 (diff) | |
parent | 0ce6279d355d3d0311b7a3f5fbcb22a305bb0278 (diff) | |
download | hurrycurry-fb30f4d264863291aaa879fb6f0908d54f346b00.tar hurrycurry-fb30f4d264863291aaa879fb6f0908d54f346b00.tar.bz2 hurrycurry-fb30f4d264863291aaa879fb6f0908d54f346b00.tar.zst |
post merge textures
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., - ), - } - } -} |