diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-16 18:05:29 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-16 18:05:29 +0200 |
commit | 511199443a419f549aeb500d7b013baef10152de (patch) | |
tree | 10fb8dd4b9166e57d95ad0d31a1a45734745ebd0 /light-client/src/tilemap.rs | |
parent | 9dfc5afb299ed74b277735bcf06f47b52f68caee (diff) | |
download | hurrycurry-511199443a419f549aeb500d7b013baef10152de.tar hurrycurry-511199443a419f549aeb500d7b013baef10152de.tar.bz2 hurrycurry-511199443a419f549aeb500d7b013baef10152de.tar.zst |
refactor renderer again
Diffstat (limited to 'light-client/src/tilemap.rs')
-rw-r--r-- | light-client/src/tilemap.rs | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/light-client/src/tilemap.rs b/light-client/src/tilemap.rs index e84db8b1..cf8c5eef 100644 --- a/light-client/src/tilemap.rs +++ b/light-client/src/tilemap.rs @@ -15,15 +15,19 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -use crate::sprite_renderer::SpriteRenderer; use hurrycurry_protocol::{glam::IVec2, TileIndex}; -use sdl2::rect::{FRect, Rect}; +use sdl2::rect::Rect; use std::collections::HashMap; +use crate::render::{ + sprite::{Sprite, SpriteDraw}, + SpriteRenderer, +}; + #[derive(Default)] pub struct Tilemap { tile_srcs: Vec<[Rect; 16]>, - tiles: HashMap<IVec2, (Rect, FRect)>, + tiles: HashMap<IVec2, SpriteDraw>, } impl Tilemap { @@ -72,23 +76,13 @@ impl Tilemap { idx |= 0b0010 * (Some(tile) == neighbors[3]) as usize; let src = self.tile_srcs[tile.0][idx]; - self.tiles.insert( - pos, - ( - src, - FRect::new( - pos.x as f32, - pos.y as f32 + 1. - src.height() as f32 / 24., - src.width() as f32 / 32., - src.height() as f32 / 24., - ), - ), - ); + self.tiles + .insert(pos, Sprite::new_tile(src).at(pos.as_vec2() + 0.5)); } pub fn draw(&self, ctx: &mut SpriteRenderer) { - for &(src, dst) in self.tiles.values() { - ctx.draw(dst.y + dst.h, src, dst); + for &sprite in self.tiles.values() { + ctx.draw_world(sprite); } } } |