aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/render/mod.rs
diff options
context:
space:
mode:
authorBigBrotherNii <nicochr1004@gmail.com>2024-07-16 20:06:41 +0200
committerBigBrotherNii <nicochr1004@gmail.com>2024-07-16 20:06:41 +0200
commitfb30f4d264863291aaa879fb6f0908d54f346b00 (patch)
treecc28dc41676988e6f83dcafb84aa207206b4a312 /light-client/src/render/mod.rs
parentcceabfdfe7890ab03b0b07a445af34ec9a302366 (diff)
parent0ce6279d355d3d0311b7a3f5fbcb22a305bb0278 (diff)
downloadhurrycurry-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.rs30
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.,
- ),
- }
- }
-}